有很多方法用來(lái)集體計(jì)算DataFrame的描述性統(tǒng)計(jì)信息和其他相關(guān)操作。 其中大多數(shù)是sum(),mean()等聚合函數(shù),但其中一些,如sumsum(),產(chǎn)生一個(gè)相同大小的對(duì)象。 一般來(lái)說(shuō),這些方法采用軸參數(shù),就像ndarray.{sum,std,...},但軸可以通過(guò)名稱或整數(shù)來(lái)指定:
下面創(chuàng)建一個(gè)數(shù)據(jù)幀(DataFrame),并使用此對(duì)象進(jìn)行演示本章中所有操作。
示例
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
#Create a DataFrame
df = pd.DataFrame(d)
print df
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Minsu 4.60
6 23 Jack 3.80
7 34 Lee 3.78
8 40 David 2.98
9 30 Gasper 4.80
10 51 Betina 4.10
11 46 Andres 3.65
sum()方法
返回所請(qǐng)求軸的值的總和。 默認(rèn)情況下,軸為索引(axis=0)。
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
#Create a DataFrame
df = pd.DataFrame(d)
print df.sum()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Age 382
Name TomJamesRickyVinSteveMinsuJackLeeDavidGasperBe...
Rating 44.92
dtype: object
每個(gè)單獨(dú)的列單獨(dú)添加(附加字符串)。
axis=1示例
此語(yǔ)法將給出如下所示的輸出,參考以下示例代碼 -
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
#Create a DataFrame
df = pd.DataFrame(d)
print df.sum(1)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
0 29.23
1 29.24
2 28.98
3 25.56
4 33.20
5 33.60
6 26.80
7 37.78
8 42.98
9 34.80
10 55.10
11 49.65
dtype: float64
mean()示例
返回平均值,參考以下示例代碼 -
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
#Create a DataFrame
df = pd.DataFrame(d)
print df.mean()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Age 31.833333
Rating 3.743333
dtype: float64
std()示例
返回?cái)?shù)字列的Bressel標(biāo)準(zhǔn)偏差。
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
#Create a DataFrame
df = pd.DataFrame(d)
print df.std()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Age 9.232682
Rating 0.661628
dtype: float64
下面來(lái)了解Python Pandas中描述性統(tǒng)計(jì)信息的函數(shù),下表列出了重要函數(shù) -
| 編號(hào) | 函數(shù) | 描述 |
|---|---|---|
| 1 | count() |
非空觀測(cè)數(shù)量 |
| 2 | sum() |
所有值之和 |
| 3 | mean() |
所有值的平均值 |
| 4 | median() |
所有值的中位數(shù) |
| 5 | mode() |
值的模值 |
| 6 | std() |
值的標(biāo)準(zhǔn)偏差 |
| 7 | min() |
所有值中的最小值 |
| 8 | max() |
所有值中的最大值 |
| 9 | abs() |
絕對(duì)值 |
| 10 | prod() |
數(shù)組元素的乘積 |
| 11 | cumsum() |
累計(jì)總和 |
| 12 | cumprod() |
累計(jì)乘積 |
注 - 由于DataFrame是異構(gòu)數(shù)據(jù)結(jié)構(gòu)。通用操作不適用于所有函數(shù)。
sum(),cumsum()函數(shù)能與數(shù)字和字符(或)字符串?dāng)?shù)據(jù)元素一起工作,不會(huì)產(chǎn)生任何錯(cuò)誤。字符聚合從來(lái)都比較少被使用,雖然這些函數(shù)不會(huì)引發(fā)任何異常。abs(),cumprod()這樣的函數(shù)會(huì)拋出異常。describe()函數(shù)是用來(lái)計(jì)算有關(guān)DataFrame列的統(tǒng)計(jì)信息的摘要。
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
#Create a DataFrame
df = pd.DataFrame(d)
print df.describe()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Age Rating
count 12.000000 12.000000
mean 31.833333 3.743333
std 9.232682 0.661628
min 23.000000 2.560000
25% 25.000000 3.230000
50% 29.500000 3.790000
75% 35.500000 4.132500
max 51.000000 4.800000
該函數(shù)給出了平均值,標(biāo)準(zhǔn)差和IQR值。 而且,函數(shù)排除字符列,并給出關(guān)于數(shù)字列的摘要。 include是用于傳遞關(guān)于什么列需要考慮用于總結(jié)的必要信息的參數(shù)。獲取值列表; 默認(rèn)情況下是”數(shù)字值”。
object - 匯總字符串列number - 匯總數(shù)字列all - 將所有列匯總在一起(不應(yīng)將其作為列表值傳遞)現(xiàn)在,在程序中使用以下語(yǔ)句并檢查輸出 -
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
#Create a DataFrame
df = pd.DataFrame(d)
print df.describe(include=['object'])
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Name
count 12
unique 12
top Ricky
freq 1
現(xiàn)在,使用以下語(yǔ)句并查看輸出 -
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])}
#Create a DataFrame
df = pd.DataFrame(d)
print df. describe(include='all')
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Age Name Rating
count 12.000000 12 12.000000
unique NaN 12 NaN
top NaN Ricky NaN
freq NaN 1 NaN
mean 31.833333 NaN 3.743333
std 9.232682 NaN 0.661628
min 23.000000 NaN 2.560000
25% 25.000000 NaN 3.230000
50% 29.500000 NaN 3.790000
75% 35.500000 NaN 4.132500
max 51.000000 NaN 4.800000