3. 缺失数据可视化:使用热力图、缺失矩阵图、条形图初步探查缺失模式

在完成缺失值统计与基础指标计算后,下一步是通过可视化手段直观地揭示缺失数据的分布规律。可视化能够帮助数据治理与风控人员快速识别缺失的集中区域、关联模式以及潜在的系统性偏差。本节将介绍三种最常用的缺失探查图形:热力图、缺失矩阵图与条形图。

3.1 三种可视化工具的核心定位

图形类型 核心用途 适用场景 输出重点
热力图 展示特征两两之间的缺失共现强度 发现缺失值之间的关联性(如A缺失时B也大概率缺失) 缺失相关性矩阵
缺失矩阵图 展示每个样本(行)在所有特征上的缺失状态 识别缺失的样本级模式(如整行缺失、分段缺失) 缺失分布图谱
条形图 展示每个特征的缺失数量或缺失率 快速对比各特征的缺失严重程度 缺失率排序
风控视角提示: 热力图能揭示“缺失传导链”——例如在信贷申请数据中,若“收入证明”缺失时“工作单位”也高度同步缺失,则可能指向同一类风险客群的信息漏报,需在后续风险传导分析中作为关联特征组处理。

3.2 缺失热力图:探查缺失共现关系

缺失热力图基于特征间的缺失相关性矩阵绘制。每个单元格的颜色深浅代表两个特征同时缺失的样本比例或相关系数。颜色越深,表示两个特征的缺失行为越同步。

  • 深色对角线:每个特征与自身的缺失相关性为1,属于正常现象。
  • 非对角线深色块:指示两个特征存在强缺失共现,需警惕系统性数据采集故障。
  • 浅色或白色区域:缺失行为相对独立,可分别处理。
关键阈值: 当两个特征的缺失共现比例超过 30% 时,建议在风险传导分析中将其归为同一“缺失风险组”,统一制定补录或插补策略。
缺失热力图结构示意(特征缺失共现矩阵) 特征A 特征B 特征C 特征D 特征E 特征A 特征B 特征C 特征D 特征E 1.00 0.82 0.45 0.12 0.05 0.82 1.00 0.78 0.38 0.09 0.45 0.78 1.00 0.15 0.03 0.12 0.38 0.15 1.00 0.18 0.05 0.09 0.03 0.18 1.00 缺失共现强度: 强 (0.8~1.0) 中强 (0.6~0.8) 中等 (0.3~0.6) 弱 (0.1~0.3) 极弱 (<0.1) 解读示例: 特征A与特征B的缺失共现系数为0.82,属于强关联。 当特征A缺失时,特征B有82%的概率也缺失,需作为风险传导链处理。

3.3 缺失矩阵图:逐样本探查缺失分布

缺失矩阵图以样本为行、特征为列,用颜色标记每个单元格的缺失状态(通常深色表示缺失,浅色表示存在)。该图能直观展示:

  • 整行缺失:某些样本在所有特征上均缺失,可能是数据采集完全失败。
  • 列向缺失带:某个特征在连续多个样本中缺失,提示采集设备或流程阶段性故障。
  • 随机散点缺失:缺失分布无明显规律,通常可假设为随机缺失(MAR或MCAR)。
风险传导预警: 若缺失矩阵图中出现明显的“列向缺失带”,且该特征在业务逻辑上属于关键风险因子(如“征信评分”),则需立即启动数据溯源,排查对应时间窗口的数据采集日志。

3.4 缺失条形图:快速对比特征缺失率

缺失条形图是最直观的缺失严重程度排序工具。横轴为特征名称,纵轴为缺失率(0%~100%),条形按缺失率从高到低排列。

缺失条形图示意(特征缺失率排序) 0% 25% 50% 75% 100% 特征E 92% 特征B 68% 特征A 45% 特征D 22% 特征C 8% 解读: 特征E缺失率高达92%,属于严重缺失,需优先处理;特征C缺失率仅8%,影响较小。

3.5 可视化探查的实操步骤

  1. 数据准备:将原始数据转换为缺失指示矩阵(0表示存在,1表示缺失)。
  2. 生成条形图:按缺失率降序排列,快速定位高缺失特征。
  3. 生成热力图:计算特征间缺失共现相关系数,识别缺失关联组。
  4. 生成缺失矩阵图:按样本顺序绘制,观察缺失的时间或批次聚集性。
  5. 交叉验证:将三种图形结果对照,确认缺失模式是否一致。
代码示例(Python伪代码):
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 1. 构建缺失指示矩阵
missing_df = data.isnull().astype(int)

# 2. 条形图:缺失率排序
missing_rate = missing_df.mean().sort_values(ascending=False)
plt.figure(figsize=(10, 6))
missing_rate.plot(kind='bar', color='#3498db')
plt.title('特征缺失率排序')
plt.ylabel('缺失率')
plt.show()

# 3. 热力图:缺失共现矩阵
plt.figure(figsize=(8, 6))
sns.heatmap(missing_df.corr(), annot=True, cmap='RdBu_r', vmin=0, vmax=1)
plt.title('缺失特征共现热力图')
plt.show()

# 4. 缺失矩阵图(使用missingno库)
import missingno as msno
msno.matrix(data, figsize=(12, 6))
plt.title('缺失矩阵图')
plt.show()

3.6 三种图形的联合决策框架

可视化发现 可能原因 建议行动
条形图显示某特征缺失率 > 70% 采集字段废弃、系统故障 确认字段是否仍需要,考虑剔除或重构
热力图显示两个特征缺失共现 > 0.8 同一数据源或同一采集环节 合并为缺失风险组,统一治理
缺失矩阵图显示连续样本块状缺失 阶段性采集中断 排查对应时间窗口的日志与运维记录
三种图形均显示随机散点缺失 随机缺失(MAR/MCAR) 可采用插补或模型忽略策略

通过上述三种可视化工具的联合使用,数据治理人员可以快速建立对缺失模式的全局认知,为后续的缺失原因溯源与风险传导分析奠定基础。