从 pandas 数据框中删除异常行

Remove Outlier Row from pandas dataframe

从 pandas 数据帧中删除异常值的有效方法是什么? 我有一个 pandas 数据框,我需要从数据框中删除离群点。

 X1       X2              X3              X4
228.0   4474.91836735   3507.15151515   6625.0
77.0    468.0           582.0           549.0
160.0   9.0             3507.15151515   6625.0
36.0    250.0           3507.15151515   6625.0
52.0    3.0             3.0             223.0
78.0    998.0           3507.15151515   6625.0

我尝试了 link 中的解决方案 但没有删除任何分数。即使是相同的 sklearn 实现也会很有用。

这里确实存在两个问题:1) 离群值检测,以及 2) 从数据帧中移除它们。

问题 #2 相当简单。在列中检测到异常值后,您可以使用类似的方法:

df = df[df.loc[:,'column_name'] < high_threshold]
df = df[df.loc[:,'column_name'] > low_threshold]

现在对于 #1,离群值检测方法差异很大。如果您只有这 4 个维度而没有那么多数据,那么 Median Absolute Deviation 方法可能就足够了,不需要 sklearn。

因为我不知道你的申请,我会告诉你this documentation on outlier detection in sklearn