如何在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
相关产品推荐
相关产品推荐

