展开知识库目录

数据清洗为什么越改越乱:先冻结原始数据、字段字典和规则

数据清洗最危险的不是漏掉一个空值,而是直接覆盖原表后再也说不清改了什么。先冻结原始快照、字段字典和规则,再用可重跑过程生成分析数据。

先看无法回退的清洗现场

Excel 里改了三天异常值,导师问原始数据时已经找不回来了

学生在唯一一份 Excel 上删除重复行、统一日期、把 999 改成空值,又根据图表把几个‘离群点’改成平均数。分析结果不理想后,他想比较另一套规则,却不知道哪些单元格改过、999 原本代表缺失还是有效编码,也无法证明行数减少的原因。

可靠清洗必须可追踪、可重跑、可比较。原始数据只读保存,每次处理由脚本、查询或明确记录产生新版本;字段含义和缺失编码先进入字典,异常规则在看最终结果前定义,无法判断的记录保留原值并标记待核对。

  • 建立原始、工作和分析三层数据
  • 写出字段字典与异常规则
  • 每次清洗都能重跑并解释行数变化
先把数据分层保存

原始数据、清洗过程和分析数据承担不同职责

Raw

原始层只读

保存接收或导出的原文件、来源、时间、权限、哈希和行列数。不排序后覆盖,不手工改值;每次新导出作为新的原始快照。

Work

工作层记录变换

脚本或查询从指定原始版本读取,产生标准化字段、异常标记和清洗日志。规则变更形成新版本,不静默覆盖旧结果。

Analysis

分析层服务冻结口径

只包含当前分析需要的派生字段和纳入样本,绑定代码、字段字典和生成日期;论文数字从该版本统一生成。

没有字典就不要猜列名

先写字段含义,再讨论空值、范围和异常

字段字典列要记录什么示例为什么需要
变量身份原字段名、标准名、含义、来源表visit_date:本次实际访视日期防止同名异义或一义多名
类型与格式字符、整数、小数、日期、分类及格式YYYY-MM-DD避免软件自动猜测和静默转换
单位与时间测量单位、时区、观察窗口和时间点体重 kg;基线后 12 周避免单位混用和时间错位
编码与缺失类别标签、特殊编码和缺失原因-9=拒答,-8=不知道不能把不同缺失原因都改成 0
允许范围理论范围、业务规则和条件范围结束日期不得早于开始日期区分不可能值与罕见但真实值
主键与关系唯一标识、复合键、表间关系和重复定义participant_id + visit_no先定义重复,才能安全去重
按规则生成新版本

清洗不是把数据变漂亮,而是把问题显式化并留下处理依据

  1. 01

    盘点并冻结输入

    记录文件名、来源、导出时间、大小、哈希、工作表、编码和行列数;设置原始层只读,并确认备份位置。

  2. 02

    运行结构检查

    检查列名、类型、主键、重复、缺失模式、类别水平和表间关系,先输出报告,不立即修改。

  3. 03

    逐类定义规则

    分别处理格式标准化、缺失编码、精确重复、逻辑冲突和范围异常。每条规则写判断条件、动作、理由和是否需要人工复核。

  4. 04

    保留原值和异常标记

    重要变换新增标准化列;删除或更正时保留记录 ID、原值、新值、规则编号和处理状态。无法确认的值不自动填补。

  5. 05

    先在小样本试跑

    选正常、边界、缺失和异常样例检查规则,确认不会误删;再运行全量并输出每条规则命中数量。

  6. 06

    对账并冻结分析版

    核对输入输出行数、唯一键、合并未匹配、关键分布和抽样原始行。批准后生成带版本号的分析数据,不在分析过程中手改。

让每次清洗都能重跑

最少保留输入、规则、输出和对账四类记录

清洗运行清单

数据版本与规则记录

运行编号:
运行日期与执行人:
输入文件:路径 / 版本 / 哈希 / 行列数
字段字典版本:
清洗脚本与环境:提交号 / 语言 / 包版本 / 命令

规则编号:
判断条件:
处理动作:保留并标记 / 标准化 / 更正 / 排除 / 人工复核
理由与依据:
命中记录数:
异常清单位置:

输出文件:路径 / 版本 / 哈希 / 行列数
主键重复数:
合并未匹配数:
与上一版差异:
抽查记录:记录 ID / 原值 / 输出值 / 核对人
批准用于分析:是 / 否 / 待确认
结果异常时从数据链路排查

不要先把异常值删掉,先确认它是录入错误、规则错误还是真实极端情况

清洗后样本量突然减少

原因
去重键错误、连接方式改变或多个条件连续过滤。
怎么改
按步骤输出行数和被排除记录 ID,定位第一次下降,不从最终文件猜。

日期或数值出现大量空值

原因
解析格式、地区设置、单位或特殊缺失编码没有在转换前处理。
怎么改
回到原字符串,列出转换失败样例和模式,修规则后整批重跑。

同一规则每次命中数量不同

原因
输入版本、运行环境、排序依赖或随机过程没有锁定。
怎么改
核对哈希、版本和运行命令,消除隐式状态并保存会话信息。

异常值处理后结论大幅变化

原因
处理规则可能依赖结果,或极端值对估计确有影响。
怎么改
保留主分析与预定义敏感性分析,报告规则和差异,不挑选更好看的结果。
本篇依据

数据文档从收集时开始,不能等论文写作时再补