在阅读今天分享的内容之前,我们先来简单了解下关于数学中的部分统计学及概率的知识。
首先,正态分布是最重要的一种概率分布,正态分布(Normal distribution),也称高斯分布(Gaussian distribution),具体详细的介绍可自行网上查阅资料;
其次,如下图中所示的:分位数、中位数、众数等;
再者,就是今天要重点介绍的箱型图,如下图所示
待会要分享的 Python 程序就是对箱型图中上下边缘值的计算实现。
通过下图所示,可初步了解下正态分布图的分布状况。
图中所示的百分比即数据落入该区间内的概率大小,由图可见,在正负一倍的sigmam 内,该区间的概率是最大的。达到34.1%,而超过正负3倍的 sigma 以外的区间概率是最小的,只有0.1%。所以通常会使用 3sigma 作为分界节点。
箱型图上下限取值公式
箱型图上下限取值为什么要使用以下计算公式
IQR = Q3 -Q1
上边缘 = Q3(上四分位数) + 1.5IQR
下边缘 = Q1(下四分位数) - 1.5IQR
原因在于Q3(上四分位数) + 1.5IQR与 Q1(下四分位数) - 1.5IQR比较接近于正负3sigma的界限值。
如下图所示:
公司网站上某个指标数据需要每天检查下展示给用户看到的数据是否正常,且这个数据每天都会随实际的线下营业情况而不同,所以不能简单判断是否为一固定值。
经过分析可以采用箱型图的上下边缘值来做判断,正常情况下应该是服从正态分布的,即落入正负 3sigma 的区间内,如果没有落入该区间程序则报警反馈页面数据展示异常,进行人工干预排查。
该实现方法中共需要传递4个参数:
(1)、indicators_path:excel文件的路径
(2)、sheet_name:excel文件路径下对应的sheet的名称
(3)、all_data_list:数据列表,相当于Python中的list
(4)、singal_data:all_data_list中的单个元素
下图为 excel 中的大量数据集:
Line3-6:读取 excel 表中每列数据并转成 list 集合
Line7:删除 excel 中每列最后一行的值
Line9-10:判断如果某列的值完全一样,则赋值一个固定的字符串,供调用方判断时使用
Line12:对 list 中的所有数据进行反转,且由小到大的排序
Line13-17:目的是将 list 中除了为“nan”的数据全部放置于另一个list中
Line20-24:利用numpy函数求出箱型图中的四分之一和四分之三分位的值
Line25-30:利用前面所讲到的公式求出箱型图中上下边缘的值,也是该方法的终极目的
调用方在调用该函数时只需按规则传入对应的参数,拿到该方法返回的上下边缘值对页面上返回的数据进行区间判断即可。