Python:用中值替换异常值

新手上路,请多包涵

我有一个 python 数据框,其中有一些离群值。如果这些值不存在,我想用数据的中值替换它们。

 id         Age
10236    766105
11993       288
9337        205
38189        88
35555        82
39443        75
10762        74
33847        72
21194        70
39450        70

所以,我想用剩余数据集的数据集的中值替换所有> 75的值,即 70,70,72,74,75 的中值。

我正在尝试执行以下操作:

  1. 替换为0,所有大于75的值
  2. 用中值替换 0。

但不知何故,下面的代码不起作用

df['age'].replace(df.age>75,0,inplace=True)

原文由 user4943236 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 604
2 个回答

我想这就是你要找的,你可以使用 loc 来赋值。然后你可以填充nan

 median = df.loc[df['Age']<75, 'Age'].median()
df.loc[df.Age > 75, 'Age'] = np.nan
df.fillna(median,inplace=True)

您也可以在一行中使用 np.where

 df["Age"] = np.where(df["Age"] >75, median,df['Age'])

您也可以使用 .mask 即

df["Age"] = df["Age"].mask(df["Age"] >75, median)

原文由 Bharath M Shetty 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题