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 清洗规则制定
清洗规则不是拍脑袋定的,而是根据你的业务场景和系统要求来定。我建议你按以下步骤来:
- 梳理必填字段:哪些字段不能为空?列出来
- 定义格式标准:每个字段的格式、长度、单位、允许字符是什么?写清楚
- 确定去重逻辑:以哪个字段或哪几个字段的组合作为唯一标识?
- 制定异常处理策略:遇到脏数据,是报错、跳过、还是自动修正?
下面这张图,是我自己总结的清洗规则制定流程,你可以参考:
4.3 清洗规则示例
光说理论不行,我给你看一个实际的清洗规则表。这是我之前帮一家食品厂做的,你可以直接拿来改:
| 字段名 | 必填 | 格式要求 | 去重依据 | 异常处理 |
|---|---|---|---|---|
| 配方编号 | 是 | 字母+数字,长度8位 | 主键 | 空值报错 |
| 物料编码 | 是 | 字母+数字,长度10位 | 联合去重 | 空值报错,格式错误自动补零 |
| 用量 | 是 | 数值,保留2位小数 | — | 空值跳过,非数值报错 |
| 单位 | 是 | g/kg/L/mL 四选一 | — | 空值跳过,格式错误自动转换 |
| 版本号 | 否 | V+数字,如V1.0 | 联合去重 | 空值补默认值V1.0 |
| 备注 | 否 | 文本,长度≤200 | — | 超长截断 |
关键点:去重依据不要只用一个字段。比如「配方编号+版本号」联合去重,比单用配方编号更安全。我见过有人只用配方编号去重,结果同一个配方的不同版本被删得只剩一个,损失惨重。
4.4 避坑指南
做数据清洗,有几个坑我踩过,你千万别再踩:
- 不要一次性清洗所有数据:先抽一小批样本清洗,验证规则没问题了,再全量清洗。我曾经一次性清洗了 5000 条数据,结果规则写错了,全废了。
- 保留原始数据备份:清洗前,先把原始数据复制一份。万一清洗规则有问题,你还能回退。
- 清洗规则要文档化:不要只记在脑子里。写下来,下次用的时候直接调,也方便团队其他人理解。
- 自动化清洗要谨慎:能用脚本自动清洗的尽量自动,但一定要加人工复核环节。机器不是万能的。
我的经验:清洗规则不是一次定死的。随着业务变化,脏数据的类型也会变。我建议每季度 review 一次清洗规则,看看有没有新的脏数据模式出现。
嗯,数据清洗这块,说白了就是「磨刀不误砍柴工」。你花 10 分钟把数据洗干净,导入可能只需要 1 分钟。你图省事直接导入,后面可能要花 1 小时去排查问题。这笔账,你算算看。