Python:用中值替换异常值
我有一个python数据框架,其中有一些异常值。我想用数据的中值来代替它们,如果这些值不存在的话Python:用中值替换异常值,python,pandas,numpy,Python,Pandas,Numpy,我有一个python数据框架,其中有一些异常值。我想用数据的中值来代替它们,如果这些值不存在的话 id Age 10236 766105 11993 288 9337 205 38189 88 35555 82 39443 75 10762 74 33847 72 21194 70 39450 70 因此,我想用剩余数据集的数据集的中值替换所有>75
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来赋值。然后你就可以填补空缺了
median = df.loc[df['Age']<75, 'Age'].median()
df.loc[df.Age > 75, 'Age'] = np.nan
df.fillna(median,inplace=True)
你也可以使用.mask,即
df["Age"] = df["Age"].mask(df["Age"] >75, median)
我最近尝试过一个更普遍的解决方案:用整个柱的中间值替换75,然后采用类似于Bharath建议的解决方案:
median = float(df['Age'].median())
df["Age"] = np.where(df["Age"] > median, median, df['Age'])
更改为Age>75
+1Glad帮助@user4943236,但在这种情况下,用作阈值的中值将受到所有值(包括异常值)的影响。
median = float(df['Age'].median())
df["Age"] = np.where(df["Age"] > median, median, df['Age'])