数据清洗是影响AI模型性能的核心环节,需针对性处理缺失值、统一格式、检测异常值、去重及逻辑校验,并嵌入持续监控的数据管道。

数据清洗不是模型训练前的“准备工作”,而是直接影响AI模型性能的核心环节。脏数据会让再复杂的算法也输出不可靠结果,而干净、结构合理、语义清晰的数据,能让简单模型也达到不错的效果。
识别并处理缺失值
缺失值是数据清洗中最常见问题。不能一概用均值或0填充,需结合字段含义判断:
- 数值型字段:如“用户年龄”缺失,可考虑用中位数(比均值更抗异常值干扰);若缺失集中在某类用户群体(如新注册用户未填年龄),可新增“年龄未知”二值特征
- 类别型字段:如“城市”为空,直接填充“未知”比删除整行更稳妥,尤其当缺失比例低于5%时
- 时间序列或ID类字段:缺失通常意味着数据采集异常,建议先检查上游日志,而非盲目填充
统一格式与标准化编码
同一信息多种写法会误导模型学习错误模式。例如“iPhone13”、“iphone 13”、“IPHONE-13”在字符串层面完全不同,但语义一致。
- 用str.lower().strip().replace()统一大小写和空格,再映射到标准品类(如通过字典或正则归一化)
- 对地址、电话、邮箱等字段,用现成库(如phonenumbers、email-validator)做格式校验和标准化
- 避免直接用pandas.get_dummies()做独热编码——高基数类别(如商品ID)会导致维度爆炸,优先考虑目标编码或频次编码
检测并修正异常值
异常值不等于错误值,需区分是录入错误、业务真实极端情况,还是传感器漂移。盲目删除可能丢失关键信号。
立即学习“Python免费学习笔记(深入)”;
- 对连续变量,用IQR(四分位距)比固定阈值更稳健:剔除小于Q1 − 1.5×IQR或大于Q3 + 1.5×IQR的点
- 对时序数据,用滑动窗口统计(如过去7天均值±2倍标准差)动态识别突变,比全局阈值更合理
- 保留异常标记列(如is_outlier_amount),让模型自己学是否关注这些样本
去重与逻辑一致性校验
重复样本可能来自多源合并或爬虫重采,而逻辑矛盾(如“注册时间晚于下单时间”)暴露流程漏洞。
- 用df.duplicated(subset=['user_id', 'order_id'], keep='first')查业务主键级重复,而非全字段
- 添加跨字段断言:如(df['order_time'] >= df['register_time'])应恒为True,否则定位ETL逻辑缺陷
- 对用户行为日志,检查事件顺序合理性(如“加购”应在“下单”之前),用pandas.groupby().apply()逐用户验证
清洗不是一次性的预处理动作,而是要嵌入数据管道,持续监控分布偏移、缺失率变化和新出现的脏模式。模型上线后,清洗规则也要随业务演进迭代更新。










