首先,正态分布是最重要的一种概率分布,正态分布(Normaldistribution),也称高斯分布(Gaussiandistribution),具体详细的介绍可自行网上查阅资料;
其次,如下图中所示的:分位数、中位数、众数等;
再者,就是今天要重点介绍的箱型图,如下图所示
通过下图所示,可初步了解下正态分布图的分布状况。
图中所示的百分比即数据落入该区间内的概率大小,由图可见,在正负一倍的sigmam内,该区间的概率是最大的。达到34.1%,而超过正负3倍的sigma以外的区间概率是最小的,只有0.1%。所以通常会使用3sigma作为分界节点。
箱型图上下限取值为什么要使用
IQR=Q3-Q1
上边缘=Q3(上四分位数)+1.5IQR
下边缘=Q1(下四分位数)-1.5IQR
原因在于Q3(上四分位数)+1.5IQR与Q1(下四分位数)-1.5IQR比较接近于正负3sigma的界限值,如下截图所示:
二、上面简单介绍了下正态分布及箱型图的知识,接下来就看如何用Python来实现大数据量的数据中上下边缘值的计算吧。
(在贴代码之前简单说下需求背景,即:公司网页上某个指标数据需要每天check下展示给用户看到的数据是否正常,且这个数据每天都会随实际的线下营业情况而不同,所以不能简单判断是否为一固定值,经过分析可以采用箱型图的上下边缘值来做判断,正常情况下应该是服从正态分布的,即落入正负3sigma的区间内,如果没有落入该区间程序则报警反馈页面数据展示异常)
以下是Python的代码实现:
该实现方法中共需要传递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:利用前面所讲到的公式求出箱型图中上下边缘的值,也是该方法的终极目的
调用方在调用该函数时只需按规则传入对应的参数,拿到该方法返回的上下边缘值对页面上返回的数据进行区间判断即可。