1

17633788835

V1

2022/11/16阅读:12主题:全栈蓝

描述性统计分析

使用Python进行数据分析——描述性统计分析 描述性统计分析主要是指求一组数据的平均值、中位数、众数、极差、方差和标准差等指标,通过这些指标来发现这组数据的分布状态、数字特征等内在规律。在Python中进行描述性统计分析,可以借助Numpy、Pandas、SciPy等科学计算模块计算出指标,然后用绘图模块Matplotlib绘制出数据的分布状态和频率及频数直方图,以更直观的方式展示数据分析的结果

描述性统计指标计算:

用describe()函数可以计算出以下值,代码如下:

import pandas as pd
data= pd.read_excel('D:/shujufenxi/jjj.xlsx',index_col='序号')
data1=data.describe()
print(data1)

count:数量
mean: 平均值
std:标准差
min:最小值
25%:25%分位数,排序之后排在25%位置的数
50%:50%分位数
75%:75%分位数
max:最大值
count:数量 mean: 平均值 std:标准差 min:最小值 25%:25%分位数,排序之后排在25%位置的数 50%:50%分位数 75%:75%分位数 max:最大值

除了此函数计算范围此外,还可以计算以下值,代码演示如下:

import pandas as pd # 微信公众号:作物表型记录本
from numpy import mean,median,ptp,var,std
from scipy.stats import mode
data= pd.read_excel('D:/shujufenxi/jjj.xlsx',index_col='序号')
median=median(data['月薪(元)'])# 计算中位数
mode= mode(data['月薪(元)'])[0][0]#计算众数
ptp=ptp(data['月薪(元)'])#极差
var=var(data['月薪(元)'])#方差
std=std(data['月薪(元)'])#标准差
print('中位数:'+str(median))
print('众数:'+str(mode))
print('极差:'+str(ptp))
print('方差:'+str(var))
print('标准差:'+str(std)) # 微信公众号:作物表型记录本

数据的频数和频率分析

根据数据的分布是否对称,数据的分布状态可分为正态分布与偏态分布。偏态分布又分为正偏态分布与负偏态分布;若众数<中位数<均值则为正偏态分布;若均值<中位数<众数,则为负偏态分布;由此可见,根据上面我们所得出的结果,属于正偏态分布。 接下来引申两个概念:

  • 偏度--是指数据分布的偏斜方向和程度的度量,常用于衡量随机分布的不均衡性。如果数据对称分布,如标准正态分布,则偏度为0;如数据偏左分布,则偏度<0;如果数据右偏分布,则偏度>0
  • 峰度--是用来描述数据分布陡峭情况或平滑的情况,可以理解为数据分布的高矮程度。 我们来绘制标准正态分布图和月薪分布图,我们将Matolotlib模块和Seaborn模块结合使用,代码演示如下:
 # 微信公众号:作物表型记录本
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
data= pd.read_excel('D:/shujufenxi/jjj.xlsx')
standard_normal=pd.Series(np.random.normal(0,1,size=1000000))
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
sns.kdeplot(standard_normal,fill=True,label='标准正态分布')
sns.kdeplot(data['月薪(元)'],label='月薪分布')
plt.show() # 微信公众号:作物表型记录本

这里注意看,其实正常图做出来应该是类似这种的,思考原因,应该与源数据有关。


数据的频数与频率分析

频数是指数据中的类别变量的每种取值出现的次数。频率是指每个类别变量的频数与总次数的比值,通常用百分比表示;演示代码如下:

 # 微信公众号:作物表型记录本
import pandas as pd
data= pd.read_excel('D:/shujufenxi/jjj.xlsx')
frequency=data['月薪(元)'].value_counts()#value_counts()函数用来计算数据的频数
percentage=frequency/len(data['月薪(元)'])# len()函数用来计算所选数据列的长度
print(frequency.head())
print(percentage.head())


接下来,使用Matplotlib模块中的hist()函数绘制频数分布直方图,演示代码如下:

 # 微信公众号:作物表型记录本
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
data= pd.read_excel('D:/shujufenxi/jjj.xlsx')
plt.hist(data['月薪(元)'],bins=8,density=False,color='g',edgecolor='k',alpha=0.75)#bins参数用于指定绘制直方图柱子的个数,density参数为False时表示绘制频数直方图,反之则为频率直方图,alph用于设置柱子透明度
plt.xlabel('月薪')
plt.ylabel('频数')
plt.title('月薪频数分布直方图')
plt.show()


从直方图中可以很清晰地看出所实验数据中,月薪在6000-7000元区间内的人数最多,从之前的分析中也可以看出月薪均值、中位数、众数分别约为7564、6340、4646,在工作中据此可以进行销售目标的制定等,本次不进行此操作,感兴趣的读者可以自行演示。


分类:

后端

标签:

后端

作者介绍

1
17633788835
V1