【问题标题】:Calculate percentage of outliers in each column of a dataframe计算数据框每列中异常值的百分比
【发布时间】:2021-07-13 06:58:54
【问题描述】:

我有一个名为 myvolabserr 的数据框,我想计算每列的值的百分比>10%。
我这样做的方式是

  1. 检查该值是否是由 T/F 组成的新数据帧的异常值(T if value>10%)
  2. 计算每列T值的百分比

我在做第一步,我试过了

out = myvolabserr
for i in range(0, len(out.axes[1])):
    out.iloc[:,i] = myvolabserr.iloc[:,i].apply(lambda x: 'True' if x > 0.1 else 'False')
print(out)

但我说错了

'>' not supported between instances of 'str' and 'float'

然后我检查我的 df myvolabserr 的类型:

                             ticker
Absolute Error (Volatility)  AAPL      float64
                             AMD        object
                             BIDU      float64
                             GOOGL     float64
                             IXIC      float64
                             MSFT      float64
                             NDXT      float64
                             NVDA      float64
                             NXPI      float64
                             QCOM      float64
                             SWKS      float64
                             TXN       float64
dtype: object

谁能帮忙解决这个错误?
也许还有其他方法可以一次性计算异常值的百分比,而不是我的两步法?

【问题讨论】:

    标签: python pandas dataframe types outliers


    【解决方案1】:

    此处不需要循环,将值转换为数字并按标量进行比较:

    out = myvolabserr.astype(float) > 0.1
    

    对于百分比,使用 mean - Trues 的处理方式类似于 1s:

    s = out.mean()
    

    【讨论】:

    • 谢谢。有效,请问AMD的类型不同的可能原因是什么?因为我以同样的方式处理数据文件。
    • @Lazer - 很难的问题,不知道。
    猜你喜欢
    • 2012-09-16
    • 2013-12-27
    • 1970-01-01
    • 2020-03-11
    • 2021-03-16
    • 2015-10-07
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多