Skip to content

用 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 复现。

事实来源