4. 缺失值探索
在金融数据处理中,发现缺失值只是第一步。真正决定后续清洗策略的,是缺失值的分布结构:缺失是随机散落的,还是集中在某些字段、某些时间段、某些机构或产品上?不同字段的缺失是否同时发生?只有把缺失模式看清楚,才能判断应该删除、填充、插值,还是回退到业务侧补数。本节围绕缺失模式可视化、缺失比例统计、缺失相关性分析与缺失热图四个动作展开。
一、核心原理:缺失不是噪声,而是结构信号
金融数据中的缺失通常带有业务含义。例如,某只债券的久期字段缺失,可能因为该券尚未评级;某客户的收入字段缺失,可能因为其未授权数据采集;某交易日的成交量缺失,可能因为当日休市或数据源延迟。因此,缺失值探索的目标不是“把缺失找出来”,而是回答三个问题:缺失比例有多高、缺失在哪些维度聚集、缺失之间是否相关。
从统计视角看,缺失机制可分为完全随机缺失(MCAR)、随机缺失(MAR)和非随机缺失(MNAR)。在探索阶段,我们无法严格证明机制,但可以通过缺失热图和相关性矩阵观察缺失的聚集性。如果缺失呈现明显的行或列聚集,往往提示非随机缺失,此时简单均值填充会引入偏差。
关键判断:缺失比例决定“能不能用”,缺失模式决定“怎么补”。比例低且随机,可考虑删除或简单填充;比例高且聚集,应优先回退业务补数或建立缺失指示变量。
二、方法流程:从比例统计到热图定位
建议按以下顺序推进,避免一上来就画图而忽略量化基线。
- 缺失比例统计:按字段计算缺失率,并按缺失率降序排列,快速识别高缺失字段。
- 缺失模式可视化:用矩阵图或条形图展示每行每列的缺失位置,观察是否成块出现。
- 缺失相关性分析:将每个字段是否缺失编码为0/1,计算字段间缺失的相关系数。
- 缺失热图:把缺失矩阵或缺失相关系数矩阵渲染为热图,定位聚集区域。
下面是一段可直接运行的Python示例,使用pandas与seaborn完成上述动作。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 读取金融数据
df = pd.read_csv("financial_data.csv")
# 1. 缺失比例统计
missing_ratio = df.isnull().mean().sort_values(ascending=False)
print(missing_ratio)
# 2. 缺失矩阵可视化
plt.figure(figsize=(12, 6))
sns.heatmap(df.isnull(), cbar=False, cmap="viridis")
plt.title("Missing Value Matrix")
plt.show()
# 3. 缺失相关性分析
missing_corr = df.isnull().corr()
plt.figure(figsize=(10, 8))
sns.heatmap(missing_corr, annot=True, cmap="coolwarm", center=0)
plt.title("Missing Correlation Heatmap")
plt.show()
执行后应重点关注两类结果:一是缺失比例表中是否存在超过60%的字段;二是缺失热图中是否出现连续行或连续列的深色带。若某字段缺失率极高且与其他字段缺失高度相关,通常说明该字段依赖上游某个未采集的数据源。
三、案例场景:债券持仓数据缺失探索
假设我们有一份债券持仓表,包含债券代码、持仓日期、久期、评级、成交收益率、托管机构等字段。运行缺失比例统计后得到如下清单:
| 字段 | 缺失率 | 缺失特征 | 建议动作 |
|---|---|---|---|
| 久期 | 38% | 集中在未评级债券 | 按评级分组填充或标记缺失 |
| 评级 | 22% | 与久期缺失高度相关 | 回退评级源补数 |
| 成交收益率 | 9% | 随机散落 | 插值或删除少量记录 |
| 托管机构 | 3% | 集中在少数日期 | 按日期回补 |
| 债券代码 | 0% | 无缺失 | 保留为主键 |
进一步绘制缺失热图后,可以看到“久期”与“评级”两列的缺失位置几乎重合,说明这两类缺失来自同一业务环节。此时若只对久期做均值填充,会掩盖评级缺失带来的风险。更合理的做法是新增一个“评级缺失”指示变量,并在模型中保留该信号。
实战提示:缺失热图的行数很多时,可先按缺失数量对行排序,再截取缺失最多的前200行绘制,避免图像过密无法辨认。
四、误区与复盘:不要只看比例,不看结构
常见误区有三个。第一,只统计整体缺失率,忽略分时间段、分机构的缺失差异。金融数据常有季度披露、月末结算等周期性缺失,必须分组观察。第二,把缺失相关性当成因果关系。两个字段同时缺失,只说明它们共享上游依赖,不能直接推断业务因果。第三,热图配色过深或过浅导致误读,建议使用二值色或固定色阶,并标注缺失比例。
复盘要点:缺失探索的产出应是一份“缺失画像”,至少包含字段缺失率、缺失聚集维度、缺失相关字段对、以及初步处理建议。没有这份画像,后续填充策略很容易拍脑袋。
最后,把缺失探索结果固化为可复用的检查函数,每次新数据入库时自动输出缺失比例表与热图,能显著降低数据质量问题的排查成本。