2. 数据质量初探:缺失值、异常值、重复值的识别与可视化

数据质量是模型性能的基石。在进入特征筛选与模型调优之前,必须对原始数据进行系统性体检。本章聚焦三类最常见的“坏样本”污染源:缺失值、异常值与重复值,并介绍其识别方法与可视化诊断技术。

2.1 三类数据质量问题的定义与影响

问题类型 定义 典型影响
缺失值 数据集中某个或某些字段的值为空(NaN/None) 导致统计偏差、模型无法拟合、信息损失
异常值 显著偏离正常分布范围的极端观测值 拉偏均值与方差、降低模型鲁棒性、过拟合
重复值 完全一致或关键字段一致的多条记录 造成样本权重失衡、训练集泄漏、评估指标虚高
实战经验:在金融风控与医疗诊断场景中,缺失率超过 50% 的特征通常直接剔除;异常值需结合业务逻辑判断,不可机械删除;重复值必须按业务主键去重,避免“伪高精度”。

2.2 缺失值识别与可视化

2.2.1 缺失值识别方法

  • 统计汇总:使用 df.isnull().sum() 或 df.info() 快速定位每列缺失数量与比例。
  • 缺失矩阵:通过 missingno 库的 matrix() 函数可视化缺失分布模式。
  • 缺失热力图:展示特征间缺失值的相关性,判断是否属于系统性缺失。

2.2.2 缺失值可视化

下图展示了一个典型的缺失值矩阵可视化结构,白色条带代表缺失位置,黑色代表有效数据。通过观察条带分布,可快速判断缺失是随机出现还是集中在某些样本或特征上。

缺失值矩阵可视化(Missing Matrix) 特征A 特征B 特征C 特征D 特征E 有效数据 缺失数据 观察:特征C与特征D存在集中缺失,可能为系统性缺失

2.3 异常值识别与可视化

2.3.1 常用识别方法

  • Z-Score 法:假设数据服从正态分布,|Z| > 3 视为异常。
  • IQR 四分位距法:超出 [Q1 - 1.5×IQR, Q3 + 1.5×IQR] 的值为异常。
  • 孤立森林:基于树模型的无监督异常检测算法,适合高维数据。

2.3.2 异常值可视化

箱线图(Boxplot)是识别异常值最直观的工具。下图展示了一个包含异常值的箱线图结构,圆圈标记代表超出上下须的极端值。

异常值识别:箱线图(Boxplot) 异常值 上须(Q3+1.5×IQR) Q1 中位数 Q3 下须(Q1-1.5×IQR) 超出上下须的点即为候选异常值,需结合业务确认

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 数据质量综合诊断流程

以下流程图总结了数据质量初探的标准操作步骤,建议在每次建模前按此流程执行。

数据质量诊断流程 原始数据集 缺失值检测 异常值检测 重复值检测 生成数据质量报告
核心原则:先识别,后处理。每次处理前必须记录原始状态,保留处理日志,确保数据管线的可追溯性。