You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame中超出2倍标准差的异常值替换为NaN?

替换DataFrame中超出均值±2倍标准差的异常值为NaN

步骤1:构造示例DataFrame

先还原你提供的数据集:

import pandas as pd

data = {
    'col_1': [0.5, 0.4, 0.6, 5.6, 11.2],
    'col_2': [7, 4, 8, 32, 98],
    'col_3': [300, 340, 276, 764, 1032]
}
df = pd.DataFrame(data)

步骤2:计算每列的均值与标准差

按列统计均值和标准差,用于确定异常值范围:

col_mean = df.mean()
col_std = df.std()

步骤3:替换异常值为NaN

使用mask方法(或where方法),将超出[均值-2*标准差, 均值+2*标准差]范围的值替换为NaN:

# 计算上下边界
lower = col_mean - 2 * col_std
upper = col_mean + 2 * col_std

# 替换异常值
df_cleaned = df.mask((df < lower) | (df > upper))

最终结果

处理后的df_cleaned如下:

col_1  col_2   col_3
0    0.5    7.0   300.0
1    0.4    4.0   340.0
2    0.6    8.0   276.0
3    NaN    NaN     NaN
4    NaN    NaN     NaN

补充说明

如果之前使用mask或numpy失败,大概率是这两个原因:

  • 没有按列计算均值和标准差(若误用全局统计,会导致边界错误)
  • 逻辑运算符误用:pandas中要使用|(或)、&(且),而非Python原生的or/and

内容的提问来源于stack exchange,提问作者MAtennis9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:45:05