如何读取指定CSV列、剔除异常值并重新生成CSV文件
嘿,我来帮你把这个异常值处理+保存的完整流程搞定!你已经开了个好头,现在把剩下的步骤补全,还能保留原数据的其他列哦~
完整实现代码
# 导入需要的库 import pandas as pd import numpy as np import matplotlib.pyplot as plt # 1. 读取整个CSV文件(保留所有列,仅处理Last列) df = pd.read_csv('trainning_data.csv') # 2. 提取Last列用于异常值分析 last_column = df['Last'] # 3. 计算四分位数和异常值判定阈值 Q1 = np.percentile(last_column, 25) Q3 = np.percentile(last_column, 75) IQR = Q3 - Q1 # 四分位距 # 行业通用异常值范围:小于Q1-1.5*IQR 或者 大于Q3+1.5*IQR lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR # 4. 过滤掉Last列存在异常值的行,保留正常数据 filtered_df = df[(df['Last'] >= lower_bound) & (df['Last'] <= upper_bound)] # 5. 保存处理后的新CSV文件(可自定义文件名) filtered_df.to_csv('cleaned_training_data.csv', index=False) # 可选:可视化处理前后的对比,验证效果 plt.figure(figsize=(12, 5)) plt.subplot(1, 2, 1) plt.plot(last_column, 'o') plt.title('Original Last Column Data') plt.subplot(1, 2, 2) plt.plot(filtered_df['Last'], 'o') plt.title('Cleaned Last Column Data') plt.tight_layout() plt.show()
关键说明
- 我保留了原数据的所有列(A-F列完全不动),只过滤掉Last列异常的行,生成的新CSV结构和原文件一致,仅剔除异常数据行。
- 异常值判定用的是行业通用的1.5倍IQR规则,如果你的业务有特殊要求,可以调整
1.5这个系数(比如用3倍IQR做更严格的筛选)。 to_csv时加了index=False,避免把Pandas的索引列写入CSV,保持输出文件的干净整洁。
内容的提问来源于stack exchange,提问作者Triều Hải
相关产品推荐
相关产品推荐

