对于python中常用的一些描述统计量,博主已整理成函数,直接拿去用就行了。
import pandas as pd
import numpy as np
from scipy.stats import mode
def statistics(data_frame: np.ndarray):
'''
input:
values: 一维数组
'''
items = {
'数据量': len(data_frame),
'最小值': data_frame.min(),
'最大值': data_frame.max(),
'平均值': round(data_frame.mean(), 6),
'众数': mode(data_frame, keepdims=True)[0][0],
'中位数': np.median(data_frame),
'上四分位数': np.quantile(data_frame, q=0.25),
'下四分位数': np.quantile(data_frame, q=0.75),
'异众比率': round(1 - (mode(data_frame, keepdims=True)[1][0]/len(data_frame)), 6),
'极差': data_frame.max() - data_frame.min(),
'离散系数': round(data_frame.std()/(data_frame.mean() + 1e-6), 6),
'偏态系数': pd.Series(data_frame).skew(), # skew() 偏度
'峰态系数': pd.Series(data_frame).kurt() # kurt() 峰度
}
return items
if __name__ == '__main__':
data = np.array([23, 45, 6, 56, 76,37,64,56,12, 23, 23])
print(statistics(data_frame=data))
输出结果:
{'数据量': 11, '最小值': 6, '最大值': 76, '平均值': 38.272727, '众数': 23, '中位数': 37.0, '上四分位数': 23.0, '下四分位数': 56.0, '异众比率': 0.727273, '极差': 70, '离散系数': 0.567661, '偏态系数': 0.20389111241526475, '峰态系
数': -1.182571196072816}