🐳 我正在和鲸社区参加“商业数据分析训练营活动” https://www.heywhale.com/home/competition/6487de6649463ee38dbaf58b ,以下是我的学习笔记:
学习主题:Python描述性统计
日期:2023.9.19
关键概念/知识点:
- 集中数据趋势的度量
- 数据离散状况度量
- 偏度、峰度
- 异常值处理
掌握的新函数/方法:
- numpy.mean()
- numpy.median()
- stats.mode()
- stats.gmean()
- stats.hmean()
- numpy.ptp()
- numpy.var()
- numpy.std()
- stats.skew()
- stats.kurtosis()
代码举例
集中数据趋势的度量:
集中趋势(central tendency)是指一组数据向某一中心值靠拢的程度,它反映了一组数据中心点的位置所在。常见的度量方法有平均值、中位数、众数等等,下面是常见的度量函数:
名称 | 函数 | 说明 |
---|---|---|
算术平均值 | numpy.mean() | 观测总值/观测个数 |
中位数 | numpy.median() | 递减/增排序时在数据中间位置的数字 |
众数 | stats.mode() | 出现次数最多 |
几何平均值 | stats.gmean() | 几何平均值总是不大于算术平均值(非负观测值) |
调和平均值 | stats.hmean() | 总体各统计变量倒数的算术平均数的倒数 |
注:
- 如果想求一组数据x的均值,则在导入numpy库后调用该库的mean()函数即可,均值为:
mu = numpy.mean(x)
- 其中stats库为scipy的子库,使用方法为
import scipy.stats as stats
数据离散状况度量:
假设要统计两组学生的得分,第一组是19,20,21,第二组是15,20,25,可知这两组学生的平均得分相等,但如果只根据均值(两组的均值都是20)我们将无法区别两组数据有什么不同,现在我们的疑惑又来了:哪个组的得分又更加稳定呢?所以仅仅知道集中趋势是远远不够的,除此之外,了解数据离散程度对我们的统计分析工作也是有很大帮助的。
在统计分析中,离散程度指标可以说明集中趋势指标的代表性是什么样子的,还可以用来说明事物在发展变化过程中的均衡性、节奏性和稳定性等问题。 下面是一些常见的离散情况度量的函数:
名称 | 函数 | 说明 |
---|---|---|
范围(Range) | numpy.ptp() | 最大值和最小值之间的差异 |
平均绝对偏差(MAD) | / | 数据点距离算术平均值的偏差 |
方差 | numpy.var() | 每个样本值与全体样本值的平均数之差的平方值的平均数 |
标准差 | numpy.std() | 方差的平方根 |
上偏方差 | / | 高于均值数据的方差 |
下偏方差 | / | 低于均值数据的方差 |
目标下偏方差 | / | 仅关注某一目标的样本下数据的方差 |
注: 上述有些离散程度的度量,在python中没有直接函数可以表示的,但均可通过自建函数等方式获得。
偏度、峰度 :
在许多统计测试和机器学习模型中都依赖于正态性假设。 因此,当数据出现严重偏斜等问题则意味着数据不正常,并且可能会影响统计测试或机器学习预测能力。主要的衡量标准为偏度和峰度:
-
偏度是与正态分布相比较,描述某总体取值分布的对称性。当偏度=0时,则表示数据分布与正态分布偏斜程度相同;偏度>0,数据分布与正态分布相比正/右偏,有一条“尾巴”拖在右边;偏度<0,数据分布比正态分布相比负偏/左偏,有一条“尾巴”拖在左边。
-
峰度用来描述总体中所有取值分布形态陡缓程度。以3为界点,当峰度=3时,该总体数据分布与正态分布陡缓程度相同;峰度>3,该总体数据分布比正态分布陡峭;峰度<3,该总体数据分布比正态分布平坦。
在python中的具体操作如下:
名称 | 函数 | 说明 |
---|---|---|
偏度 | stats.skew() | 描述总体取值分布的对称性 |
峰度 | stats.kurtosis() | 描述总体取值分布的陡缓程度 |
注:
- 在python中,stats库为scipy的子库
- 偏度和峰度是基于与正态分布的比较
异常值处理 :
异常值问题在数据分析中经常会遇到,异常值可能会对数据分析造成严重的影响。处理异常值方法有多种,常用方法如下:
1. 固定比例法:
设置固定比例来判断是否异常。比如把上下2%值重新设置,大于99%分位数的数值,则将其设置为99%分位数值;若小于1%分位数的数值,则将其设置为1%分位数值。
2. 均值标准差法:
通常把3倍标准差之外的值视为异常值。不过由于样本均值和标准差计算本身受到极值影响较大,所以可能出现在数据分布图上明显看到异常点,而异常点按计算仍处在3倍标准差内。
3. MAD法:
对均值标准差法的改进,将样本均值用样本中位数代替,样本标准差用样本绝对中位差MAD代替。
4. Boxplot法:
利用上下四分位数所得到的区间,将
(
−
∞
,
Q
1
−
3
×
I
Q
R
)
∪
(
Q
3
+
3
×
I
Q
R
,
+
∞
)
(-\infty ,Q_1-3\times IQR)\cup (Q_3+3\times IQR,+\infty)
(−∞,Q1−3×IQR)∪(Q3+3×IQR,+∞)区间内的点标为异常点。其中
Q
1
,
Q
3
Q_1,Q_3
Q1,Q3为数据从小到大排列的25%和75%分位数,
I
O
Q
=
Q
1
−
Q
3
IOQ=Q_1-Q_3
IOQ=Q1−Q3。在2001年Hubert和Van Der Vieren对原有Boxplot法进行偏度调整。
关键总结:
描述性统计是对数据的性质进行描述,就像看一群群山峰,通过描述性统计我们可以知道山峰的高度总体状况,比如均值描述了山峰的总体高度,而方差描述了山峰的高度差距,在此基础上进一步可以做出更重要的判断和预测,我们可以从多个方面看数据,体验数据的多重样貌!
学习了描述数据集中趋势和离散程度的度量方法,具有代表性的是均值和方差,另外还有峰度、偏度的计算及正态性检验以及识别出数据的异常值并进行处理。
问题/困惑:
对于描述性统计涉及到的某些函数还不太熟练,需要在练习中熟练掌握。
下一步计划:
通过练习掌握描述性统计方法,从多个角度了解数据。
参考资料/相关资源链接:
Pandas文档:https://pandas.pydata.org/docs/
matplotlib文档:https://www.matplotlib.org.cn/intro/
numpy文档:https://www.numpy.org.cn/reference/