2. 金融数据基础
在金融数据分析中,缺失值与异常值处理并不是孤立的清洗步骤,而是建立在对数据类型、数据来源和数据质量维度充分理解之上的系统性工作。只有先明确“数据长什么样、从哪里来、质量如何衡量”,才能判断某个空值是应该填补还是删除,某个极端值是错误还是真实信号。
一、金融数据类型:结构化与非结构化的分层理解
金融数据按形态可分为结构化、半结构化和非结构化三类。结构化数据以表格形式存在,字段固定、类型明确,例如股票日行情表、财务报表、交易流水;半结构化数据带有标签但结构灵活,如JSON格式的接口返回、XML报文;非结构化数据则包括研报PDF、新闻文本、电话录音、图像凭证等。
按业务属性,金融数据又可划分为行情数据、交易数据、基本面数据、衍生指标、宏观数据和文本舆情数据。行情数据具有高频、时间戳严格、连续性强等特点;交易数据强调账户、金额、方向、状态等字段的完整性;基本面数据更新频率低但字段多、口径复杂;文本舆情数据则天然存在噪声大、边界模糊的问题。不同类型的数据,其缺失与异常的成因和判定标准差异显著。
二、常见数据源及其质量特征
金融数据来源多样,常见包括交易所与登记结算机构、行情供应商、银行与券商核心系统、第三方数据服务商、公开政府统计网站以及网络爬虫采集。不同来源的数据在时效性、准确性、一致性和覆盖度上各有短板。
| 数据源 | 典型内容 | 常见质量问题 |
|---|---|---|
| 交易所/登记结算 | 行情、成交、持仓 | 停牌导致空缺、复权口径差异 |
| 行情供应商 | Level-1/Level-2快照 | 丢包、时间戳漂移、字段截断 |
| 银行/券商核心系统 | 账户、交易、余额 | 状态未同步、金额精度丢失 |
| 第三方数据商 | 财务、评级、舆情 | 口径不统一、更新延迟、重复记录 |
| 公开统计网站 | 宏观、行业指标 | 发布滞后、修订频繁、单位不一致 |
三、数据质量维度:判断缺失与异常的标尺
数据质量通常从完整性、准确性、一致性、时效性、唯一性和有效性六个维度衡量。完整性关注字段是否为空、记录是否缺失;准确性关注数值是否真实反映业务事实;一致性关注同一指标在不同表、不同系统间是否统一;时效性关注数据是否在预期时间内到达;唯一性关注是否存在重复主键;有效性关注取值是否落在合理业务范围内。
缺失值和异常值的判定,本质上就是这些质量维度在具体字段上的落地。例如,某股票收盘价为空,属于完整性问题;某笔交易金额为负数但业务上不允许,属于有效性问题;同一客户在两张表中风险等级不同,属于一致性问题。明确维度后,处理策略才有依据。
四、缺失与异常的定义、成因与影响
缺失值指在应记录的位置没有有效取值,常见形式包括NULL、空字符串、特殊占位符(如-999、N/A)以及记录整体未到达。其成因可分为机械缺失和业务缺失:机械缺失来自采集失败、接口超时、字段映射错误;业务缺失则可能是停牌、未披露、客户未填写等真实状态。
异常值指明显偏离整体分布或业务逻辑的取值。它既可能是错误,例如价格小数点错位、金额单位从元误写为万元;也可能是真实极端事件,例如市场闪崩、大额赎回。若不加区分地删除,可能丢失关键风险信号;若不加处理地保留,又会扭曲统计量和模型参数。
五、案例场景:从一条行情记录看问题链路
假设某日行情表中,某股票收盘价字段为空,成交量为0,而当日该股票实际正常交易。排查发现,上游行情供应商在14:57的推送中发生丢包,导致最后三分钟快照缺失,下游按“最后一笔快照”生成日线时收盘价为空。这里缺失的根因是采集链路问题,而非股票停牌。
若直接删除该行,会丢失当日真实交易信息;若用前一日收盘价填补,会低估波动;若用当日均价填补,又可能偏离收盘集合竞价结果。更合理的做法是:先标记为“采集缺失”,回溯供应商原始文件补录;若无法补录,则按业务规则选择插值并记录数据血缘。这个案例说明,缺失处理必须结合数据源、业务状态和下游用途综合判断。
-- 示例:识别行情表中的疑似缺失与异常
SELECT
trade_date,
stock_code,
close_price,
volume,
CASE
WHEN close_price IS NULL THEN '缺失-价格为空'
WHEN close_price <= 0 THEN '异常-价格非正'
WHEN volume < 0 THEN '异常-成交量为负'
WHEN close_price > LAG(close_price) OVER (
PARTITION BY stock_code ORDER BY trade_date) * 1.5
THEN '异常-单日涨幅过大'
ELSE '正常'
END AS quality_flag
FROM market_daily
WHERE trade_date = '2024-06-28';
六、常见误区与复盘要点
- 误区一:把缺失一律当错误。停牌、未披露等业务缺失是真实状态,应保留并标记,而非强行填补。
- 误区二:用全局均值填补所有字段。不同股票、不同行业、不同时间段的均值差异很大,全局填补会抹平结构信息。
- 误区三:异常值直接删除。极端值可能是风险事件信号,应先判定成因,再决定截断、分箱或保留。
- 误区四:忽略数据血缘。不记录缺失与异常的处理过程,后续无法复现和审计,也难以定位问题源头。
掌握金融数据类型、常见数据源和数据质量维度,是后续缺失值填补与异常值检测的认知基础。只有把数据放回业务语境中理解,才能避免“为了清洗而清洗”,让数据治理真正服务于金融分析与决策。