2. 数据质量初探:缺失值、异常值、重复值的识别与可视化
数据质量是模型性能的基石。在进入特征筛选与模型调优之前,必须对原始数据进行系统性体检。本章聚焦三类最常见的“坏样本”污染源:缺失值、异常值与重复值,并介绍其识别方法与可视化诊断技术。
2.1 三类数据质量问题的定义与影响
| 问题类型 | 定义 | 典型影响 |
|---|---|---|
| 缺失值 | 数据集中某个或某些字段的值为空(NaN/None) | 导致统计偏差、模型无法拟合、信息损失 |
| 异常值 | 显著偏离正常分布范围的极端观测值 | 拉偏均值与方差、降低模型鲁棒性、过拟合 |
| 重复值 | 完全一致或关键字段一致的多条记录 | 造成样本权重失衡、训练集泄漏、评估指标虚高 |
实战经验:在金融风控与医疗诊断场景中,缺失率超过 50% 的特征通常直接剔除;异常值需结合业务逻辑判断,不可机械删除;重复值必须按业务主键去重,避免“伪高精度”。
2.2 缺失值识别与可视化
2.2.1 缺失值识别方法
- 统计汇总:使用
df.isnull().sum()或df.info()快速定位每列缺失数量与比例。 - 缺失矩阵:通过
missingno库的matrix()函数可视化缺失分布模式。 - 缺失热力图:展示特征间缺失值的相关性,判断是否属于系统性缺失。
2.2.2 缺失值可视化
下图展示了一个典型的缺失值矩阵可视化结构,白色条带代表缺失位置,黑色代表有效数据。通过观察条带分布,可快速判断缺失是随机出现还是集中在某些样本或特征上。
2.3 异常值识别与可视化
2.3.1 常用识别方法
- Z-Score 法:假设数据服从正态分布,|Z| > 3 视为异常。
- IQR 四分位距法:超出 [Q1 - 1.5×IQR, Q3 + 1.5×IQR] 的值为异常。
- 孤立森林:基于树模型的无监督异常检测算法,适合高维数据。
2.3.2 异常值可视化
箱线图(Boxplot)是识别异常值最直观的工具。下图展示了一个包含异常值的箱线图结构,圆圈标记代表超出上下须的极端值。
2.4 重复值识别与处理
2.4.1 重复值类型
| 类型 | 描述 | 检测方法 |
|---|---|---|
| 完全重复 | 所有字段值完全相同 | df.duplicated() |
| 关键字段重复 | 业务主键(如用户ID、时间戳)相同,其他字段可能不同 | df.duplicated(subset=['id']) |
| 近似重复 | 字段值高度相似但非完全一致(如拼写错误) | 编辑距离 / 模糊匹配 |
2.4.2 重复值可视化
对于重复值,通常使用重复比例饼图或重复样本分布柱状图进行展示。以下代码展示了如何快速统计重复值比例:
import pandas as pd
# 检测完全重复行
dup_count = df.duplicated().sum()
total_count = len(df)
dup_ratio = dup_count / total_count * 100
print(f"重复样本数: {dup_count}")
print(f"重复比例: {dup_ratio:.2f}%")
# 查看重复样本
df[df.duplicated(keep=False)].sort_values(by=df.columns.tolist()).head()
注意:在时间序列或日志数据中,重复值可能是正常业务行为(如重试机制),切勿盲目去重。务必先确认重复产生的原因,再决定保留策略。
2.5 数据质量综合诊断流程
以下流程图总结了数据质量初探的标准操作步骤,建议在每次建模前按此流程执行。
核心原则:先识别,后处理。每次处理前必须记录原始状态,保留处理日志,确保数据管线的可追溯性。