第4章 数据采集与标准化:数据来源、数据清洗规则、标准化公式

适用场景

本流程适用于以下场景:

  • 从多个异构系统(CRM、ERP、用户行为日志、第三方API、CSV/Excel导出、数据库)采集原始评分数据时,需统一数据口径与格式。
  • 原始数据存在缺失值、重复记录、异常值或格式不一致,需要系统化清洗后才能输入评分模型。
  • 不同量纲/量级的指标(如用户月活量 1e6 与付费率 0.03)需要通过标准化公式映射至统一评分尺度(通常为0-1或0-100)。
  • 数据保鲜要求高、更新频率快(每日/每周),需要可重复执行的数据管道。

前置条件

  • 已确定评分模型所需的所有数据字段(见第3章《指标池定义》)及每个字段的采集源、采集频率。
  • 已获得数据源访问权限(数据库只读账号、API Key、文件共享路径)。
  • 已定义数据质量基线:允许的最大缺失率、重复率、异常值比例。
  • 环境依赖:Python 3.8+ (推荐)或等效ETL工具(如Apache NiFi、Talend),并安装pandas、numpy、scikit-learn。

操作步骤

  1. 确定数据来源清单:按字段编制 data_source_map.xlsx,包含字段名、来源系统、获取方式(SQL查询/API接口/文件导入)、表名/路径、调度频率。
  2. 执行数据采集:依清单用统一ETL脚本抽取原始数据,保存至 raw/ 目录,文件名含时间戳和来源标识。
  3. 数据清洗:
    • 去重:基于联合主键(如 user_id + date)删除重复行,保留最近时间戳记录。
    • 缺失值处理:连续变量用中位数/均值填充,分类变量用众数填充或单独编码为“未知”。
    • 异常值检测:使用IQR方法或Z-score标记并替换为上下边界(如 Q1 - 1.5*IQR 到 Q3 + 1.5*IQR)。
    • 格式统一:日期统一为 YYYY-MM-DD,字符串去空格/大小写,数值转为浮点数。
  4. 应用标准化公式:
    • 偏好某变量越大越好(如活跃天数):使用Min-Max标准化 score = (x - min) / (max - min),映射至 [0,1]。
    • 偏好某变量越小越好(如崩溃率):使用反向Min-Max score = 1 - (x - min) / (max - min)。
    • 对偏态分布(如收入):先取对数再标准化,或使用分位数标准化。
  5. 生成标准数据集:将结果写入 scored/ 目录,字段包括原始主键、各评分维度标准值、总评分(如线性加权)。
  6. 数据质量校验:核对清洗后行数、最大/最小值范围、重复率归零、缺失率低于预设阈值。
提示:建议将清洗规则和标准化参数(min/max等)持久化为JSON配置文件,方便审计和回滚。

输入输出物

类别名称格式说明
输入数据源清单Excel/CSV字段与来源映射关系
输入原始数据抽取脚本.py / .sql支持多源并行抽取
输出清洗后中间表Parquet / CSV仅含合法记录,缺失/异常处理完成
输出标准化评分表Parquet / CSV含每个字段的评分区间 [0,1] 及加权总分
输出清洗日志JSON / 文本记录删除行数、填充值、异常值替换位置

责任边界

  • 数据工程师:搭建采集管道,执行清洗与标准化脚本,输出合格数据集。
  • 数据产品经理:确认字段清洗规则(填充策略、异常阈值)及标准化公式的选择。
  • 算法工程师:提供标准化公式的参数(如Min-Max的 min/max 值来源可以是历史分布或业务预期期望区间)。
  • 质量保障:审核清洗日志,确认数据质量验收标准通过。

记录材料

  • data_pipeline_config.json:包含所有字段的来源、清洗规则、标准化公式。
  • raw_data_.parquet:原始数据备份,保留至少30天。
  • cleaned_data_.parquet:清洗后数据。
  • scored_data_.parquet:标准化后评分数据。
  • data_quality_report_.html:自动生成的质量报告,含缺失率、重复率、异常率、分布图。

异常处理

异常现象可能原因应对措施
采集数据全部为空或明显异常(如负数时间)源系统接口变更/过期触发告警,暂停管道,手工检查源系统文档并更新抽取脚本
缺失率超过15%阈值源系统部分字段未生成/网络超时改用中位数填充,并在清洗日志中标记为高风险字段,通知产品经理确认
标准化后评分超出 [0,1] 范围Min或Max值设定错误(如测试数据混入了生产分布)重新计算全局 min/max,或使用分位数标准化的版本
新字段出现但未在配置中注册源系统结构变更自动忽略未知字段,并发送警告给数据产品经理,以便后续迭代扩展评分模型

验收标准

  • ① 数据完整度:最终标准数据集行数 >= 原始应采行数 × 95%(允许5%损耗,由清洗规则排除)。
  • ② 重复率:清洗后重复行数为0。
  • ③ 缺失率:每个字段缺失率 < 5%(超过则视为失败并回滚,改用历史分布填充)。
  • ④ 标准化范围:每个评分字段的值域严格落在 [0, 1] 内,偏差 < 0.001(浮点误差可接受)。
  • ⑤ 可追溯性:清洗日志JSON记录了每一处替换/删除的原始值和目标值,且与最终数据集一一对应。
  • ⑥ 执行时长:全流程(采集+清洗+标准化)不超过预设SLA时间(如 30 分钟 / 百万行数据)。
数据采集与标准化流程 多数据来源 统一采集 原始数据 数据清洗 去重/缺失/异常/格式 标准化公式 Min-Max / 反向 / 对数 标准数据集 评分 [0,1] 质量校验 关键配置持久化 • 清洗规则 → JSON配置文件 • 标准化参数 → 数据库/配置中心 • 每个节点均生成日志以备审计