Appearance
用 Codex 分析数据并制作可视化
嘿,朋友!你有没有遇到过这种情况——扔给 Codex 一个 CSV,让它“帮我分析一下”,几秒钟就吐出来一堆图表,看着挺像那么回事。但回头一想:缺失值它怎么处理的?重复记录删了没?币种统一了吗?时区对了没?心里完全没底。
我自己就踩过这个坑。有一次拿销售数据让 AI 直接出图,出来的趋势特别漂亮,结果发现它把美元和人民币混在一起算了,退货记录也没剔除。从那以后我就学乖了:先定口径、再清洗、通过质量检查,最后才画图。这一套流程走下来,分析结果才能放心用。
这篇文章就是我在这个过程中攒下来的经验,按步骤来,每一步都有具体的做法和 Codex 提示。
不会写代码也能搞定
如果你的数据量不大,完全可以在 ChatGPT Work 里直接上传 Excel 或 CSV,按这个顺序来:先让它解释字段含义、标记缺失值、确认业务口径,然后利用表格能力生成清洗后的工作簿、公式、透视表、图表和结论页。原始文件始终留一份副本,这样搞错了还能回头。
下面会提到的 scripts/、notebook 和可重跑脚本,属于需要严格复现、批量处理或者交接给同事时的进阶方案。就算你用不上脚本,有几件事还得做到:清洗规则记下来、原始数据别动、公式抽查一下、结果抽几个验证,还有就是——相关性别直接当因果写。
第一次上手的话,推荐先看看 怎样检查 Excel 和数据文件,里面有一些基础但很实用的技巧。
第一步:把原始数据设为只读
先把目录搭好:
text
analysis/
├── data/raw/
├── data/processed/
├── scripts/
├── notebooks/
├── figures/
├── reports/
└── README.md核心原则就一条:原始文件绝不覆盖。所有处理结果写到 processed/。同时记下来源、下载日期、许可和文件校验值——过几个月回来复查的时候,你会感谢现在勤快的自己。
第二步:先做数据剖析
别一上来就画图,先让 Codex 帮你把数据摸清楚。用下面这个提示:
text
只读分析 data/raw/。输出 data-profile.md:
- 文件、行列数和编码;
- 字段类型与候选主键;
- 日期、时区、币种和单位;
- 缺失、重复、异常和无法解析值;
- 表之间可连接字段;
- 隐私和敏感字段;
- 需要业务确认的问题。
不要清洗或画图。这一步会暴露很多你意想不到的问题。我遇到过日期字段里混着时间戳和纯文本、金额字段有的带千分位逗号有的不带——这些问题不早点发现,后面分析全白做。
业务口径的问题优先问相关同事。比如退款按申请日还是完成日算、收入是含税还是不含税,这些不是技术问题,但偏差了结论就歪了。
第三步:写数据字典和分析计划
先整理 data-dictionary.csv,把字段、含义、单位、来源、允许值、缺失处理方式都写进去。这张表看着简单,后续所有分析都要靠它对齐口径。
然后让 Codex 出分析计划:
text
根据已确认口径写 analysis-plan.md。每个问题包含指标公式、分组、过滤、比较基线、预期图表和可能混杂因素。不要把相关性设计成因果结论。第四步:生成可重跑清洗脚本
这一步是关键。用下面这个提示:
text
在 scripts/ 中编写清洗脚本,把 raw 转换为 processed。要求:
- 不修改 raw;
- 每一步有明确函数;
- 输出处理前后行数;
- 对丢弃/修复记录生成质量报告;
- 日期、币种和单位转换可配置;
- 相同输入重复运行得到相同输出;
- 补最小测试。我踩过的一个经典坑:清洗逻辑只写在 notebook 某个犄角旮旯的单元格里,过两周再看完全不记得改了啥。所以清洗规则一定要落成独立脚本,能重复跑,换台机器也能跑通。
第五步:做质量闸门
清洗完别急着分析,先过一遍质量检查。我自己常用的几个检查项:
- 主键重复为 0;
- 必填字段缺失率低于明确阈值;
- 金额、数量不超出业务范围;
- Join 后未匹配比例可解释;
- 汇总金额与来源报表差异在允许范围;
- 行数变化有记录。
质量闸门不过,就停下来修数据,别硬着头皮往下画图。我有一次跳过这步直接做分析,报告都写好了才发现 Join 把行数膨胀了三倍——全白干了。
第六步:探索与验证分开
探索阶段可以放飞一点:用 notebook、开多个 worktree、换各种可视化插件试试不同的分析方向。但最终结论一定要落回稳定脚本和固定数据集,不能靠某次手动调参的结果当作最终答案。
我习惯并行开三个 worktree:
- 一个研究缺失值和异常;
- 一个比较图表与分组;
- 一个检查模型或敏感性。
主任务负责统一口径和最终 pipeline,这样不同分支不会各用一套清洗方式,结果打架。
第七步:制作可解释图表
每张图只回答一个问题,而且要让人一眼看懂。图里必须有这些要素:
- 有结论的标题;
- 轴、单位、时间范围;
- 样本量或数据覆盖;
- 来源和口径;
- 不确定性或异常说明;
- 色彩和排序有含义。
给 Codex 的提示可以这样写:
text
为分析计划中的每个问题选择最简单有效的图表。不要默认使用 3D、双轴或过多小卡片。图表标题写出观察结论,脚注写数据范围和限制。我的经验是:如果一张图需要解释三分钟别人才能看懂,那这张图就没做好。简单直接比炫技重要得多。
第八步:进行反证和敏感性检查
做完分析,别急着交,花点时间拷问一下自己的结论:
- 改变时间窗口,结论是否稳定;
- 去除极端值,方向是否变化;
- 分组差异是否被样本结构解释;
- 缺失值处理是否改变结果;
- 相关变量是否只是共同受第三因素影响;
- 指标分母是否在变化。
涉及模型的,还要检查训练/测试划分、数据泄漏、基线和适用范围。我有个习惯:专门花一轮时间试图推翻自己的结论。推翻不了,才敢说这个结论是站得住的。
第九步:交付报告和可运行说明
最后把东西整理成别人能用的样子。README.md 写清:
text
环境与依赖
输入文件放置位置
清洗命令
质量检查命令
分析/图表命令
输出位置
已知限制报告里要区分清楚:哪些是数据事实、哪些是统计结果、哪些是你的解释、哪些是建议、哪些是还没确认的假设。这几个混在一起是数据分析的大忌。
一个完整任务提示
把上面所有步骤串起来,一个完整的 Codex 提示大概长这样:
text
分析 data/raw/ 中的订单、退款和广告数据,回答"毛利下降主要发生在哪些 SKU 和渠道"。
先完成数据剖析和口径问题,不要直接画图。确认后建立可重跑清洗脚本、质量报告、指标表、最多 5 张图和两页结论报告。
所有结果必须能从脚本复现;原始数据只读;真实用户字段要脱敏;不要把相关性写成因果。输出运行命令和未解决的数据问题。常见失败
聊几个我见过(也犯过)的高频错误:
图表先于口径
上来就画图,结果数据含义都没统一。解决办法很简单:先做数据字典和质量报告,再做图。
notebook 能跑,别人不能跑
自己机器上跑通了,同事一跑就报错。把核心逻辑提取成稳定脚本,写好依赖和 README,从干净环境重跑一遍验证。
Join 造成数据膨胀
两张表一 Join,行数莫名多了好几倍。养成习惯:验证主键唯一性、对比 Join 前后行数和未匹配比例。
漂亮图表掩盖不确定性
图做得花里胡哨,但样本量够不够、有没有异常值、结论对参数敏不敏感——全没交代。保留样本、范围、异常和敏感性结果,别让图表替你隐瞒不确定性。
完成门槛
做完分析后,拿这个清单自己过一遍:
- [ ] 原始数据只读且有来源记录。
- [ ] 数据字典和业务口径已确认。
- [ ] 清洗脚本可重复运行。
- [ ] 质量闸门通过。
- [ ] 图表可回到明确指标和 processed 数据。
- [ ] 结论通过敏感性/反证检查。
- [ ] 其他人能按 README 复现。