ChatGPT 出的图看起来很权威:坐标轴整齐、配色干净、数字像模像样。这恰恰是危险所在。图的背后是一段 Python 代码,它可能静默地错了。也许它 sum 错了列、把一个数值字段当成文本解析导致所有合计都偏了,或者套了个”过滤 outlier”的规则,悄无声息丢掉了三分之一的行。图照样渲染得漂漂亮亮。这套工作流就是那道摩擦力,把这些错误拦在图被塞进 deck 或董事会之前。它写给那些偶尔做分析、但不是全职分析师的人:运营、PM、独立创始人、研究者。
一句话总结
- ChatGPT 的数据分析功能(也就是改名后的 Code Interpreter)跑的是真正的沙箱 Python 环境,不是猜。截至 2026 年 6 月,它预装了 330 多个库,包括 pandas、matplotlib、scikit-learn。
- 2026 年 6 月的文件限制:单文件硬上限 512MB,但表格远没到这个数就会卡。CSV 尽量控制在约 50MB、几十万行以内。Plus 每 3 小时可上传 80 个文件,单条消息最多 10 个。
- 价值最高的一个习惯:每一张图、每一个数字,都让它把代码和原始合计打出来。漂亮不等于对。
- 沙箱是临时的。
/mnt/data在会话结束时会被清空,所以关标签页之前先把清洗后的数据导出来。 - 别用还开着训练的个人账号上传 PII 或财务数据。用临时对话、关掉模型训练,或者先脱敏。
什么时候适合这套流程,什么时候不适合
| 适合 | 用错工具 |
|---|---|
| 清理一次性的脏 CSV | 生产数据管道 |
| 给报告出一张图 | 团队需要按周期复现的工作 |
| 比较两个小数据集 | 几十万行以上的数据集 |
| 快速做一张汇总表 | 含 PII 或受监管财务数据的文件 |
对于反复跑、要复现的工作,把最终的 Python 留下来,去真正的 notebook 里跑。
这个数据分析功能到底是什么
当你把 CSV、Excel 或 JSON 上传给 ChatGPT 并让它分析时,它并不是把文件”读进”对话里。它写 Python,在 OpenAI 服务器上的沙箱容器里执行这段代码,再把结果连同生成的图一起返回。截至 2026 年 6 月,默认模型是 GPT-5.5,沙箱里预装了 330 多个库(pandas 处理表格,matplotlib 和 seaborn 画图,scikit-learn 建模,Pillow 处理图像)。
这个设计带来两个后果,它们贯穿整套工作流:
- 输出只和代码一样可靠。 一个自信的答案,可能建立在你从没看到的一行 bug 上。所以你要让代码可见。
- 容器是临时的。 写到
/mnt/data的文件在同一会话内跨步骤还在,但会话一结束就消失。所以你要早导出、勤导出。
你需要哪个档位?
截至 2026 年 6 月,带文件上传和代码执行的完整数据分析在付费档位上。ChatGPT Plus(每月 20 美元)是实际默认选择,包含这个功能,上限是每 3 小时 80 条消息。免费档(0 美元)对上传文件的处理已收紧到偏文本说明,别指望它做真正的计算。200 美元的 Pro 档限制高得多,如果你经常推大文件,还带应用内 100 万 token 上下文。
一步步的工作流
- 先开一个隐私安全的对话。 上传任何敏感内容之前,开一个临时对话,或者去 Settings > Data Controls 关掉”Improve the model for everyone”。真正敏感的数据,用 Business/Enterprise 工作区——它默认不参与训练。
- 一次上传一个文件。 一个 prompt 塞多个文件,会让你分不清某个结果来自哪个文件。表格尽量控制在约 50MB 以内。
- 先做画像,再分析。 让它:「描述这个文件:列出每一列、推断出的 dtype、行数、每列的空值数。先别画任何图。」这一步就是你抓住那个静默杀手的地方——一个数值列被读成了字符串——在它毒害所有下游合计之前。
- 每张图都让它给出代码。 在每个分析请求后加一句「并把你跑的 Python 打出来」。代码错,图就错。
- 核对总数。 让它打印目标列的
sum()或count(),然后拿这个数字跟原始文件对一下(在 Excel 或 Numbers 里打开核对)。对不上的数字就是你的预警信号。 - 检查分组和筛选。 任何 group-by 或筛选,都让它「每组抽 5 行展示」并问「筛选丢了多少行,按什么规则」。绝不让它在不告诉你阈值的情况下定义”outlier”。
- 在检查点导出。 每次大的转换之后,让它把清洗后的数据集导成可下载的 CSV。这是防会话中途过期的保险。
- 留下最终代码。 任何你可能重复做的,把最终 Python 复制出来。下次自己跑,更快也完全可复现。
实战示例:清洗一个销售 CSV
上传 sales.csv → 让它做列/dtype/空值画像 → 发现 revenue 因为带货币符号被当成字符串读进来了 → 让它「去掉 $ 和逗号,把 revenue 转成 float,并确认新的 dtype」 → 让它「展示 revenue 为空的那 5 行」 → 决定删还是填 → 「按月分组、对 revenue 求和,并打印出表格和 Python」 → 拿某一个月的合计跟原始文件对一下 → 导出清洗后的 CSV。
容易踩的坑
- 不看代码、不看背后总数就信图。 这是唯一一个会用精致外壳包出错误数字的坑。
- 跳过画像步骤。 一个数值列被解析成文本时,直接画图会静默毁掉所有下游聚合。
- 让它替你定义”outlier”。 永远要问它用的规则和丢掉的行数。
- 问”给我洞察”而不是具体问题。 模糊的 prompt 只会返回一段听着对、其实泛泛的话。改问「Q1 里环比 revenue 跌幅最大的是哪 3 个产品?」。
- 开着训练就上传 PII 或财务数据。 上传前用临时对话、关训练,或者脱敏。
- 不导出就让沙箱过期。
/mnt/data在会话结束时被清空。「明天再 reload」是假的。
进阶技巧
- 让它给出等价的 SQL。 「给出能产出这个分析的 SQL」是快速学懂逻辑、或迁移到真数据库的好办法。
- 提前钉死 dtype。 如果你知道
order_id应该是字符串、qty应该是整数,就在画像步骤里说清楚,别让 pandas 猜错。 - 长会话用检查点。 每步几分钟的执行上限,加上会过期的容器,意味着一个 40 步的分析很脆弱。每几步就把中间数据集导出来。
怎么验收输出
- 最终汇总里的每个数字,都能追溯到你真正看到打印出来的列和 Python 操作。
- 你至少把一个聚合值(某月合计、某组计数)跟原始文件对上了。
- 上传的文件里没有 PII,且训练是关的(或者你用了临时对话)。
- 清洗后的数据集已导出并存到本地,没被困在过期的沙箱里。
FAQ
- ChatGPT 真的会在我的数据上跑 Python 吗?: 是的。数据分析功能(原 Code Interpreter)在 OpenAI 服务器上的沙箱容器里执行真正的 Python,截至 2026 年 6 月预装了 330 多个库,包括 pandas 和 matplotlib。
- 文件大小限制是多少?: 截至 2026 年 6 月,单文件硬上限 512MB,但表格远没到这个数就会变慢、变不可靠。CSV 尽量控制在约 50MB、几十万行以内。Plus 每 3 小时可上传 80 个文件,单条消息最多 10 个。
- 我上传的 CSV 会被存储或用于训练吗?: 文件绑定你的账号(每用户存储上限 25GB)。在个人档位上,去 Settings > Data Controls 关掉”Improve the model for everyone”,或者用临时对话。Business 和 Enterprise 工作区默认不参与训练。无论如何都别上传 PII。
- 该用快模型还是思考模型?: 基础画像和单次 group-by,GPT-5.5 的默认 Instant 模式就够。多步且你不容易自己验证的分析,切到 Thinking。切换入口在模型菜单里。
- 文件太大怎么办?: 先本地采样(比如 10 万行)再分析样本。真要全量分析就转去真正的 notebook。文件太大时 ChatGPT 反正会静默采样,而那比你明知自己在采样更糟。
- 为什么会话会丢掉清洗后的数据?: 沙箱是临时的。
/mnt/data工作区在会话结束时被清空,每步执行时间也限制在几分钟。每个检查点都把清洗后的数据导成 CSV。