微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 检测并排除Pandas数据帧中的异常值

我有一个包含少量列的pandas数据帧.

现在我知道某些行是基于某个列值的异常值.

例如列 – ‘Vol’的所有值都大约为12xx,一个值为4000(异常值).

现在我想排除那些有’Vol’列的行.
因此,基本上我需要在数据框上放置一个过滤器,以便我们选择所有行,其中某列的值在与平均值相差3个标准差的范围内.

实现这一目标的优雅方式是什么?

解决方法:

如果数据框中有多个列,并且想要删除至少有一列中具有异常值的所有行,则以下表达式将一次性执行此操作.

df = pd.DataFrame(np.random.randn(100, 3))

from scipy import stats
df[(np.abs(stats.zscore(df)) < 3).all(axis=1)]

描述:

>对于每一列,首先计算每个值的Z分数
列,相对于列平均值和标准偏差.
>然后是Z分数的绝对值,因为方向不是
只有当它低于阈值时才重要.
> all(axis = 1)确保对于每一行,所有列都满足
约束.
>最后,此条件的结果用于索引数据帧.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐