如何计算Python中所有列的异常值?

时间:2016-08-21 19:42:02

标签: python pandas

我在Python笔记本中有三列数据集。似乎有超过1.5倍IQR的异常值。我想我怎么能算出所有列的异常值呢?

如果异常值太多,我可能会考虑删除多个特征作为异常值的点。如果是这样,我怎么能以这种方式计算呢?

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:6)

Romain X.'s answer类似,但在DataFrame而不是Series上运行。

随机数据:

Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1

四分位计算:

((df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR))).sum()
Out: 
A    1
B    0
C    0
D    1
E    2
dtype: int64

这些是每列的数字:

(df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR))

符合seaborn的计算:

enter image description here

请注意,sum(mask = (df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR)) df[mask] = np.nan )之前的部分是布尔掩码,因此您可以直接使用它来删除异常值。这将它们设置为NaN,例如:

{{1}}