赤裸裸的统计学【1】-描述性数据
想要成为一名数据分析师,统计学相关知识是必备的,这里小编推荐2本书籍,分别是《深入浅出统计学》和《赤裸裸的统计学》,供大家学习参考。公众号后台回复“统计学”,即可领取书籍的资料。
本文主要介绍的内容是:
miao
描
shu
述
xing
性
shu
数
ju
据
首先,问大家一个问题,怎么去衡量一个大学生的学业表现呢?
想必,大家都会脱口而出,那就是GPA!
毕竟大家都曾生活在被GPA支配的恐惧中,通俗地说,GPA也就是学生在校的平均成绩,是评价学生学术潜力的一个重要指标。
这里的GPA就是本文涉及的内容——描述性数据。
本文会从两个部分展开:统计量的介绍和相关实例。
下面先简单介绍有关平均数的常用统计量(因为大家都学过........)
均值:一批数据的平均数
(容易受到远离中心区域的“异常值”的干扰而出现失真)
举例:有5个人的平均月薪为1W,来了一个月薪为30W的大佬,这时候6人的平均月薪为35/6W,显然这个数据不能正确反映大家的工资水平。其中30W这个数据即为异常值。
中位数:一组数据的中间值
如果一组数据分布中没有特别离谱的异常值,那么它们的中位数和平均数是差不多的。
众数:一组数据中出现次数最多的数值
如果一批数据有两个众数,则称这批数据为双峰数据。
众数是唯一能用于类别数据的平均数。
举例:以下数据不是数值型数据,而是类别数据
类别 | 蓝 | 红 | 绿 | 粉 |
频数 | 4 | 5 | 8 | 1 |
这里的众数为“绿”,均数和平均数都不能用于类别数据
总结:
均值:在数据非常对称,且仅显示出一种趋势时使用
中位数:在数据由于异常值而发生偏斜时使用
众数:在遇到类别数据时使用,或当数据可以分为两个或更多组时使用
上述所讲的平均数,可以确定一批数据的中心,但是无法得知数据的波动情况。
下面简单介绍度量差异性的常用统计量:
极差(全距):一组数据的最大值与最小值的差值
极差是描述数据集分散程度的简便方法,但是容易受异常值的影响。
四分位距:不受异常值影响,一组数据的上四分位数与下四分位数的差值
四分位数的确定与中位数类似,将一组数据按照升序排列,分为四份,四分位数就是处于每个分隔位置的数值,最小值为四分位数,最大值为上四分位数。
百分位数:第k百分位数即位于数据范围k%处的数值
总结:
全距:数据集最大值与最小值之间的差值
四分位距:关注数据中间部位的50%的数值
百分位数:对于划分名次,排名很有用
下面简单介绍度量变异性的常用统计量:
方差:对一组数据的具体数值和均值之差进行平方,然后再用平方数之和除以数值的个数。
标准差:取方差的平方根
衡量数据相对于平均值的分散程度,标准差能用一个独立的数字来表示距离平均数的离散程度。
总结:
标准差是方差的平方根,粗略地体现了平均情况下的数值与均值的距离。
以上所讲的统计指标,可以将大量数据浓缩融合为一个数字,虽然可以提供简单明了的信息,但是描述性数据的背后往往存在着统计陷阱。比如有时候哪怕你准确无误地计算出了平均数,也无法改变中位数在对真相描述中更加准确这样一个事实。
下面以一个实例,用描述性数据挖掘一下药店销售数据中的信息。
首先,导入相应的python模块和数据。
import pandas as pdimport numpy as npimport matplotlib.pyplot as plt
导入医院2018年销售数据文件,并显示前5行数据,来观察一下数据的大致样子。
filename='./医院2018年销售数据.xlsx'#数据所在的文件路径,其中./表明在当前notebook所在的路径df=pd.read_excel(filename,sheet_name='Sheet1',dtype=str)df.head()#显示前五行数据
上面的5行可以让我们大致了解数据的信息,为了清楚一共有多少行,以及数据类型,有无缺失值,可以采用info( )方法。
df.info()
将字符串转换为数值(浮点型)
#转换字符串为数值df['销售数量']=df['销售数量'].astype(float)df['应收金额']=df['应收金额'].astype(float)df['实收金额']=df['实收金额'].astype(float)print('转换后的数据类型:\n',df.dtypes)
用describe( )方法查看销售数据的统计方面的信息。
df.describe()
其中,由运行结果得样本量count,均值mean,标准差std,最小值min,最大值max以及分位数。
观察到,销售数量有小于0的值,应剔除异常值。
df.loc[行标签,列标签]df.loc['a':'b']#选取ab两行数据df.loc[:,'one']#选取one列的数据
使用标签来选取数据,方法如上。
print('删除异常值前:',df.shape)#选取所有销售数量大于0的行df=df.loc[df['销售数量']>0,:]print('删除异常值后:',df.shape)
再次观察剔除异常值后的数据的统计信息:
也可以通过求众数的方法,得到哪种药品买的人数最多,这里不考虑药品的销售量。因为众数可以用于描述类别数据。
df['商品名称'].mode()
- 赤裸裸的统计学【1】-描述性数据
- No.01统计学之数据的描述性统计
- 统计学 学习笔记 (五)—— 掌握数据的整体状态 数据的分布特性
- 数据挖掘的基本概念:数据库、数据仓库、机器学习,统计学
- 用统计学的算法证明数据挖掘并非什么都能挖的出来
- SAS常用基础代码例子-数据描述性分析
- 统计学 学习笔记 (二)—— 掌握数据的整体状态 数据的集中趋势
- 【译文】数据科学的统计学入门
- 人工智能、机器学习、统计学和数据挖掘之间有什么区别?
- 描述性数据分析-Python实现
- 统计学---掌握数据的整体状态
- 实例讲解统计学基础知识(2):描述性统计分析
- Python统计学一数据的概括性度量
- 【读书笔记】统计学:从数据到结论 第七章
- 描述性数据分析
- 数据分析(入门篇)-第二章-玩转数据分析-Part2(Excel数据分析工具库-描述性统计分析)
- 统计学与数据挖掘
- 机器学习,数据挖掘,统计学,云计算,众包(crowdsourcing),人工智能,降维(Dimension reduction)
- Thinking in BigData(五)大数据之统计学与数据挖掘
- 【数据分析 R语言实战】学习笔记 第五章 数据的描述性分析(上)