前言

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

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

如何在Python中进行描述性统计分析?相关推荐

  1. 教你如何在Python中读,写和解析CSV文

    摘要:在这篇文章中关于"在Python如何阅读CSV文件"中,我们将学习如何读,写和解析的CSV文件的Python. 您知道将表格数据存储到纯文本文件背后的机制是什么吗?答案是CS ...

  2. java opencsv 乱码_教你如何在Python中读,写和解析CSV文

    摘要:在这篇文章中关于"在Python如何阅读CSV文件"中,我们将学习如何读,写和解析的CSV文件的Python. 您知道将表格数据存储到纯文本文件背后的机制是什么吗?答案是CS ...

  3. python 概率分布函数_如何在Python中实现这五类强大的概率分布

    匿名用户 1级 2016-04-25 回答 首页 所有文章 观点与动态 基础知识 系列教程 实践项目 工具与框架应用 工具资源 伯乐在线 > Python - 伯乐在线 > 所有文章 &g ...

  4. 如何在python中找到两个日期时间对象之间的时差?

    本文翻译自:How do I find the time difference between two datetime objects in python? 如何分辨两个datetime对象之间的时 ...

  5. 如何在Python中声明一个数组?

    如何在Python中声明数组? 我在文档中找不到任何对数组的引用. #1楼 这个怎么样... >>> a = range(12) >>> a [0, 1, 2, 3 ...

  6. 如何在Python中捕获SIGINT?

    我正在研究启动多个进程和数据库连接的python脚本. 我不时地想用Ctrl + C信号杀死脚本,我想进行一些清理. 在Perl中,我可以这样做: $SIG{'INT'} = 'exit_gracef ...

  7. 如何在Python中解析YAML文件

    如何在Python中解析YAML文件? #1楼 不依赖C标头的最简单,最纯净的方法是PyYaml( 文档 ): #!/usr/bin/env pythonimport yamlwith open(&q ...

  8. 如何在Python中反转列表?

    如何在Python中执行以下操作? array = [0, 10, 20, 40] for (i = array.length() - 1; i >= 0; i--) 我需要一个数组的元素,但是 ...

  9. python set 排序_python set 排序_如何在Python中使用sorted()和sort()

    点击"蓝字"关注我们 ?"Python基础知识" 大卫·丰达科夫斯基  著 18财税3班 李潇潇    译 日期:2019年5月6日 一. 使用sorted() ...

最新文章

  1. file:///f:winwwwxml2.php,php simplexml_load_file 中文乱码的解决方法
  2. python数据分析numpy_利用python进行数据分析-NumPy高级应用
  3. 如何对系统中设置的修改记录增加log日志
  4. 对于按成本组件结构(要素)还原
  5. 两点感悟:关于教育与未来
  6. java中ajax删除,ajax删除 post方法
  7. 怎么让电脑屏幕一直亮着_电视机指示灯亮不开机怎么办 电视机故障及维修介绍【详解】...
  8. 比利时女摄影师玛瑞亚
  9. 【转】Wireshark网络抓包(三)——网络协议
  10. windows查看linux文件中文,Linux 系统下无法查看Windows 中创建的中文文件名
  11. vi - a linux command
  12. ubuntu 破解mysql密码_Ubuntu下忘记MySQL root密码解决方法
  13. tensorflow里面函数记录
  14. 携程到底有没有杀熟?
  15. BluetoothLE-Multi-Library 一个能够连接多台蓝牙设备的库,它可以作为client端,也可以为server端。支持主机/从机,外围设备连接。...
  16. linux标准输入/输出/错误
  17. c语言输入学生成绩q退出,C语言-学生成绩管理系统实验报告13页
  18. kafka 查看待消费数据_通过Kafka Connect进行数据迁移
  19. 【阿里云短信服务SMS】使用阿里云发送短信
  20. android 系统下拉菜单,【MotoX评测】原生Android5.0下拉菜单和基础设置_Moto X_手机评测-中关村在线...

热门文章

  1. AlphaGo Zero「无师自通」背后的伟大与局限 | 旷视孙剑解读
  2. mac 迅雷下载后的文件地址
  3. akka mysql_Akka系列(七):Actor持久化之Akka persistence
  4. 自由动力3.6版90个问答(三)
  5. 论文阅读:RA-Depth: Resolution Adaptive Self-Supervised Monocular Depth Estimation
  6. 用于监控分布式系统的四个黄金信号
  7. 机器学习基础——BP算法
  8. 多线程--线程的六种状态
  9. 学习笔记manifold(二)迈德威视摄像头配置
  10. 五角星(for循环五条边)