计算数据帧每一列中异常值的百分比

时间:2021-07-13 06:58:54

标签: python pandas dataframe types outliers

我有一个名为 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

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

1 个答案:

答案 0 :(得分:0)

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

out = myvolabserr.astype(float) > 0.1

对于百分比,使用 mean - True1 一样处理:

s = out.mean()