【发布时间】:2021-09-27 08:57:19
【问题描述】:
我有一些带有异常值的熊猫系列。这是一些模拟数据:
df = pd.DataFrame({'col1': [1200, 400, 50, 75, 8, 9, 8, 7, 6, 5, 4, 6, 6, 8, 3, 6, 6, 7, 6]})
我想用平均值替换异常值,即与平均值 >= 3 标准差的值。
【问题讨论】:
我有一些带有异常值的熊猫系列。这是一些模拟数据:
df = pd.DataFrame({'col1': [1200, 400, 50, 75, 8, 9, 8, 7, 6, 5, 4, 6, 6, 8, 3, 6, 6, 7, 6]})
我想用平均值替换异常值,即与平均值 >= 3 标准差的值。
【问题讨论】:
我们开始吧:
thrs = df['col1'].mean() + 3 * df['col1'].std()
df.loc[df['col1'] >= thrs, 'col1'] = df['col1'].mean()
【讨论】:
std_dev = df["col1"].std()
mean = df["col1"].mean()
df["col1"] = np.where(df.col1 >= (mean + 3*std_dev), mean, df.col1)
【讨论】: