4、数据清洗:常见脏数据类型与清洗规则制定

数据清洗,说白了就是给导入的数据「洗澡」。我见过太多人,配方数据从 Excel 一拉,直接往系统里灌,结果灌进去的全是乱码、空行、重复项。系统不报错还好,一报错你根本不知道是哪条数据出了问题。

我个人习惯是:清洗占导入工作量的 60%。你想想看,数据干净了,后面的导入就是走个流程。数据不干净,你就是在给系统喂毒药。

4.1 常见脏数据类型

我在项目中遇到过各种各样的脏数据,总结下来,无非就三大类:空值、格式错误、重复。咱们一个一个说。

4.1.1 空值

空值不是「没有数据」,而是「不该空的地方空了」。比如配方编号、物料编码、用量比例,这些字段一旦为空,导入后系统要么报错,要么生成一条废数据。

空值类型 典型场景 后果
必填字段为空 配方编号、物料编码、版本号 导入失败或生成无效记录
数值字段为空 用量、比例、成本 计算错误或流程中断
文本字段为空 备注、单位、批次号 后续追溯困难
注意:有些系统会把空值自动补成 0 或默认值,这更危险。你明明没填用量,系统给你补个 0,生产时直接出废品。

4.1.2 格式错误

格式错误是最让人头疼的。我记得有一次,客户发来的配方表里,物料编码有的带横杠、有的不带,有的前面有零、有的没有。系统一导入,同一个物料被识别成了三个不同的物料。

常见的格式错误包括:

  • 编码格式不一致:比如物料编码「A-001」和「A001」被当成两个东西
  • 数值格式混乱:百分比写成「50%」和「0.5」,系统不认
  • 日期格式五花八门:2024-01-01、2024/01/01、01/01/2024,系统只认一种
  • 单位不统一:克、千克、g、kg 混着写
  • 多余空格或特殊字符:肉眼看不见,但系统能识别出来
我的习惯:在清洗前,先拉一份「格式规范清单」,把每个字段的格式、长度、单位、允许字符都列清楚。然后拿这份清单去对照原始数据,一条一条改。

4.1.3 重复

重复数据是最隐蔽的脏数据。你看着两行数据一模一样,但系统会当成两条记录导入。结果就是:同一个配方在系统里出现了两次,生产时不知道该用哪个。

重复数据分两种:

  • 完全重复:所有字段都一样,直接删除一条
  • 部分重复:关键字段一样,但非关键字段不同(比如备注不一样)。这种需要人工判断保留哪条

4.2 清洗规则制定

清洗规则不是拍脑袋定的,而是根据你的业务场景和系统要求来定。我建议你按以下步骤来:

  1. 梳理必填字段:哪些字段不能为空?列出来
  2. 定义格式标准:每个字段的格式、长度、单位、允许字符是什么?写清楚
  3. 确定去重逻辑:以哪个字段或哪几个字段的组合作为唯一标识?
  4. 制定异常处理策略:遇到脏数据,是报错、跳过、还是自动修正?

下面这张图,是我自己总结的清洗规则制定流程,你可以参考:

数据清洗规则制定流程 原始数据 空值检查 格式校验 去重处理 清洗完成 异常处理策略 • 报错:中断导入,人工修正 • 跳过:忽略脏数据,继续导入 • 自动修正:按规则补全/转换 • 标记:保留原值,加备注

4.3 清洗规则示例

光说理论不行,我给你看一个实际的清洗规则表。这是我之前帮一家食品厂做的,你可以直接拿来改:

字段名 必填 格式要求 去重依据 异常处理
配方编号 是 字母+数字,长度8位 主键 空值报错
物料编码 是 字母+数字,长度10位 联合去重 空值报错,格式错误自动补零
用量 是 数值,保留2位小数 — 空值跳过,非数值报错
单位 是 g/kg/L/mL 四选一 — 空值跳过,格式错误自动转换
版本号 否 V+数字,如V1.0 联合去重 空值补默认值V1.0
备注 否 文本,长度≤200 — 超长截断
关键点:去重依据不要只用一个字段。比如「配方编号+版本号」联合去重,比单用配方编号更安全。我见过有人只用配方编号去重,结果同一个配方的不同版本被删得只剩一个,损失惨重。

4.4 避坑指南

做数据清洗,有几个坑我踩过,你千万别再踩:

  • 不要一次性清洗所有数据:先抽一小批样本清洗,验证规则没问题了,再全量清洗。我曾经一次性清洗了 5000 条数据,结果规则写错了,全废了。
  • 保留原始数据备份:清洗前,先把原始数据复制一份。万一清洗规则有问题,你还能回退。
  • 清洗规则要文档化:不要只记在脑子里。写下来,下次用的时候直接调,也方便团队其他人理解。
  • 自动化清洗要谨慎:能用脚本自动清洗的尽量自动,但一定要加人工复核环节。机器不是万能的。
我的经验:清洗规则不是一次定死的。随着业务变化,脏数据的类型也会变。我建议每季度 review 一次清洗规则,看看有没有新的脏数据模式出现。

嗯,数据清洗这块,说白了就是「磨刀不误砍柴工」。你花 10 分钟把数据洗干净,导入可能只需要 1 分钟。你图省事直接导入,后面可能要花 1 小时去排查问题。这笔账,你算算看。