使用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)

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

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。大家亦可找实例进行练习。

  • 7
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python有很多库可以用于描述性统计分析。其中最常用的是numpy和pandas库。下面是一些常见的描述性统计分析的函数: 1.平均数:使用numpy库中的mean函数计算一个数组的平均值,例如: ```python import numpy as np a = np.array([1, 2, 3, 4, 5]) mean_a = np.mean(a) print(mean_a) ``` 2.中位数:使用numpy库中的median函数计算一个数组的中位数,例如: ```python import numpy as np a = np.array([1, 2, 3, 4, 5]) median_a = np.median(a) print(median_a) ``` 3.众数:使用scipy库中的mode函数计算一个数组的众数,例如: ```python from scipy import stats a = np.array([1, 2, 3, 3, 4, 4, 4, 5]) mode_a = stats.mode(a) print(mode_a) ``` 4.方差和标准差:使用numpy库中的var和std函数计算一个数组的方差和标准差,例如: ```python import numpy as np a = np.array([1, 2, 3, 4, 5]) var_a = np.var(a) std_a = np.std(a) print(var_a, std_a) ``` 5.四分位数:使用numpy库中的percentile函数计算一个数组的四分位数,例如: ```python import numpy as np a = np.array([1, 2, 3, 4, 5]) q1 = np.percentile(a, 25) q2 = np.percentile(a, 50) q3 = np.percentile(a, 75) print(q1, q2, q3) ``` 6.相关系数:使用numpy库中的corrcoef函数计算两个数组的相关系数,例如: ```python import numpy as np a = np.array([1, 2, 3, 4, 5]) b = np.array([6, 7, 8, 9, 10]) corr = np.corrcoef(a, b) print(corr) ``` 以上是一些常用的描述性统计分析函数,使用这些函数可以很方便地进行数据分析

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python慕遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值