计算数据框每一列中异常值的百分比
Calculate percentage of outliers in each column of a dataframe
我有一个名为 myvolabserr
的数据框,我想计算每列值 >10% 的百分比。
我这样做的方式
- 检查该值是否是新数据框的离群值,该数据框由 T/F(如果值>10% 则为 T)
- 计算每列中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
任何人都可以帮助解决这个错误吗?
也许还有其他方法可以一次性计算异常值的百分比,而不是我的两步法吗?
此处不需要循环,将值转换为数字并按标量进行比较:
out = myvolabserr.astype(float) > 0.1
对于百分比使用 mean
- True
s 的处理方式类似于 1
s:
s = out.mean()
我有一个名为 myvolabserr
的数据框,我想计算每列值 >10% 的百分比。
我这样做的方式
- 检查该值是否是新数据框的离群值,该数据框由 T/F(如果值>10% 则为 T)
- 计算每列中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
任何人都可以帮助解决这个错误吗?
也许还有其他方法可以一次性计算异常值的百分比,而不是我的两步法吗?
此处不需要循环,将值转换为数字并按标量进行比较:
out = myvolabserr.astype(float) > 0.1
对于百分比使用 mean
- True
s 的处理方式类似于 1
s:
s = out.mean()