数据概括性度量:python求众数、中位数、分位数、平均数
import pandas as pd
#众数
#方法一
df = pd.read_excel("./data/例4.3.xlsx")
data = df['月收入']
print('使用方法一,众数为:',data.mode().iloc[0]) #先取众数,iloc取行号(第一行)
#方法二
from collections import Counter
counts = Counter(data)
# most_common(1) ---> [(1),(2),(3),(4)] 列表里包含元组
# most_common(1)[0] ---> (1) 将列表第一个元组取出来
# most_common(1)[0][0] ---> 元组取第一个数据
print('使用方法二,众数为:',counts.most_common(1)[0][0])
#方法三
from scipy import stats
mode_num = stats.mode(data)
print("使用方法三,众数为:%d, 众数的个数为:%d,"%(mode_num[0][0], mode_num[1][0]))
#方法四
import numpy as np
# bin的数量比x中的最大值大1,每个bin给出了它的索引值在x中出现的次数
# 我们可以看到x中最大的数为7,因此bin的数量为8,那么它的索引值为0->7
# x = np.array([0, 1, 1, 3, 2, 1, 7])
# 索引0出现了1次,索引1出现了3次,索引2出现1次,索引3出现1次,索引4出现0次,索引5出现了0次...索引7出现1次
# np.bincount(x)
# 因此,输出结果为:array([1, 3, 1, 1, 0, 0, 0, 1])
counts = np.bincount(data)
print(counts)
print('使用方法四,众数为:',np.argmax(counts))
#中位数
#方法一
print('使用方法一,中位数为:' ,data.median())
#方法二
print('使用方法二,中位数为:' ,np.percentile(data, 50))
#方法三
# quantile的优点是与pandas中的groupby结合使用,可以分组之后取每个组的某分位数
print('使用方法三,中位数为:', data.quantile(0.50))
#分位数
#方法一
print('使用方法一,下四位数为:',np.percentile(data, 25))
print('使用方法一,上四位数为:',np.percentile(data, 75))
#方法二
print('下四分位数为:', data.quantile(0.25))
print('上四分位数为:', data.quantile(0.75))
#算数平均数
print('平均数为:',data.mean())
#几何平均数
import math
s = 1
for i in data:
s *= i
print('几何平均数为:',math.pow(s,1/len(data)))
#异众比率
modeCount = Counter(data).most_common(1)[0][1]
totalCount = len(data)
radio = (totalCount - modeCount) / len(data)
print('异众比率为:',radio)
#四分位差
# 法一
print('四分位差为:', np.percentile(data, 75) - np.percentile(data, 25))
# 法二
print('四分位差为:', data.quantile(0.75) - data.quantile(0.25))
# 极差
print('极差为:', data.max() - data.min())
# 平均差
meanData = data.mean()
s = 0
for i in data:
s += (abs(i - meanData))
print('平均差为:', s/len(data))
# 方差
print('方差为:', np.var(data))
# 标准差
print('标准差为:', np.std(data))
#偏度
print('偏度为:', stats.skew(data))
#峰度
print('峰度为:', stats.kurtosis(data))
[参考文档]https://mp.weixin.qq.com/s/VVi1DFsypcvXCpyJP_rD5Q
https://blog.csdn.net/qq_43315928/article/details/102151709
https://blog.csdn.net/xlinsist/article/details/51346523