上周同事发来一张"惨不忍睹"的Excel:一万多行数据,日期格式五花八门(2024/7/1、2024-7-1、7月1日混着来),姓名列有的带空格有的不带,手机号有的11位有的13位(混入了座机),还有一堆"暂无""-""未知"之类的脏值。这种数据要是手动清,两个小时起步,写公式也得半小时。我用了十分钟搞定,靠的是AI。这篇分享我的完整操作过程。
数据清洗有两条路:写Excel公式/写Python脚本,或者用AI。我的判断标准是:
同事这张表属于第二种:脏得毫无规律,正适合AI。
不需要把一万行全发过去,发前50行样本就够了。我复制了表头和前50行数据,连同需求一起发给AI:
这是一份客户信息表的前50行样本,请帮我:1) 识别所有数据质量问题 2) 给出每种问题的清洗规则 3) 输出清洗后的完整数据(保持原表结构)。
AI很快返回了问题清单,比我预想的还全:
列 | 问题 | 建议清洗规则 |
|---|---|---|
日期 | 三种格式混用 | 统一为 yyyy-mm-dd |
姓名 | 前后空格、全角半角混用 | 去空格、统一半角 |
手机号 | 混入座机号、位数不对 | 校验11位且1开头,否则标记"待人工确认" |
金额 | "暂无""-"等文本混入 | 空值替换为0,非数字标记异常 |
备注 | 乱码字符 | 识别并清除 |
问题清单出来后,我让AI生成Python脚本(用pandas),而不是让它直接改Excel——这样规则可复现、可复查,一万行数据脚本跑一遍只要几秒:
import pandas as pd
import re
df = pd.read_excel("客户表.xlsx")
# 1. 日期统一
df["日期"] = pd.to_datetime(df["日期"]).dt.strftime("%Y-%m-%d")
# 2. 姓名去空格、统一半角
df["姓名"] = df["姓名"].str.strip().str.replace(" ", "")
# 3. 手机号校验
def fix_phone(x):
x = str(x).strip()
return x if re.fullmatch(r"1\d{10}", x) else "待人工确认"
df["手机号"] = df["手机号"].apply(fix_phone)
# 4. 金额清洗
df["金额"] = df["金额"].replace(["暂无", "-", "未知"], 0)
df["金额"] = pd.to_numeric(df["金额"], errors="coerce").fillna(0)脚本跑完,输出一份"清洗报告"(每个字段改了多少钱、标了多少异常),我抽查了50条记录确认无误,然后让AI把"待人工确认"的行单独导出成一个新表,方便同事人工处理。整个流程用时约10分钟。
实测下来,AI清洗最适合:
不太适合:
这次"十分钟清洗一万行"的经历让我意识到:AI在数据处理上的真正价值,不是替你写公式,而是把"看懂脏数据"这件事自动化了——它比人更快地发现格式问题、更快地生成可复用的清洗脚本。学会"给AI看样本、让它先诊断、再生成脚本、最后人工核对"这个套路,你也能把两小时的苦力活变成十分钟的轻松活。
下次再遇到"面目全非"的Excel,别急着写公式,先试试让AI看一眼。