四分位数(Quartile)是统计学中分位数的一种,即把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。
-
第一四分位数 (Q1),又称"较小四分位数",等于该样本中所有数值由小到大排列后第25%的数字。
-
第二四分位数 (Q2),又称"中位数",等于该样本中所有数值由小到大排列后第50%的数字。
-
第三四分位数 (Q3),又称"较大四分位数",等于该样本中所有数值由小到大排列后第75%的数字。
第三四分位数与第一四分位数的差距又称四分位距(InterQuartile Range, IQR)。
异常值要在上界和下界之外,这个界定值通常定义为小于QL-1.5IQR或大于QU+1.5IQR的值。QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半。
def detectoutliers(data:list):
"""箱型图检测异常值"""
data = data.tolist()
outlier_list_col = []
# Q1为数据占25%的数据值范围
Q1 = np.percentile(data, 25)
# Q3为数据占75%的数据范围
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1
#异常值的范围
outlier_step = 1.5 * IQR
for n in range(len(data)):
if float(data[n]) < Q1 - outlier_step or float(data[n]) > Q3 + outlier_step:
outlier_list_col.append(data[n])
# print(outlier_list_col)
return outlier_list_col
参考博客: