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

如何在pandas中移除前4个异常值?请求技术协助

数据异常值过滤解决方案(针对4个异常值)

常用异常值检测方法:四分位数法(IQR)

这是识别离群点的经典方法,适合大多数数值型数据场景,能精准定位你提到的4个异常值。

实现步骤

  • 计算数据的25%分位数(Q1)和75%分位数(Q3)
  • 计算四分位距:IQR = Q3 - Q1
  • 异常值判定范围:低于Q1 - 1.5*IQR 或 高于Q3 + 1.5*IQR的数值
  • 过滤掉落在该范围外的异常值

Pandas 代码实现(适用于表格数据)

import pandas as pd

# 读取你的数据(替换为实际数据路径或加载方式)
df = pd.read_csv("your_dataset.csv")

# 指定目标列(替换为你要处理的列名)
target_col = "your_column_name"

# 计算四分位数与IQR
q1 = df[target_col].quantile(0.25)
q3 = df[target_col].quantile(0.75)
iqr = q3 - q1

# 设定异常值上下边界
lower_limit = q1 - 1.5 * iqr
upper_limit = q3 + 1.5 * iqr

# 过滤异常值,保留正常数据
filtered_df = df[(df[target_col] >= lower_limit) & (df[target_col] <= upper_limit)]

# 验证结果:查看过滤后的数据行数变化,确认4个异常值已移除
print(f"原数据行数:{len(df)},过滤后行数:{len(filtered_df)}")

NumPy 代码实现(适用于数组数据)

import numpy as np

# 示例数据(替换为你的实际数据数组)
data = np.array([12, 15, 18, 21, 105, 24, 27, 112, 30, 33, 120, 36, 130])

# 计算四分位数与IQR
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1

# 设定异常值上下边界
lower_limit = q1 - 1.5 * iqr
upper_limit = q3 + 1.5 * iqr

# 过滤异常值
filtered_data = data[(data >= lower_limit) & (data <= upper_limit)]

print("过滤后的数据:", filtered_data)

备选方案:标准差法

如果你的数据近似正态分布,可采用3倍标准差规则判定异常值:

import pandas as pd

df = pd.read_csv("your_dataset.csv")
target_col = "your_column_name"

mean_val = df[target_col].mean()
std_val = df[target_col].std()

filtered_df = df[(df[target_col] >= mean_val - 3*std_val) & (df[target_col] <= mean_val + 3*std_val)]

注意事项

  • 若之前ChatGPT的代码无法运行,大概率是数据格式不匹配、列名错误或方法不适配你的数据分布,可先检查数据类型、列名拼写,再尝试上述方法。
  • 如果是业务场景定义的异常值(如特定阈值),直接替换上下边界为业务规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:48:24