AI 学习经验
用 GPT-5、Python 和 Pyodide 复刻 Apollo 的 AI 采用率图表
作者看到 Apollo 首席经济学家发布的一张图表,显示 250 人以上企业的 AI 采用率在下降,于是用 GPT-5 找到美国人口普查局原始数据,再用 Python 复刻图表,最后尝试用 Pyodide 在浏览器里渲染。过程中发现原图用的是六次调查滚动平均,这个细节决定了复刻能否成功。
今天就能做
- 下次看到一张有说服力的数据图,先找原始数据文件,用 pandas 复刻一遍再引用。
- 让模型处理表格时,把图表截图一起上传,并明确要求它先找数据字典再动手。
- 复刻结果和原图有差异时,检查是否有移动平均、同比或样本筛选等口径说明。
用 GPT-5 搜索定位原始数据
- 图表来自美国人口普查局的 BTOS 双周调查,覆盖 120 万家企业,问题是在过去两周是否使用过 AI 工具生产商品或服务。
- 作者把图表描述原样丢给 GPT-5 让它找原始数据,约 1 分 19 秒后拿到 Census 的 Employment size class 时间序列 XLSX,覆盖 2023 年 9 月 11 日到 2025 年 8 月 24 日。
- 这个文件在 Census 网站上并不好找,GPT-5 直接给出了具体文件名和链接,省去大量翻找。
让代码解释器把表格还原成图
- 把 XLSX 和 Apollo 图表截图一起上传,提示词只有一句:用这份数据、以 Python 复刻这张图。
- GPT-5 花了至少 7 分钟推理,跨 5 个思考块、十几次 Python 会话,用 pandas 和 numpy 找数据,用 matplotlib 反复画图。
- 它自己发现表格最后一个 tab 里有数据字典,据此把 A 到 G 的字母映射到实际员工规模区间。
- 第一版图看着像,但峰值 14.5% 对不上原图的约 13.5%,而且最后一段是上升的,原图是下降的。
关键细节:六次调查滚动平均
- 作者回头检查原图,发现被自己截图裁掉的一行注释:数据是六次调查的移动平均。
- 调查是双周一次,所以六次约等于 12 周,代码里对应 wide.rolling(window=6, min_periods=6).mean()。
- 表格里有两个相关问题:过去两周是否使用 AI,以及未来六个月是否计划使用;复刻用的是前者。
- 加上滚动平均后,复刻图与 Apollo 原图基本吻合,说明差异来自统计口径而不是数据本身。
代码与浏览器端渲染
- 最终脚本读取 Response Estimates 和 Collection and Reference Dates 两个 sheet,按员工规模分桶、透视、滚动平均,再用 matplotlib 画折线并输出 PNG 和 SVG。
- GPT-5 主动多输出了一个 SVG 版本,作者没要求。
- 作者另开一个会话,让 GPT-5 搭一个加载 Pyodide 的页面,在浏览器里用 pandas 和 matplotlib 渲染图表,验证纯前端方案可行。
对做数据内容的人的启发
- 看到别人转发的图表,先找原始数据源,再自己复刻一遍,是验证结论是否成立的低成本方法。
- 复刻对不上时,优先怀疑统计口径(滚动平均、样本范围、问题措辞),而不是数据本身。
- 把截图和原始文件一起交给模型,比只用文字描述更能让它对齐目标。
原文:Recreating the Apollo AI adoption rate chart with GPT-5, Python and Pyodide
来源:Simon Willison
查看原文本文由 AI 阅读原文后整理,未经人工逐字核对,内容以原文为准。
登录后可以点赞、查看和发表评论