前两天有个朋友找我帮忙,说他有一份几万行的销售数据,格式乱得要命——日期有的写"2024-01-15",有的写"2024.1.15",还有直接写"1月15号"的;电话号码有的带空格,有的带横线,有的直接一串数字;更离谱的是客户名称那列,同一个客户居然有好几种写法,"张三公司"、"张三有限公司"、"张三商贸有限公司"……
他跟我说:"这数据我得手动整理一天,眼睛都要瞎了。"
我说你放着别动,我来给你演示一下怎么用 Claude Code 快速搞定这种烂数据。
先说说为啥用 Claude Code 干这个
之前处理 Excel 数据,我一般用两种方法:
手动改——效率低,容易出错,改到后面脑子都麻木了。
写 Python 脚本——得先打开编辑器,想想用什么库、怎么写逻辑,写完还得调试。简单的清洗任务,折腾脚本的时间可能比手动改还长。
后来我发现 Claude Code 特别适合干这种活。它能直接读取你的 Excel 文件,帮你分析数据结构,然后写脚本处理。关键是——你只要用大白话描述你想干嘛,它就能帮你写代码、跑代码、看结果,不满意再改,整个过程不用你碰键盘写一行代码。
实战 Demo:清洗一份乱七八糟的销售数据
我用一份模拟的销售数据来演示。这份数据有 5000 行,典型的"野数据",啥格式问题都有。
第一步:把数据丢给 Claude Code
把 Excel 文件放到工作目录,然后启动 Claude Code,直接说:
帮我看看 sales_data.xlsx 这个文件,分析一下数据质量有什么问题
它读取完给你一份数据质量报告,大概是这样:
日期列有 3 种不同格式,还有 23 个空值,5 个明显错误的日期(比如 2024-13-01 这种) 电话号码格式乱七八糟,带空格的、带横线的、纯数字的都有,127 个长度不对 客户名称那列,56 个疑似重复客户,名称相似但写法不一样,34 个空值 金额列有 12 个负数(可能是退货),8 个超过 500000 的异常大值 总行数 5000,完全重复的行有 89 个
看到这份报告,你就知道问题在哪了。接下来让它帮你逐个处理。
第二步:统一日期格式
我说:
把日期列统一成 yyyy-mm-dd 的格式,空值标记为"未知日期"
它写了一段代码帮我处理:
import pandas as pd
df = pd.read_excel('sales_data.xlsx')
defnormalize_date(date_str):
if pd.isna(date_str):
return'未知日期'
date_str = str(date_str).strip()
# 2024.1.15 -> 2024-01-15
if'.'in date_str:
parts = date_str.split('.')
returnf"{parts[0]}-{parts[1].zfill(2)}-{parts[2].zfill(2)}"
# 1月15号 -> 2024-01-15
if'月'in date_str:
import re
match = re.search(r'(\d+)月(\d+)号', date_str)
if match:
returnf"2024-{match.group(1).zfill(2)}-{match.group(2).zfill(2)}"
return date_str
df['order_date'] = df['order_date'].apply(normalize_date)
df.to_excel('sales_data_cleaned.xlsx', index=False)
print("日期格式已统一")
然后直接跑这段代码,把结果保存出来。
第三步:标准化电话号码
我说:
把电话号码统一成纯11位数字,去掉所有空格和横线,长度不对的标记为"无效号码"
它给我写:
import pandas as pd
import re
df = pd.read_excel('sales_data_cleaned.xlsx')
defclean_phone(phone):
if pd.isna(phone):
return'无效号码'
digits = re.sub(r'\D', '', str(phone))
if len(digits) == 11:
return digits
else:
return'无效号码'
df['phone'] = df['phone'].apply(clean_phone)
df.to_excel('sales_data_cleaned.xlsx', index=False)
print(f"处理完成,无效号码 {(df['phone'] == '无效号码').sum()} 个")
跑完告诉我无效号码 127 个,已经标记好了。
第四步:处理客户名称重复问题
这个比较麻烦,同一个客户写法不一样。我说:
帮我识别客户名称列中相似但写法不同的客户,比如"张三公司"和"张三有限公司",把它们统一成一个标准名称
它用文本相似度的方法处理:
import pandas as pd
from difflib import get_close_matches
df = pd.read_excel('sales_data_cleaned.xlsx')
names = df['customer_name'].dropna().unique().tolist()
name_mapping = {}
for name in names:
if name in name_mapping:
continue
similar = get_close_matches(name, names, n=5, cutoff=0.6)
standard = max(similar, key=len) # 选最长的作为标准名称
for s in similar:
name_mapping[s] = standard
df['customer_name'] = df['customer_name'].map(name_mapping)
df['customer_name'] = df['customer_name'].fillna('未知客户')
df.to_excel('sales_data_cleaned.xlsx', index=False)
print(f"合并了 {len(names) - len(set(name_mapping.values()))} 个重复客户")
跑完说合并了 56 个重复客户,客户数量从 200 个变成 144 个。
第五步:删除完全重复的行
我说:
删除完全重复的行,保留第一条
它写:
import pandas as pd
df = pd.read_excel('sales_data_cleaned.xlsx')
before = len(df)
df = df.drop_duplicates(keep='first')
after = len(df)
df.to_excel('sales_data_cleaned.xlsx', index=False)
print(f"删了 {before - after} 个重复行,剩 {after} 行")
第六步:处理金额异常值
我说:
金额列里的负数和超过 500000 的值,帮我单独标记出来,放到一个新列叫"amount_flag",正常值标记为"正常",负数标记为"退货",超大值标记为"异常"
import pandas as pd
df = pd.read_excel('sales_data_cleaned.xlsx')
defflag_amount(amount):
if pd.isna(amount):
return'缺失'
if amount < 0:
return'退货'
if amount > 500000:
return'异常'
return'正常'
df['amount_flag'] = df['amount'].apply(flag_amount)
df.to_excel('sales_data_cleaned.xlsx', index=False)
print("金额标记完成")
print(df['amount_flag'].value_counts())
看看最终效果
所有处理完后,我让它给我一份对比报告:
帮我对比一下原始数据和清洗后的数据,列出每个字段的变化情况
它给我一份数据质量对比:
日期格式:5000 行混合格式 → 统一为 yyyy-mm-dd 日期空值:23 个 → 23 个标记为"未知日期" 电话格式:127 个异常 → 127 个标记为"无效号码" 客户重复:56 个疑似重复 → 合并为标准名称 完全重复行:89 个 → 删掉了 金额异常:20 个 → 已标记分类
总行数从 5000 变成 4911。
整个过程大概 10 分钟。
用下来啥感觉
对比一下传统方式:
关键是——你不用写代码。
你只要能清楚描述你想干嘛:"把日期统一成这种格式"、"电话号码太短的标记一下"、"这些名字看着像同一个人帮我合并"……
它就帮你写代码、跑代码、看结果。你说"不对,这个要改一下",它就改。整个过程就是聊天,不用你碰编辑器。
几个小技巧
先让它分析再动手
别一上来就说"帮我清洗这份数据"。先让它看看数据有什么问题,你心里有数了,再逐个处理。
分段处理
数据清洗的问题很多,一次处理所有问题容易出错。一个一个问题来,每处理完一个让它给你看看结果。
处理完记得验证
让它帮你抽查几行数据,确认处理结果符合预期。特别是那些标记为"异常"的数据,看看是不是真的有问题。
保留原始数据
清洗之前,原始文件别删。万一处理错了还能重来。
最后说两句
Excel 数据清洗这种活,烦人但少不了。以前要么手动改到眼睛瞎,要么写脚本折腾半天。
现在用 Claude Code,你只要会用嘴描述问题,剩下的它帮你干。十分钟搞定别人一天的活。
而且这种方式有个好处——你不用学 pandas、不用背正则表达式、不用调试代码。你只要懂业务逻辑,知道数据应该长什么样,就能把活干好。
关注我,后面还会分享更多用 AI 提效的实操经验。
相关资源:
Claude Code 官网:https://claude.ai/code pandas 文档:https://pandas.pydata.org
夜雨聆风