在前面的实验中我们学习过四分位数。四分位数,是指将一组数据值按大小排序后分成四等分,每一部分包含 1/4 的数据,这种划分的分割点就是四分位数。其中第1部分和第2部分的分割点称为第1分位数 Q 1 , 也被称为第25百分位数(上四分位),第3部分和第4部分的分割点称为第3四分位数Q 3,也被称为第75百分位数(下四分位)。而第二部分和第三部分的分割点是第2四分数,也就是中位数。其中四分位距 IQR是指第三四分位数和第一分四分位数的差,也就是 IQR = Q3 - Q1。
所有小于 Q1 - 1.5IQR或大于 Q3 + 1.5IQR 的数据项被称为异常值。
编写一个查找上文中定义的异常值的函数,函数接受一个列表参数,代表数据序列。函数将查找列表中的所有异常值,并将所有异常值作为列表返回。
代码如下:
import numpy as np
def find_outlier(data):
outlier = []
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1
for item in data:
if item < Q1 - 1.5 * IQR or item > Q3 + 1.5 * IQR:
outlier.append(item)
return outlier
if __name__ == '__main__':
l = [-100, -30, -20, -10, 0, 10, 15, 35, 50, 160]
result = find_outlier(l)
print(result)