如何在Python中进行描述性统计分析?
前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取python免费学习资料以及群交流解答点击即可加入导读在进行数据分析时,一般要先对数据进行描述性统计分析,以发现其内在的规律,再选择进一步分析的方法。描述性统计分析要对调查总体所有变量的有关数据做统计性描述,主要包括数据的频数分
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
导读
在进行数据分析时,一般要先对数据进行描述性统计分析,以发现其内在的规律,再选择进一步分析的方法。描述性统计分析要对调查总体所有变量的有关数据做统计性描述,主要包括数据的频数分析、数据的集中趋势分析、数据离散程度分析、数据的分布以及一些基本的统计图形。
本文以数据集classdata为案例来说明如何计算数据探索过程中的各种数据指标,此数据集为某个班级的学生信息数据,包含姓名、性别、身高和体重,首先我们创建数据帧,代码如下:
import pandas as pd
import numpy as np
classdata=pd.read_csv("D:/Pythondata/data/class.csv")
classdata.head()
运行上述程序,结果如图1所示,展示了数据集classdata的前5个观测样本。
图1 数据集classdata的前5个观测
一、集中趋势
1.算术平均值
Pandas中计算变量均值的方法主要有2种,一是直接使用describle函数,一个是调用mean函数,代码如下所示:
classdata.mean()
运行程序,结果如下所示,可知年龄Age的均值为13.3,身高62.34,体重100。
Age 13.315789
Height 62.336842
Weight 100.026316
dtype: float64
同样,我们调用describe,代码如下所示:
classdata.describe()
运行程序,结果如下图2所示,与调用mean函数的计算结果一致。
图2 变量的均值
2.几何平均数
计算变量的几何平均值,需要调用Python库scipy,比如我们计算数据集classdata的变量Heigth的几何平均值,代码如下所示:
from scipy import stats
stats.gmean(classdata['Height'])
运行程序,结果如下所示:
62.133135310943146
3.众数
在Pandas中,我们可以直接调用mode函数来计算变量的众数,比如,我们计算变量Age的众数,代码如下所示:
classdata['Age'].mode()
运行程序后,结果如下所示
12
二、离散程度
1.极差与四分位差
极差也叫全距,是一组数据的最大值与最小值之差;四分位差是指第三分位数与第一分位数之差,也称为内距或四分间距。利用describe函数计算最大值、最小值以及分位数,即可计算极差和四分位差.
stat = classdata.describe() #保存基本统计量
stat.loc['range'] = stat.loc['max']-stat.loc['min'] #极差
stat.loc['dis'] = stat.loc['75%']-stat.loc['25%'] #四分位数间距
print(stat)
运行上述程序,结果如下图3所示,变量Age的极差为5,四分位差为2.5,变量Heigth的极差为20.7,四分位差为7.65,变量Weight的极差为99.5,四分位差为28。
图3 极差计算结果
2.平均离差
平均离差是各变量值与其平均数之差的绝对值之和的平均数。Pandas中计算平均差的为mad函数,直接调用即可,比如我们计算各个变量的平均差,则代码如下所示:
classdata.mad()
运行程序后,其结果如下所示:
Age 1.279778
Height 4.069252
Weight 17.343490
dtype: float64
3.标准差
Pandas中计算标准差的方式有多种,其中函数describe和std均可计算,我们在前文中已经展示了describe函数的用法,在此不再累述,我们直接调用std函数即可,代码如下:
classdata.std()
运行上述程序,结果如下所示:
Age 1.492672
Height 5.127075
Weight 22.773933
dtype: float64
4.离散系数
离散系数通常是就标准差来计算的,因此,也称为标准差系数,它是一组数据的标准差与其对应的平均数之比,是衡量数据离散程度的相对指标。
我们可以通过如下程序计算标准差系数,代码如下:
stat2 = classdata.describe()
stat2.loc['var'] = stat2.loc['std']/stat2.loc['mean']
stat2
运行上述程序,结果如下图4所示:
图4 离散系数结果
三、分布状态
1.偏态
偏态是对分布偏斜方向和程度的测度,Pandas中可以直接调用skew函数计算变量的偏态系数,代码如下所示:
classdata.skew()
运行上述程序,结果如下所示,其中变量Age、Height和Weight的偏态系数分别为0.06、-0.26和0.18。
Age 0.063612
Height -0.259670
Weight 0.183351
dtype: float64
2.峰度
峰度是分布集中趋势高峰的形状,Pandas中可以直接调用kurt函数计算变量的偏态系数,代码如下所示:
classdata.kurt()
运行上述程序,结果如下所示,其中变量Age、Height和Weight的偏态系数分别为-1.11、-0.14和0.68。
Age -1.110926
Height -0.138969
Weight 0.683365
dtype: float64
四、相关分析
1.散点图
制散点图的方法很多,可以直接调用Pandas库的plot.scatter函数进行绘制,比如如下绘制散点图的程序。
classdata.plot.scatter(x='Age', y='Height')
运行上述程序,结果如图5所示,从散点图的数据分布可以看出,变量Height和Age呈现很强的相关关系。
图5 变量Age和Height的散点图
同样,我们也可以调用matplotlib库的pyplot函数进行散点图的绘制,代码如下所示:
import matplotlib.pyplot as plt
plt.scatter(classdata['Height'],classdata['Weight'] )
plt.xlabel("Height")
plt.ylabel("Weight")
plt.show()
运行上述程序,结果如下图6所示,从散点图的数据分布可以看出,变量Height和Weight同样呈现很强的相关关系。
图6 变量Height和Weight的散点图
2.相关系数
在Pandas中可以直接调用corr函数来计算变量之间的相关系数,如下程序:
classdata.corr()
运行程序后,结果如图7所示:
图7 变量之间的相关系数
除了计算相关系数矩阵之外,我们还可以绘制相关系数矩阵图,此处需调用seaborn库进行绘制,代码如下所示:
import seaborn as sns
%matplotlib inline
# calculate the correlation matrix
corr = classdata.corr()
# plot the heatmap
sns.heatmap(corr,xticklabels=corr.columns,yticklabels=corr.columns)
运行上述程序之后,结果如图8所示:
图8 相关系数矩阵图
更多推荐
所有评论(0)