如何在Python中进行描述性统计分析?

前言

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

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.算术平均值

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 相关系数矩阵图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容