Python-检测并排除熊猫数据框中的异常值

发布于 2021-02-02 23:12:23

我有一个只有几列的熊猫数据框。

现在我知道某些行是基于某个列值的离群值。

例如

“ Vol”列的所有值都在周围,12xx而一个值是4000(离群值)。

现在,我想排除具有Vol此类列的行。

因此,从本质上讲,我需要在数据帧上放置一个过滤器,以便我们选择某一列的值在均值例如3个标准差以内的所有行。

有什么优雅的方法可以做到这一点?

关注者
0
被浏览
123
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    如果你的数据框中有多个列,并且希望删除至少一列中具有异常值的所有行,则以下表达式可以一口气做到这一点。

    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)确保对于每一行,所有列均满足约束。
    • 最后,此条件的结果用于索引数据帧。


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看