嗨,有人可以告诉我以下代码的含义吗?
df.mask(df.sub(df.mean()).div(df.std()).abs().gt(2))
我想做的是用NaN值替换异常值。这是我找到的,但我不清楚它的作用
答案 0 :(得分:2)
有很多链接的方法调用。
基本上,它计算df
的每一列的平均值,然后从相应列的元素中减去该平均值。然后,它计算标准偏差,并再次将其除以列。最后,它将所有大于2的值都屏蔽(转换为nan
)。
此过程称为“标准化”-根据标准偏差将值转换为距均值距离的倍数。大概是在这里,我们考虑所有大于两个标准差的离群值,并将其从数据集中删除。
但是,也许将操作符和方法调用混合在一起的类似代码可能更具可读性……?
df.mask(((df - df.mean()) / df.std()).abs() > 2)