【发布时间】:2021-01-12 11:27:56
【问题描述】:
假设我需要使用 IQR 规则去除异常值,即 (40, 10) 在这种情况下(参考下面的图),我该怎么做?
与相邻点相比,(40, 10) 绝对是一个异常值。然而,
第一季度 = 11.25,
第三季度 = 35.75
1.5 * IQR = 1.5 * (Q3 - Q1) = 36.75
只有 y-val 小于 11.25-36.75 或大于 35.75+36.75 的点才被视为异常值。
如果必须使用 IQR 规则,如何使用 IQR 规则查找和删除 (40, 10)?
这是我的代码:
import pandas as pd
import matplotlib.pyplot as plt
test = pd.DataFrame({'x': range(50), 'y': [i if i != 40 else 10 for i in range(50)]})
plt.figure(**FIGURE)
plt.scatter(test['x'], test['y'], marker='x')
plt.show()
这是上面代码生成的图。
【问题讨论】:
-
您正在对 2D 问题使用 1D 测试。您可以创建一条回归线并使用到回归线的距离来识别异常值。参见例如Can scipy.stats identify and mask obvious outliers?
标签: python pandas statistics data-science