前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取


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 数据集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 变量的均值

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 极差计算结果

图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 离散系数结果

图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的散点图

图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的散点图

图6 变量Height和Weight的散点图

2.相关系数

在Pandas中可以直接调用corr函数来计算变量之间的相关系数,如下程序:

classdata.corr()

运行程序后,结果如图7所示:

 

图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 相关系数矩阵图

图8 相关系数矩阵图

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐