•本文字数:约1300字•阅读时长:约5分钟•难度:2颗星
集中趋势:
平均数(算数平均数、几何平均数、调和平均数)、众数、中位数等。
平均值: 指在一组数据中所有数据之和再除以数据的个数。
中位数:按顺序排列的一组数据中居于中间位置的数,即在这组数据中,有一半的数据比他大,有一半的数据比他小。
众数:在一组数据中,出现次数最多的数据;是样本观测值在频数表中频数最多的那一组的组中值。
四分位数:是指根据中位数分为2个部分后,再取每个部分的中位数。
模块导入
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inlineimport seaborn as snssns.set_style("darkgrid")plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题sns.set(font='SimHei',font_scale=1.5) # 解决Seaborn中文显示问题并调整字体大小
算数平均数
# 创建数据data = pd.DataFrame({'value':np.random.randint(100,120,100), 'f':np.random.rand(100)})data['f'] = data['f'] / data['f'].sum() # f为权重,这里将f列设置成总和为1的权重占比print(data.head())print('------')# 简单算数平均值 = 总和 / 样本数量 (不涉及权重)mean = data['value'].mean()print('简单算数平均值为:%.2f' % mean)# 加权算数平均值 = (x1f1 + x2f2 + ... + xnfn) / (f1 + f2 + ... + fn)mean_w = (data['value'] * data['f']).sum() / data['f'].sum()print('加权算数平均值为:%.2f' % mean_w)
value f
0 105 0.013713
1 102 0.014311
2 107 0.005183
3 100 0.017619
4 116 0.019326
------
简单算数平均值为:108.82
加权算数平均值为:109.11
位置平均数
# 众数是一组数据中出现次数最多的数,这里可能返回多个值m = data['value'].mode()print('众数为',m.tolist())# 中位数指将总体各单位标志按照大小顺序排列后,中间位置的数字med = data['value'].median()print('中位数为%i' % med)# 密度曲线data['value'].plot(kind = 'kde',style = '--k',grid = True)# 简单算数平均值plt.axvline(mean,color='r',linestyle="--",alpha=0.8) plt.text(mean + 5,0.005,'简单算数平均值为:%.2f' % mean, color = 'r')# 加权算数平均值plt.axvline(mean_w,color='b',linestyle="--",alpha=0.8) plt.text(mean + 5,0.01,'加权算数平均值:%.2f' % mean_w, color = 'b')# 中位数# **这里三个数text显示的横坐标一致,目的是图示效果不拥挤plt.axvline(med,color='g',linestyle="--",alpha=0.8) plt.text(mean + 5,0.015,'中位数:%i' % med, color = 'g')
众数为 [100, 108]
中位数为108
百分位数
#分位数 法一 (np.percentile)q1=np.percentile(data['value'],25) #四分位q2=np.percentile(data['value'],95) #95%位数print('上四分位数:%s'%q1)print('95分位数:%s'%q2)#分位数 法二 (df.quantile)df=pd.Series(data['value'])print('下四分位数:%s'%(df.quantile(.75)))data['value'].plot.box(grid = True,color = color,figsize = (10,3))
上四分位数:104.0
95分位数:118.0
下四分位数:113.25
今天就先到这啦,早点休息哦~
加油,坚持就是胜利,学完你就是个宝藏女(男)孩啦~
一起学习的小伙伴如果有什么想法或者意见,欢迎沟通~
投稿|沟通邮箱:yzhmry1314@163.com