4. 数据准备与预处理:多源系统整合与清洗
精算赔付率尖峰告警的准确性高度依赖底层数据的质量。本章将系统讲解如何将保单、理赔、财务三大核心系统的异构数据整合为统一分析视图,并完成缺失值处理、异常值识别以及时间粒度聚合,为后续模型构建奠定可靠基础。
4.1 数据源特征与整合策略
三大业务系统的数据在结构、更新频率和业务含义上存在显著差异,整合前需明确各系统定位:
| 系统 | 核心字段 | 更新频率 | 整合关键点 |
|---|---|---|---|
| 保单系统 | 保单号、险种、起保/终保日期、保额、保费 | 实时/日增 | 以保单号为唯一键,关联在保状态 |
| 理赔系统 | 报案号、保单号、出险日期、赔付金额、结案状态 | 日增/批量 | 按保单号与保单系统左连接,注意一单多赔 |
| 财务系统 | 交易流水号、保单号、收支类型、金额、记账日期 | 日终批量 | 区分已赚保费与未赚保费,匹配会计期间 |
整合原则:以保单号作为跨系统关联主键,理赔与财务数据按保单号聚合后左连至保单主表,避免因一对多关系导致数据膨胀失控。
4.2 数据清洗:缺失值与异常值处理
原始数据中常见三类质量问题,需按优先级依次处理:
- 缺失值处理
- 关键字段(保单号、出险日期、赔付金额)缺失 → 整行剔除并记录日志
- 非关键字段(险种描述、渠道代码)缺失 → 使用“未知”或众数填充
- 时间字段缺失 → 若无法通过关联表推算,标记为无效记录
- 异常值识别
- 赔付金额为负值或超过保额 3 倍 → 判定为录入错误,回退至业务系统确认
- 出险日期早于起保日期或晚于当前日期 → 逻辑校验后剔除
- 单日同一保单多次报案且金额相同 → 疑似重复报案,保留首条
- 格式统一
- 日期字段统一为 YYYY-MM-DD 格式
- 金额字段统一为浮点数,去除千分位分隔符
- 保单号统一转为大写字母+数字组合
实战建议:清洗逻辑应封装为可复用的 Python 函数,并在每次数据更新时自动执行,同时输出清洗报告(缺失率、异常率、剔除率)供精算师审核。
4.3 数据标准化与时间粒度聚合
完成清洗后,需将数据标准化为模型可用的格式,并按月度/周度粒度聚合以匹配告警频率。
4.3.1 标准化处理
- 数值标准化:对保额、赔付金额等连续变量进行 Z-score 标准化,消除量纲影响
- 分类编码:险种、渠道等分类变量使用 One-Hot 编码或 Label Encoding
- 时间衍生:提取出险月份、季度、是否节假日等时间特征
4.3.2 聚合到月度/周度粒度
聚合粒度直接影响告警灵敏度:月度粒度平滑噪声但延迟高,周度粒度响应快但波动大。建议同时保留两种粒度,模型训练时择优选择。
| 聚合粒度 | 聚合字段 | 聚合函数 | 适用场景 |
|---|---|---|---|
| 月度 | 赔付金额、案件数、已赚保费 | SUM、COUNT、AVG | 长期趋势分析、年度预算对比 |
| 周度 | 赔付金额、案件数 | SUM、COUNT | 尖峰告警、短期波动监测 |
# 月度聚合示例代码
import pandas as pd
# 假设 df 已清洗完毕,包含 claim_date 和 claim_amount 字段
df['claim_date'] = pd.to_datetime(df['claim_date'])
df['month'] = df['claim_date'].dt.to_period('M')
monthly_agg = df.groupby(['policy_type', 'month']).agg(
total_claim_amount=('claim_amount', 'sum'),
claim_count=('claim_amount', 'count'),
avg_claim_amount=('claim_amount', 'mean')
).reset_index()
print(monthly_agg.head())
注意:聚合前务必确认时间字段无空值,且已剔除跨期调整数据(如理赔回溯调整),否则会导致聚合结果失真。
4.4 多源数据整合流程总览
下图展示了从三大系统原始数据到最终分析表的完整处理链路:
4.5 数据质量校验清单
预处理完成后,建议逐项核对以下质量指标,确保数据可用性:
- 完整性:关键字段缺失率 < 1%,无空保单号或空赔付金额
- 一致性:保单系统与理赔系统关联后,赔付金额合计与财务系统差异 < 0.5%
- 时效性:数据截止日期与当前日期相差不超过 2 个工作日
- 唯一性:聚合后的月度/周度记录无重复主键
交付物:本章输出为两张宽表——
monthly_claim_ratio 和 weekly_claim_ratio,包含险种、时间粒度、已赚保费、赔付金额、案件数、赔付率等核心字段,可直接用于后续尖峰检测模型。