我正在绘制一个数据框 df,其中包含散点图中的 x 和 y。显然,在许多情况下,对于每个 x 值,y 值可能是分散的。我想删除每个 x 的 y 异常值。这与使用 IQR 批量去除异常值不同。
有人可以帮忙吗?
我找不到任何现成的代码。有些代码可以批量删除异常值,而不是有选择地针对每个 x。
DataFrame
列对
Group
x
,然后应用函数从 each 组中remove outliers:
def remove_outliers(group, column='y'):
Q1 = group[column].quantile(0.25)
Q3 = group[column].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
return group[(group[column] >= lower_bound) & (group[column] <= upper_bound)]
df = df.groupby('x').apply(remove_outliers).reset_index(drop=True)