Pandas 統計描述操作
1. 前言
上一節我們學習了 Pandas 庫的分組聚合操作,通過聚合函數對分組后的數據集進行了描述性的統計分析,對于各組數據的分析起到了很好的幫助作用,那 Pandas 庫中除了上節我們講到的一些聚合分析函數,還有哪些實用性較高的統計描述操作方法呢,本節課我們將對統計描述函數展開學習。
2. 描述性統計函數
下面我們列舉了幾個常用的重要函數,上一節已經講述了 count () , sum () , mean () 函數,這里我們將不再講述:
函數名 | 說明 |
---|---|
min | 計算最小值 |
max | 計算最大值 |
cumsum | 計算累計總和 |
describe | 計算匯總統計 |
下面我們通過具體的代碼數據實例看一下各個函數的應用。
1. min() 和 max() 函數
這兩個函數分別用于計算指定數據集中的最小值和最大值,默認的 axis=0 ,按列進行計算。
# 導入pandas包
import pandas as pd
# 初始化數據
df1=pd.DataFrame([[96,92],[85,None],[69,90]],
index=[['語文','數學','英語']],
columns=[['期中考試','期末考試']])
print(df1)
# --- 輸出結果 ---
期中考試 期末考試
語文 96 92
數學 85 89
英語 69 90
# min 求數據集的最小值
df1.min()
# --- 輸出結果 ---
期中考試 69
期末考試 89
# max 求數據集的最大值
df1.max()
# --- 輸出結果 ---
期中考試 96
期末考試 92
# 結果解析:通過 min() 和 max() 函數的操作,我們可以看到求出數據集中的最大值和最小值,默認是按列計算,也可以通過參數 axis=1 設置按行計算;
# max 求數據集的最大值 axis=1
df1.max(axis=1)
# --- 輸出結果 ---
語文 96
數學 89
英語 90
2. cumsum() 函數
該函數用于計算累計數值總和,默認的 axis=0 ,按列進行計算,通過數據處理效果要區分和 sum () 函數的區別。
# 導入pandas包
import pandas as pd
# 初始化數據
df1=pd.DataFrame([[96,92,89,94],[85,89,91,90],[69,90,89,88]],
index=[['語文','數學','英語']],
columns=[['月考1','月考2','月考3','月考4']])
print(df1)
# --- 輸出結果 ---
月考1 月考2 月考3 月考4
語文 96 92 89 94
數學 85 89 91 90
英語 69 90 89 88
# cumsum 計算累計總和,默認是按列計算
df1.cumsum()
# --- 輸出結果 ---
月考1 月考2 月考3 月考4
語文 96 92 89 94
數學 181 181 180 184
英語 250 271 269 272
# sum 計算總和,默認是按列計算
df1.sum()
# --- 輸出結果 ---
月考1 250
月考2 271
月考3 269
月考4 272
# 結果解析:cumsum() 函數是累計求和,默認是在列上計算,可以看到各個月考的行數據“數學”是“語文”加“數學”成績的和,“英語”則是“語文”加“數學”加“英語”的和。而 sum() 函數則是計算每列數據的總和,對各行數據沒有影響。
3. describe() 函數
該函數用于計算一些統計數據,提供數據集的基本信息,包括范圍、大小、波動趨勢等待,用于進一步數據的分析,該函數用于計算列數據。該函數有三個核心參數:
參數名 | 說明 |
---|---|
percentile | 可選參數,要包含在輸出中的百分位數,在 0-1 之間,默認 [.25, .5, .75] |
include | 可選參數,包括的不同數據類型列表,默認只計算數值型,當為 all 時匯總的是所有列的數據;當為 object 時,匯總的是字符串列的數據;當為 number 時,匯總的是數字列的數據。 |
exclude | 可選參數,排除的數據類型列表 |
下面我們通過代碼操作數據集看一下詳細的使用方法:
# 導入pandas包
import pandas as pd
# 初始化數據
df1=pd.DataFrame([[96,92,89,94,'A級'],[85,89,91,90,'C級'],[69,90,89,88,'B級']],
index=[['語文','數學','英語']],
columns=[['月考1','月考2','月考3','月考4','表現級別']])
print(df1)
# --- 輸出結果 ---
月考1 月考2 月考3 月考4 表現級別
語文 96 92 89 94 A級
數學 85 89 91 90 C級
英語 69 90 89 88 B級
# describe 函數
df1.describe()
# --- 輸出結果 ---
月考1 月考2 月考3 月考4
count 3.000000 3.000000 2.000000 3.000000
mean 83.333333 90.333333 90.000000 90.666667
std 13.576941 1.527525 1.414214 3.055050
min 69.000000 89.000000 89.000000 88.000000
25% 77.000000 89.500000 89.500000 89.000000
50% 85.000000 90.000000 90.000000 90.000000
75% 90.500000 91.000000 90.500000 92.000000
max 96.000000 92.000000 91.000000 94.000000
# 結果解析:可以看到 describe() 函數統計分析后,默認的是只計算數值型,包含了多種分析信息,count:數據數量,mean:平均值,std:標準差,min:最小值,25%,50%,75%:對應的百分位上的分位數(計算方式為最大值減去最小值乘以對應的百分位,再加上最小值),max:最大值。這些統計項能清晰的讓我們了解一組數據集的數據情況,進而選擇合適的分析模型進行分析。
# describe 設置include=‘all’
df1.describe(include='all')
# --- 輸出結果 ---
月考1 月考2 月考3 月考4 表現級別
count 3.000000 3.000000 3.000000 3.000000 3
unique NaN NaN NaN NaN 3
top NaN NaN NaN NaN C級
freq NaN NaN NaN NaN 1
mean 83.333333 90.333333 89.666667 90.666667 NaN
std 13.576941 1.527525 1.154701 3.055050 NaN
min 69.000000 89.000000 89.000000 88.000000 NaN
25% 77.000000 89.500000 89.000000 89.000000 NaN
50% 85.000000 90.000000 89.000000 90.000000 NaN
75% 90.500000 91.000000 90.000000 92.000000 NaN
max 96.000000 92.000000 91.000000 94.000000 NaN
# 結果解析:通過設置 include='all' describe() 函數計算所有列的數據,并且針對字符串型的數據會有 unique:不同的值有多少;top:出現頻率最高的;freq:重復的次數。
# describe 排除數值列 exclude=‘number’
df1.describe(exclude='number')
# --- 輸出結果 ---
表現級別
count 3
unique 3
top C級
freq 1
# 結果解析:通過設置 exclude 排除數值列,可以看到最后的描述性統計只有字符串列的數據。
3. 小結
本節課程我們主要學習了 Pandas 庫中用于統計描述的操作函數,幫助我們便捷的對數據集進行統計分析工作,并在此基礎上開展進一步的數據分析工作。本節課程的重點如下:
- 常用的描述性統計函數使用,尤其是 describe () 函數的使用。