Python 数据清洗提示词(pandas 处理业务脏数据:日期格式混乱、金额带符号、重复记录、全角空格)
从 ERP、电商后台、CRM 或多人填写的表格导出的数据乱七八糟、没法直接分析时用:先做数据体检,再生成可重复运行的 pandas 清洗脚本,每一步都记录影响了多少行,解析不了的数据单独导出待核查,而不是悄悄丢掉。
通用大模型 对话模型通用
【角色】你是一名做了多年业务数据分析的数据工程师,处理过各种系统导出的脏数据。你的原则:清洗规则写成代码可重复运行,原始数据永远不动,任何丢弃都要有记录。 【数据情况】 - 数据来源:[如电商后台订单导出] - 文件格式与规模:[如 xlsx,约 20 万行] - 字段说明(列名、含义、期望类型): [字段说明] - 样例数据(前 10 行左右,敏感信息已替换): [样例数据] - 我已经发现的问题:[已发现的问题] - 清洗后的用途:[如做月度销售分析] 【第一步:数据体检】 给出一段体检代码,输出:每列的数据类型、缺失数与缺失率、唯一值个数、最常见的 5 个取值;按主键或业务键统计重复;文本列的首尾空格、全角字符、不可见字符;数值列能否转成数字;日期列有多少种格式。请先等我贴回体检结果,再进入第二步。 【第二步:清洗方案与脚本】 1. 清洗规则表:字段 | 问题 | 规则 | 预计影响行数。常见问题按需处理: - 读取时先全部按文本读,避免手机号、订单号、身份证号被转成数字或科学计数法; - 去掉首尾空格、全角空格和不可见字符;统一全角与半角; - 金额去掉货币符号和千分位逗号后转数值,统一单位(元或分); - 日期统一解析,混合格式要逐种处理,Excel 序列号日期(如 45000)要按 1899-12-30 为起点换算; - 分类字段统一写法(如「北京」「北京市」「BJ」); - 重复记录:明确按什么键去重、保留哪一条(最新、最完整),并说明理由。 2. 清洗脚本: - 每个步骤封装成函数,执行后打印受影响的行数; - 无法解析的行不丢弃,导出到「待核查.xlsx」并注明原因; - 最后输出清洗日志,以及清洗前后的行数和关键字段统计对比。 3. 校验:写几条断言,例如主键唯一、金额非负、日期落在合理范围内。 【约束】 - 不确定的业务规则(如退款订单要不要保留)列为待确认问题,不要自行决定。 - 不编造数据,不用均值之类的值随意填补业务字段的缺失。 - 代码兼容 pandas 2.x。
高亮处换成你自己的内容:[如电商后台订单导出]、[如 xlsx,约 20 万行]、[字段说明]、[样例数据]、[已发现的问题]、[如做月度销售分析]
ChatGPT Plus 充值
已被复制 0 次
使用说明
怎么填变量:[样例数据] 要挑「最脏」的几行贴,比如日期写成「2026.3.5」、金额写成「¥1,280.00」的行,AI 才能针对性地写解析规则。[清洗后的用途] 决定清洗力度:月度汇总能容忍个别失败,对账则一分钱都不能错。
和「科研数据清洗」提示词的区别:那条侧重缺失机制、异常值与论文报告规范;这条侧重业务系统导出数据的格式问题和可重复运行的脚本。
常见坑:
- 默认读取会把订单号「000123」读成 123,必须按文本读。
pd.to_datetime遇到混合格式时,pandas 2.x 默认按第一个值推断格式,其余格式的日期会解析失败(直接报错,或在 errors="coerce" 时悄悄变成空值),要指定 format="mixed",并抽查「03/05」这类有歧义的值。- 去重前先按更新时间排序,否则 keep="last" 保留下来的不一定是最新的记录。
追问技巧:把体检结果贴回去,说「根据这个结果调整清洗规则」;下个月拿到新数据时直接重跑脚本,再追问「这次新增了哪些之前没见过的脏数据模式」。
示例输出
示例,仅供参考(清洗脚本节选)
python
import pandas as pd
raw = pd.read_excel("订单导出.xlsx", dtype=str) # 全部按文本读,保护订单号与手机号
df = raw.copy()
df.columns = df.columns.str.strip()
# 去首尾空格与全角空格
text_cols = df.columns
df[text_cols] = df[text_cols].apply(lambda s: s.str.replace(" ", " ", regex=False).str.strip())
# 金额:去掉 ¥、千分位逗号和「元」后转数值,失败的记为 NaN
df["金额"] = pd.to_numeric(df["金额"].str.replace(r"[¥,,元]", "", regex=True), errors="coerce")
# 日期:混合格式逐个解析
df["下单时间"] = pd.to_datetime(df["下单时间"], format="mixed", errors="coerce")
bad = df[df["金额"].isna() | df["下单时间"].isna()]
bad.to_excel("待核查.xlsx", index=False)
print(f"无法解析 {len(bad)} 行,已导出待核查;原始 {len(raw)} 行")同款作品
用这条提示词做出来的作品;原作者会因此获得积分
还没有同款,来做第一个。






0 条评论
还没有评论,来抢沙发~