如何使用箱线图去除异常值?

数据挖掘 时间序列 熊猫 麻木的 离群值 海运
2021-09-15 08:01:28

我有按日期分组的指标数据。我已经绘制了数据,现在,如何删除箱线图范围之外的值(异常值)?

所有 ['AVG'] 数据都在一个列中,我需要它来进行时间序列建模。

在此处输入图像描述

3个回答

Seaborn 使用四分位间距来检测异常值。您需要做的是在要删除异常值的列中重现相同的功能。在 Pandas 中很容易做到。

如果我们假设您的数据框被调用df并且您要过滤的列基于AVG,那么

Q1 = df['AVG'].quantile(0.25)
Q3 = df['AVG'].quantile(0.75)
IQR = Q3 - Q1    #IQR is interquartile range. 

filter = (df['AVG'] >= Q1 - 1.5 * IQR) & (df['AVG'] <= Q3 + 1.5 *IQR)
df.loc[filter]  

如果您需要删除异常值并且需要它来处理分组数据,而不需要额外的复杂性,只需showfliers在函数调用中将参数添加为 False 即可。它继承自 matplotlib。

showfliers=False

您可以在 seaborn 中简单地将 showfliers = False。