1 簡介
描述統計學(descriptive statistics)是一門統計學領域的學科,主要研究如何取得反映客觀現象的資料,並以圖表形式對所蒐集的資料進行處理和顯示,最終對資料的規律、特徵做出綜合性的描述分析。
下列表格對 Pandas 常用的統計學函式做了簡單的總結:
函式名稱 | 描述說明 |
---|---|
count() | 統計某個非空值的數量。 |
sum() | 求和 |
mean() | 求均值 |
median() | 求中位數 |
mode() | 求眾數 |
std() | 求標準差 |
min() | 求最小值 |
max() | 求最大值 |
abs() | 求絕對值 |
prod() | 求所有數值的乘積。 |
cumsum() | 計算累計和,axis=0,按照行累加;axis=1,按照列累加。 |
cumprod() | 計算累計積,axis=0,按照行累積;axis=1,按照列累積。 |
corr() | 計算數列或變數之間的相關係數,取值-1到1,值越大表示關聯性越強。 |
在 DataFrame 中,使用聚合類方法時需要指定軸(axis)引數。下面介紹兩種傳參方式:
-
- 對行操作,預設使用 axis=0 或者使用 "index";
- 對列操作,預設使用 axis=1 或者使用 "columns"。
從上圖可看出,axis=0 表示按垂直方向進行計算,而 axis=1 則表示按水平方向。
建立一個 DataFrame 結構,如下所示:
d = {'Name':pd.Series(['Jack','Blair','Jane','Lee']),
'Age':pd.Series([11,12,13,14]),
'Score':pd.Series([1,2,3,4])
}
df = pd.DataFrame(d)
print(df)
輸出結果:
Name Age Score
0 Jack 11 1
1 Blair 12 2
2 Jane 13 3
3 Lee 14 4
2 應用
2.1 sum()求和
在預設情況下,返回 axis=0 的所有值的和。示例1 如下:
df.sum()
輸出結果:
Name JackBlairJaneLee
Age 50
Score 10
dtype: object
注意:sum() 和 cumsum() 函式可以同時處理數字和字串資料。雖然字元聚合通常不被使用,但使用這兩個函式並不會丟擲異常;而對於 abs()、cumprod() 函式則會丟擲異常,因為它們無法操作字串資料。
示例2:
df.sum(axis= 1)#只對number資料進行處理
輸出結果:
0 12
1 14
2 16
3 18
dtype: int64
2.2 mean()求均值
示例3:
df.mean()#只對number資料進行處理
輸出結果:
Age 12.5
Score 2.5
dtype: float64
示例4:
df.mean(axis=1)#只對number資料進行處理
輸出結果:
0 6.0
1 7.0
2 8.0
3 9.0
dtype: float64
2.3 std()求標準差
返回數值列的標準差。
標準差是方差的算術平方根,它能反映一個資料集的離散程度。注意,平均數相同的兩組資料,標準差未必相同。
示例5:
df.std()
輸出結果:
Age 1.290994
Score 1.290994
dtype: float64
示例6:
df.std(axis = 1)
輸出結果:
0 7.071068
1 7.071068
2 7.071068
3 7.071068
dtype: float64
2.4 資料彙總描述
describe() 函式顯示與 DataFrame 資料列相關的統計資訊摘要。
示例7:
df.describe()
輸出結果:
Age Score
count 4.000000 4.000000
mean 12.500000 2.500000
std 1.290994 1.290994
min 11.000000 1.000000
25% 11.750000 1.750000
50% 12.500000 2.500000
75% 13.250000 3.250000
max 14.000000 4.000000
describe() 函式輸出了平均值、std 和 IQR 值(四分位距)等一系列統計資訊。通過 describe() 提供的include
能夠篩選字元列或者數字列的摘要資訊。
include 相關引數值說明如下:
- object: 表示對字元列進行統計資訊描述;
- number:表示對數字列進行統計資訊描述;
- all:彙總所有列的統計資訊。
示例8:
df.describe(include=['number'])
輸出結果:
Age Score
count 4.000000 4.000000
mean 12.500000 2.500000
std 1.290994 1.290994
min 11.000000 1.000000
25% 11.750000 1.750000
50% 12.500000 2.500000
75% 13.250000 3.250000
max 14.000000 4.000000
示例9:
df.describe(include='object')
輸出結果:
Name
count 4
unique 4
top Blair
freq 1
示例10:
df.describe(include='all')
輸出結果:
Name Age Score
count 4 4.000000 4.000000
unique 4 NaN NaN
top Blair NaN NaN
freq 1 NaN NaN
mean NaN 12.500000 2.500000
std NaN 1.290994 1.290994
min NaN 11.000000 1.000000
25% NaN 11.750000 1.750000
50% NaN 12.500000 2.500000
75% NaN 13.250000 3.250000
max NaN 14.000000 4.000000