Pandas 可以對 Series 與 DataFrame 進行快速的描述性統計,方便快速了解數據的集中趨勢和分布差異。源Excel文件descriptive_statistics.xlsx:
一、描述性統計匯總df.describe()
df.describe(percentiles=None, include=None, exclude=None)
參數說明:
- percentiles,百分位數,默認為[.25, .5, .75],即上下四分位數和中位數,其中,中位數一定輸出;
- include,控制描述性統計輸出包含的內容。
數值型和離散型特征數據(定序數據和定類數據)
默認值:None,即只輸出數值型數據列的統計信息(count、mean、std、min、百分位數、max)。
'all':輸入的所有列的統計信息。
'O':只輸出 object(字符、定類數據)的統計信息:count、unique(分類分組數量)、top(出現次數最多的類別)、freq(top出現的頻數) - exclude,和參數include是相反的,表示不輸出哪些內容。
df.describe() # 默認:數值型數據,上下四分位和中位數
df.describe([]) # 只輸出中位數
df.describe([.4]) # 中位數和40%分位數
# 指定類型:只輸出字符型離散數據統計特征
df.describe(include='O')
# df.describe(include=[np.object])
# 排除類型
df.describe(exclude=[np.number])
二、其他數學統計方法
DataFrame 計算后一般為一個 Series或df,Series 計算后為一個定值。
df.mean() # 返回所有列的均值
df.mean(1) # 返回所有行的均值,下同
df.corr() # 返回列與列之間的相關系數
df.count() # 返回每一列中的非空值的個數
df.max() # 返回每一列的最大值
df.min() # 返回每一列的最小值
df.abs() # 絕對值
df.median() # 返回每一列的中位數
df.std() # 返回每一列的標准差, 貝塞爾校正的樣本標准偏差
df.var() # 無偏方差
df.sem() # 平均值的標准誤差
df.mode() # 眾數
df.prod() # 連乘
df.mad() # 平均絕對偏差
df.cumprod() # 累積連乘,累乘
df.cumsum(axis=0) # 累積連加,累加
df.nunique() # 去重數量,不同值的量
df.idxmax() # 每列最大的值的索引名
df.idxmin() # 最小
df.cummax() # 累積最大值
df.cummin() # 累積最小值
df.skew() # 樣本偏度 (第三階)
df.kurt() # 樣本峰度 (第四階)
df.quantile() # 樣本分位數 (不同 % 的值)
特殊說明:
- 很多方法支持行列指定,默認為列axis=0;
- 是否排除缺失值,默認排除skipna=False;
- 假若索引為多層索引,支持索引層次選擇,level參數控制;
- 是否排除bool值,numeric_only,默認為False,不排除;
- 如果有空值總共算幾,min_count,默認為0,一個不算。