Pandas描述性統計
有很多方法用來集體計算DataFrame
的描述性統計信息和其他相關操作。 其中大多數是sum()
,mean()
等聚合函數,但其中一些,如sumsum()
,產生一個相同大小的對象。 一般來說,這些方法採用軸參數,就像ndarray.{sum,std,...}
,但軸可以通過名稱或整數來指定:
- 數據幀(DataFrame) - 「index」(axis=0,默認),columns(axis=1)
下面創建一個數據幀(DataFrame),並使用此對象進行演示本章中所有操作。
示例
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
執行上面示例代碼,得到以下結果 -
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()方法
返回所請求軸的值的總和。 默認情況下,軸爲索引(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()
執行上面示例代碼,得到以下結果 -
Age 382
Name TomJamesRickyVinSteveMinsuJackLeeDavidGasperBe...
Rating 44.92
dtype: object
每個單獨的列單獨添加(附加字符串)。
axis=1示例
此語法將給出如下所示的輸出,參考以下示例代碼 -
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)
執行上面示例代碼,得到以下結果 -
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()
執行上面示例代碼,得到以下結果 -
Age 31.833333
Rating 3.743333
dtype: float64
std()示例
返回數字列的Bressel標準偏差。
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()
執行上面示例代碼,得到以下結果 -
Age 9.232682
Rating 0.661628
dtype: float64
函數和說明
下面來了解Python Pandas中描述性統計信息的函數,下表列出了重要函數 -
編號
函數
描述
1
count()
非空觀測數量
2
sum()
所有值之和
3
mean()
所有值的平均值
4
median()
所有值的中位數
5
mode()
值的模值
6
std()
值的標準偏差
7
min()
所有值中的最小值
8
max()
所有值中的最大值
9
abs()
絕對值
10
prod()
數組元素的乘積
11
cumsum()
累計總和
12
cumprod()
累計乘積
注 - 由於DataFrame是異構數據結構。通用操作不適用於所有函數。
- 類似於:
sum()
,cumsum()
函數能與數字和字符(或)字符串數據元素一起工作,不會產生任何錯誤。字符聚合從來都比較少被使用,雖然這些函數不會引發任何異常。 - 由於這樣的操作無法執行,因此,當DataFrame包含字符或字符串數據時,像
abs()
,cumprod()
這樣的函數會拋出異常。
彙總數據
describe()
函數是用來計算有關DataFrame列的統計信息的摘要。
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()
執行上面示例代碼,得到以下結果 -
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
該函數給出了平均值,標準差和IQR值。 而且,函數排除字符列,並給出關於數字列的摘要。 include
是用於傳遞關於什麼列需要考慮用於總結的必要信息的參數。獲取值列表; 默認情況下是」數字值」。
-
object
- 彙總字符串列 -
number
- 彙總數字列 -
all
- 將所有列彙總在一起(不應將其作爲列表值傳遞)
現在,在程序中使用以下語句並檢查輸出 -
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'])
執行上面示例代碼,得到以下結果 -
Name
count 12
unique 12
top Ricky
freq 1
現在,使用以下語句並查看輸出 -
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')
執行上面示例代碼,得到以下結果 -
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