用python重温统计学基础:描述性统计分析

Aidan075 等级 588 0 0

用python重温统计学基础:描述性统计分析

描述性统计分析(Description Statistics)是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间的关系进行估计和描述的方法。描述性统计分析分为集中趋势分析和离中趋势分析。

提到用python来进行描述性统计分析,第一反应就是用:dataframe.describe(), 我们不妨用一组数据来展示:



# 读取数据  
df = pd.read\_csv('sanguo\_data.csv',header = 0,encoding="utf-8")  
df.head()

用python重温统计学基础:描述性统计分析

这是一组三国人物的数据,有姓名、性别、统御、武力等字段(数据下载地址见文末)。

下面我们用python当中的dataframe.describe()来进行描述性统计分析:



#描述性分析  
df.describe()

用python重温统计学基础:描述性统计分析

运行可得到上图,可以看到最大值、最小值、平均数、标准差、中位数等基本的描述性统计指标都有,但是为了更好深地掌握知识,下面还是继续用python挨个指标复习一下。

集中趋势分析

  • 平均数
  1. 简单算数平均数,这里没什么好说的

  2. 加权平均数,应用最广泛。这里举个栗子:武力值高不代表带领军队时的战力,不然关羽岂不是无敌,所以这时候用统御能力加权平均更合适。

  3. 几何平均数,多用于流程转化中的平均,比如多步骤的转化率求平均值



data = df\['武力'\]  
#简单算数平均数  
np.average(data)  
#加权平均数  
np.average(data,weights=df\['统御'\])  
#几何平均数  
pow(np.prod(data),1/len(data))   


  • 众数

是一组数据中出现次数最多的数值,可能没有,也有可能有多个。



counts = np.bincount(data)  
np.argmax(counts)

  • 分位数

分位数是指用分割点将一个随机变量的概率分布范围分为几个具有相同概率的连续区间。



# 中位数  
np.median(data)  
# 四分位数  
np.percentile(data, (25, 50, 75), interpolation='midpoint')

箱线图是分位数的直接应用:主要包含六个数据节点,将一组数据从大到小排列,分别计算出他的上边缘,上四分位数Q3,中位数,下四分位数Q1,下边缘,还有一个异常值。

用python重温统计学基础:描述性统计分析

我平时喜欢用的小提琴图(violin plot)用于显示数据分布及其概率密度。它结合了箱形图和密度图的特征,主要用来显示数据的分布形状。中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间,而白点则为中位数。

用python重温统计学基础:描述性统计分析

离中趋势分析

  • 极差

极差又被称为全距,是指数据集合中最大值与最小值的差值



# 极差  
np.max(df\['武力'\])-np.min(df\['武力'\])

  • 方差、标准差

方差是度量随机变量和其数学期望(即均值)之间的偏离程度。

标准差:方差的开方



# 方差  
np.var(df\['武力'\])  
# 标准差  
np.std(df\['武力'\])  


  • 平均差

各个变量值同平均数的离差绝对值的算术平均数。

  • 异众比率

是总体中非众数次数与总体全部次数之比。

  • 偏态系数

以平均值与中位数之差对标准差之比率来衡量偏斜的程度。偏态系数小于 0,因为平均数在众数之左,是一种左偏的分布,又称为负偏。偏态系数大于 0,因为均值在众数之右,是一种右偏的分布,又称为正偏。

  • 峰态系数

是对数据分布平峰或尖峰程度的测度:峰态系数与众数概率的高低有直接关系,众数概率越高,峰态系数越大。

正态分布的峰态系数是 3,常常计算出来的峰态系数会跟 3 作比较,如果小于 3 则具有不足的峰度,如果大于 3 则具有过度的峰度。



#偏度、峰度  
from scipy import stats  
x = df\_wu\['武力'\]  
skew = stats.skew(x)  
kurtosis = stats.kurtosis(x)  


实战演练

现在我们再将这组数据按国家区分,来看看描述性统计分析能得出什么样的结论?



df\_wei = df.loc\[(df\['国家'\] == '魏国')\]  
df\_shu = df.loc\[(df\['国家'\] == '蜀国')\]  
df\_wu  = df.loc\[(df\['国家'\] == '吴国')\]  
data = df\_wu\['武力'\]  
plt.hist(data,20,normed=True,facecolor='g',alpha=0.9)  
plt.show()  


做出三国人物的武力值分布图,以及利用前文的python代码计算各种描述性统计分析指标,如下图所示:

用python重温统计学基础:描述性统计分析

  1. 从平均值看,蜀国武将的平均武力在三个国家之上

  2. 从标准差看,吴>蜀>魏,这说明吴国人物间武力差距更大一些,而魏国人物武力分布较为均匀。

  3. 从偏度上看:三国偏态系数均小于0,平均数在众数之左,是一种左偏的分布,又称为负偏。 从上面三个图中也可以看出:其中蜀国的武力分布众数偏在右侧更明显一点,长尾拖在左边。 从峰度上看:三国偏态系数均小于0,均是低峰态,相对来说蜀国人物武力分布较另外两国人物武将武力分布更窄一些。

PS:大家可能注意到求出的偏态系数为负数,这是因为在实际应用中,通常将峰度值做减3处理。


数据代码分享:

[1]点击左下角原文链接,直接进入知识星球(免费)原贴获取文中涉及的三国数据和ipynb格式的python代码。

[2]或者微信后台回复“统计分析”,也可同样获取。

参考资料:

[1]《数据茶水间》-木东居士

[2]《从零进阶!数据分析的统计基础》

[3]《深入浅出统计学》


本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/TGoL3ZNDlIMLxRWwf9ch3A,可扫描二维码进行关注: 用python重温统计学基础:描述性统计分析 如有侵权,请联系删除。

收藏
评论区

相关推荐

Python的环境搭建和下载
Python是一个跨平台、可移植的编程语言,因此可在windows、Linux和Mac OS X系统中安装使用。 安装完成后,你会得到Python解释器环境,可以通过终端输入python命令查看本地是否已经按照python以及python版本。这里有一点需要注意的是,如果没有将python的安装目录添加到环境变量中,会报错(python不是内部命令或外部命
python文件的第一行 #!/usr/bin/python3 是什么意思?
python文件的第一行代码通常在脚本语言的第一行会看到: !/usr/bin/env python或 !/usr/bin/python 首先要确定的一点是它不是注释。这两句话的目的都是指出你的python文件用什么可执行程序去运行它。1. !/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释
20180607pip install xxx报错SyntaxError invalid syntax
用pip安装时都要在cmd命令行里启动的,而在python中无法运行。退出python运行环境就再执行pip可以了。而且最好用管理员身份运行cmdC:\WINDOWS\system32>cd D:\Python\APIC:\WINDOWS\system32>D:D:\Python\API>pip install wordcloud-1.4.1-cp3
20180607pip install xxx报错SyntaxError invalid syntax
用pip安装时都要在cmd命令行里启动的,而在python中无法运行。退出python运行环境就再执行pip可以了。而且最好用管理员身份运行cmdC:\WINDOWS\system32>cd D:\Python\APIC:\WINDOWS\system32>D:D:\Python\API>pip install wordcloud-1.4.1-cp3
Atom的python插件和常用插件
python: simplified-chinese-menu:中文汉化(英文差的) 代码高亮:Atom自带 自动补全:autocomplete-python 语法检查:linter-flake8 定义跳转:python-tools 代码运行:atom-runner (只能输出,不能输入),atom-python-run(Windows,可以输入
CentOS升级Python到2.7版本
查看python的版本 python -V Python 2.4.3 1.先安装GCC yum -y install gcc 2.下载Python-2.7.2 wget http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2 3.解压Python-2.7.2
Django学习笔记
1\. django-admin.py startproject mysite 2\. python manage.py help 3\. python manage.py runserver 4\. python 搜索路径为sys.path,运行时可追加目录至sys.path 5\. python模板使用: \>>> from django im
FreeBSD python安装MySQL
fetch https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.4.zip unzip MySQL-python-1.2.4.zip cd MySQL-python-1.2.4 python setup.py install ln -s /usr/loca
Linux下Python编程
linux下python编程可以使用sublime-text3来作为编辑器,很方便,而且linux默认就是有python2和python3环境安装的,我们只要安装sublime-text3即可进行python编程 sudo update-alternatives --install /usr/bin/python python /usr/bin/p
Python中Requests库的高级用法
前面讲了Python的urllib库的使用和方法,Python网络数据采集Urllib库的基本使用 ,Python的urllib高级用法 。 今天我们来学习下Python中Requests库的用法。([官方手册](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fdocs.python-req
Python中的参数传递与解析
Python传递命令行参数 ============= Python的命令行参数传递和C语言类似,都会把命令行参数保存到argv的变量中。对于python而言,argv是sys模块中定义的一个list。与C语言不同的是,python中并没有定义argc,要获得参数的个数,需要使用len(sys.argv) 当用户使用'python -c "command
Python升级Linux
CentOS 7 中默认安装了 Python,版本比较低(2.7.5),为了使用新版 3.x,需要对旧版本进行升级。 由于很多基本的命令、软件包都依赖旧版本,比如:yum。所以,在更新 python 时,建议不要删除旧版本(新旧版本可以共存)。 查看 Python 版本号 ============= 当 Linux 上安装 Python 后(默认安装)
Python服务器开发一:python基础
Python(蟒蛇)是一种动态解释型的编程语言。Python可以在Windows、UNIX、MAC等多种操作系统上使用,也可以在Java、.NET开发平台上使用。 【特点】 1 Python使用C语言开发,但是Python不再有C语言中的指针等复杂的数据类型。 2 Python具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、
Python环境搭建—安利Python小白的Python和Pycharm安装详细教程
人生苦短,我用Python。众所周知,Python目前越来越火,学习Python的小伙伴也越来越多。最近看到群里的小伙伴经常碰到不会安装Python或者不知道去哪下载Python安装包等系列问题,为了方便大家学习Python,小编整理了一套Python和Pycharm安装详细教程,只要大家按照这个步骤来,就可以轻松的搞定Python和Pycharm的安装了。
Python进阶丨如何创建你的第一个Python元类?
> **摘要:**通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类的行为和规则。元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一。通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。本文介绍以下概念: * * 什么是Python元类?