AI 数据清洗实战:去重、缺失、格式、异常

AI 数据分析

发布于 2026-11-03

读完这篇,你能把一张脏表清成能算数的表:知道五类清洗动作各自的判断标准、哪些活交给 AI 写代码、哪些判断必须自己做,以及怎么留痕让下一次能复现。

一、先立规矩:三个问题不回答就别动手

清洗不是「把看起来不对的改掉」。动手之前必须回答三件事,并且写在一张纸上:

  • 什么算重复?同一个客户下两单算重复吗?同一天同一商品两条记录算重复吗?判断依据是业务唯一键,比如订单号、客户编号加日期,不是「看起来一样」。
  • 缺失能不能补?手机号缺一位不能瞎补;金额缺失可以从「数量乘单价」反推,但要在标记列注明是推算值。
  • 异常是真异常还是录错?一单 50 万可能是大客户,也可能是多打了一个零。这类必须回原始凭证核对,不能靠算法猜。

这三条定不下来,清洗就会变成没有终点的返工:今天删掉的行,明天业务说不能删。

二、五类动作与判断标准

去重。先按业务唯一键排序,再看重复的是整行还是部分列。整行完全一致,删掉后出现的那条;关键列一致但其他列不同,比如状态更新了,保留最新时间戳那条,其余标为历史。不要用「删除重复项」一键处理,它可能连你想保留的那条一起删。

缺失。三种处理,选哪种取决于这一列会不会进计算:数值列缺失影响求和,可以补 0 或用中位数,但必须加标记列;分类列缺失可以单列一个「未知」类别;关键字段如订单号、金额、日期缺失的行,一般直接剔除,并记录剔除条数。

格式统一。日期要统一成一种写法,并且是真正的日期类型而不是文本,否则排序和透视全乱。金额要统一币种、统一单位、统一含税口径。手机号统一 11 位,去掉空格和横杠。文本里的全角半角、首尾空格、不可见字符要一次性清掉。

异常值。用分位数或业务上下限标记,不要直接删。先分三堆:明显录入错误,比如负数金额、未来日期;真实极端值,比如大客户大单;口径不一致,比如把万元当成元填进来。只有第一堆可以改,第二堆要保留并在分析时单独说明。

文本清洗。客户名里的「有限公司」「(上海)」这类后缀要不要统一,取决于你要不要按公司聚合;商品名里的规格、颜色要不要拆出来,取决于你要不要按规格看销量。文本清洗的目标是「同一实体只有一种写法」,不是「让文字变好看」。

三、AI 最合适的角色:写规则,不做判断

这是最容易用错的地方。让 AI「帮我判断哪些数据是错的」,它只能按表面模式猜,猜错的成本很高。让 AI 写一段代码去执行你已经定好的规则,它几乎不会出错。

有效提问长这样:我有一个 DataFrame df,列有 order_id、order_date(字符串,格式混杂,有 2026/10/5、2026-10-05、20261005 三种)、amount(字符串,部分带「元」和千分位逗号)、phone。请写 pandas 代码:一把 order_date 统一解析为日期类型,解析失败的放进 bad_rows;二把 amount 转为浮点;三把 phone 去掉非数字字符后校验是否 11 位,不合规的单独输出。要求保留原始列,新增 _clean 后缀的列。

注意最后那句「保留原始列、新增 _clean 列」,这是留痕的关键,下面会讲。如果你不用 Python,只会在 Excel 里做,那就把同样的话改成「请给我一列公式」,逻辑一样。

四、五个高频场景的具体做法

  • 日期多种写法:不要用查找替换逐个改,让 AI 写解析函数,解析失败的行单独导出人工看。手工改一百行可以,改一万行必然漏。
  • 金额单位混用:先找规律。同一列里出现 12.5 和 125000,很可能一部分是万元。按数量级分组抽样核对,确认后统一乘一万,并在标记列注明。
  • 一列多信息要拆:比如「2026-10-华东-001」,用固定分隔符拆成三列;没有固定分隔符就写正则,但必须先用二十行样例验证命中率,别一次性铺全表。
  • 全半角与空格:中文表格里特别常见,全角数字和半角数字会被透视分成两组。统一转半角并去首尾空格,这一步几乎每次都要做。
  • 拆列与合并:拆是为了按维度分析,比如把地址拆成省市;合并是为了做唯一键,比如客户名加手机号。两个动作都建议生成新列,不要覆盖原列。

五、留痕:让下一次能复现

清洗最大的隐形成本是「三个月后没人知道这行为什么被删了」。最低要求三条:

  1. 原始列全部保留,清洗结果放在新列,列名加 _clean 后缀。
  2. 加标记列:dup_flag、missing_flag、outlier_flag、source,其中 source 记录这条是原始、推算还是人工修正。
  3. 版本命名:orders_raw_20261103.xlsx 改成 orders_clean_v1_20261103.xlsx。日期写生成日,不要写「最终版」「最终版2」。

如果清洗是用代码做的,把脚本和输入文件放同一目录,脚本头部写清输入输出文件名和规则说明。下次换一批数据,改个文件名就能重跑。

六、脱敏红线

把表发给任何在线工具之前,先处理三类字段:客户名换成 C001 这类代号;手机号与身份证中间位打码或直接删除;金额如有必要按固定系数缩放,结论仍成立。

另外两个容易忽略的点:表头里可能带内部项目代号,隐藏列和批注也可能有信息,导出前检查一遍。企业数据优先用可以关闭「用于模型训练」的版本,涉密数据不要进公共对话框。

七、清洗完成后的三分钟自检

  1. 总行数:清洗前多少、清洗后多少、删了多少、为什么删。三个数字对不上,就是有环节漏了。
  2. 关键列空值率:清洗后应该接近 0,如果还有 5% 以上,说明规则没覆盖全。
  3. 抽样十行:随机抽十条记录,人工看一眼原始值和清洗值,确认没有把「上海市浦东新区」清成「上海」这种丢信息的操作。
  4. 重算一个总数:用清洗后的表算一个总数,和业务方手里的数字对一下,差异超过 1% 就要查。

清洗做完,分析就快了一半。公式和透视的用法可以接着看用 AI 做 Excel 分析,把表交给 WorkBuddy 处理的流程见WorkBuddy 数据分析,更多工具在资源库。截至 2026-11,各产品对上传文件大小与格式的限制不同,用前以官方说明为准。

数据清洗AI 清洗数据pandas