我有一个 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
的中值。
我正在尝试执行以下操作:
- 用0替换,所有大于75的值
- 用中值替换 0。
但不知何故,下面的代码不起作用
df['age'].replace(df.age>75,0,inplace=True)
最佳答案
我想这就是你要找的,你可以使用 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)
关于Python:用中值替换异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45386955/