【问题标题】:Python: how to find outliers in a specific column in a dataframePython:如何在数据框中的特定列中查找异常值
【发布时间】:2019-11-13 23:59:12
【问题描述】:

我正在尝试从 Python 数据框中的特定列中删除异常值。我从几年前的帖子中找到了一个应该可以工作的解决方案,但要搜索整个数据框:

df_final[(np.abs(stats.zscore(df_final)) < 3).all(axis=1)]

由于我的数据框具有不同的数据类型,例如日期,我在运行时收到以下错误

TypeError: unsupported operand type(s) for +: 'Timestamp' and 'Timestamp'

我觉得只获取单个列的异常值的解决方案应该很容易,但是当我尝试时

df_final[(np.abs(stats.zscore(df_final['rating'])) < 3).all(axis=1)]

要仅获取 rating 列的异常值,我会收到错误

AxisError: axis 1 is out of bounds for array of dimension 1

我知道(认为?)这个问题与创建的数组有关,但我对它的理解还不够好,无法找到解决方案。谁能更好地向我解释一下?

编辑:似乎df_final[(np.abs(stats.zscore(df_final['rating'])) < 3)] 有效。老实说,不确定其背后的原因,所以如果有人可以解释或有更好的解决方案,我仍然很感兴趣。

【问题讨论】:

    标签: python pandas dataframe outliers


    【解决方案1】:
    np.abs(stats.zscore(df_final['rating'])) < 3
    

    这一行将返回一个numpy数组,值是一系列的真假。这可以用来做切片。

    对于 numpy.all,请参考doc。它不用于您的切片目的。

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 2016-12-16
      • 2019-04-27
      • 2020-10-29
      • 2019-11-01
      • 2018-01-16
      相关资源
      最近更新 更多