我们在进行数据清洗和预处理的时候,根据箱线图能发现数据有异常值:
甚至有些极端异常值直接影响后续计算:
当我们面临数据量很大,而且需要加入人的主观意愿对数据异常进行删除或保留的时候,下面代码提供了一种简便直观的操作,可以直接在原始数据表中把异常值标记出来:
import pandas as pd
import openpyxl
from openpyxl.styles import PatternFill
# 读取CSV文件
file_path = r'输入你的工作路径\输入你的数据.csv'
df = pd.read_csv(file_path)
def highlight_outliers(val):
try:
if float(val) < lower_bound or float(val) > upper_bound:
return 'background-color: red'
except:
pass
return ''
# 定义函数来标记异常值
def highlight_outliers(s):
Q1 = s.quantile(0.25)
Q3 = s.quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
return ['background-color: red' if x < lower_bound or x > upper_bound else '' for x in s]
df_styled = df.style.apply(highlight_outliers, axis=0)
output_file_path = r'你的存储路径\文件名.xlsx'
df_styled.to_excel(output_file_path, engine='openpyxl', index=False)
然后有“异常”的数据就直观地标在下面,可以根据自己的需求酌情筛选。但是,不是太离谱的数据可以酌情保留,一方面根据自己的样本量大小斟酌,另一方面可以提升模型的泛化能力。