脏数据为什么这么多
基层居民信息表的来源通常是:网格员手工录入、旧的系统导出、纸质表格再录入、微信里发来的表格再复制。每一种来源都会带来特定的错误。
常见的三类:
身份证号
- 15 位老号与 18 位新号混在一起
- 号码前面或后面多了空格
- 校验位算错(录入手误)
- 单元格被 Excel 当成数字,末位变成 000 或者显示成科学计数法
手机号
- 中间有空格、短横线、括号:
138 0000 0000、138-0000-0000 - 前面带
+86、86、0 - 位数不对
房号
3-2-501、3栋2单元501、3号楼2单元501室、3-2-5-0-1- 有的带社区前缀,有的不带
清洗前的准备:身份证列必须先当文本处理
这是最容易踩的坑。 如果身份证号被 Excel 存成数字类型,超过 15 位后 Excel 会用科学计数法显示,末位精度还会丢失——你的数据在打开表格的那一刻就已经损坏了。
正确做法:
- 录入或粘贴身份证号前,先把该列格式设为“文本”
- 如果已经损坏(末位变成 0),只能从原始来源重新导入
- 从软件导出的清洗结果,身份证列已经是文本格式,不会再被 Excel 破坏
第一步:清洗身份证号
用「数据清洗」的身份证清洗器,它会做四件事:
- 去空格与全角字符
- 15 位统一升为 18 位(按国家标准换算规则)
- 校验位验证——按 ISO 7064 算法算一遍,算不对的挑出来
- 格式统一(大写 X、无分隔符)
校验通过后,勾选「自动派生」可以得到:
| 派生字段 | 依据 |
|---|---|
| 出生日期 | 第 7-14 位 |
| 性别 | 第 17 位(奇男偶女) |
| 年龄 | 出生日期与当前日期计算 |
| 出生地 | 前 6 位行政区划码 |
关于出生地的准确性:行政区划码会随区划调整而变化,历史号码对应的可能是旧区划。用于正式上报时建议人工核对。
第二步:清洗手机号
勾选手机号清洗器,处理逻辑:
- 去掉所有空格、短横线、括号
- 去掉
+86/86/ 前缀0 - 校验号段是否合法(是否为有效运营商号段)
- 位数校验(应为 11 位)
第三步:清洗房号
房号的“标准写法”取决于你的上报要求。常见的两种规范:
- 分段式:
3-2-501(楼栋-单元-房号) - 描述式:
3号楼2单元501室
选定一种后,把其他写法统一过来。注意保留原始写法作为备注列,方便核对。
输出结果怎么看
清洗完成后得到两个 Sheet:
干净数据表:清洗通过的全部记录,直接可用于上报。
问题数据表:没通过校验的记录,每条都标明问题类型(身份证校验失败 / 手机号位数不对 / 房号无法识别)。这张表的价值在于——你可以直接把它发给对应网格员要求重报,不用自己在一千行里逐条找错。
一条实用建议
清洗前先做一次去重检查。同一个居民在多个表格里出现、同一个身份证号录入了两次,都会让后续统计数字虚高。用「提取唯一值」或「按列去重」,按身份证号去重。
常见问题
15 位升 18 位会自动加校验位吗? 会,按国家标准换算规则计算并补齐。
派生的年龄准吗? 按出生日期与运行当天计算周岁,是准确的。但如果身份证上的出生日期本身录错了,派生结果也跟着错——这也是为什么校验位验证很重要。
清洗会改动原文件吗? 不会。原文件保持不动,清洗结果输出为新文件。