我有一个包含 40 列和许多记录的 DataFrame df。
df:
User_id | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 |...| Col39
对于除 user_id 列之外的每一列,我想检查异常值并删除整个记录,如果出现异常值。
对于每一行的离群值检测,我决定简单地使用第 5 个和第 95 个百分位数(我知道这不是最好的统计方法):
编码我到目前为止所拥有的:
P = np.percentile(df.Col1, [5, 95])
new_df = df[(df.Col1 > P[0]) & (df.Col1 < P[1])]
问题:如何在不手动执行此操作的情况下将此方法应用于所有列( User_id
除外)?我的目标是获得一个没有异常值记录的数据框。
谢谢!
原文由 Mi Funk 发布,翻译遵循 CC BY-SA 4.0 许可协议
初始数据集。
首先删除
User_id
列然后,计算百分位数。
接下来根据计算的百分位数过滤值。为此,我按列使用
apply
就是这样!将
User_id
带回来。最后,具有
NaN
值的行可以像这样简单地删除。检查结果
如何生成测试数据集