📅  最后修改于: 2023-12-03 15:10:56.714000             🧑  作者: Mango
在数据分析中,我们常常需要检测数据中的异常值。其中,一种较为常用的方法是使用四分位距(interquartile range,IQR)。
四分位距是一个描述数据集中变异情况的统计量,它是上四分位数(upper quartile,Q3)和下四分位数(lower quartile,Q1)之差,即:
$$ IQR = Q3 - Q1 $$
四分位距常用作箱线图中的 whisker(须),它被用来标记数据中的非异常值区间。
在进行四分位距检测之前,需要先计算数据的 Q1、Q3 和 IQR。具体步骤如下:
根据四分位距的定义,可以将数据集的非异常值定义为:
$$ [Q1-1.5\times IQR, Q3+1.5\times IQR] $$
因此,可以使用如下代码片段来检测数据集中的异常值:
def detect_outliers(data):
q1, q3 = np.percentile(data, [25, 75])
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
return data[(data < lower_bound) | (data > upper_bound)]
该函数接收一个数据集作为输入,并根据上述公式,计算出数据集的 Q1、Q3 和 IQR。然后,将数据集中小于下限或大于上限的数据筛选出来,并作为异常值返回。
四分位距是一种常用的方法,可以帮助我们检测数据集中的异常值。使用四分位距的优势在于它可以忽略极端值的影响,更加稳健。同时,四分位距也可以用于绘制箱线图等数据可视化。