对数据文件,ChatGPT 有两条路:把文件当纯文本读(直接抽几行”目测”汇总),或者调用 analysis tool(Code Interpreter / Advanced Data Analysis)真正跑 Python。走哪条路对准确率影响巨大——文本路径只能给你大致感觉,做求和 / 计数 / 透视一律会错。本地化、编码、合并单元格这些坑会让 Python 路径也出错,所以光”强制走代码”还不够。
最快修复: 开一个新对话,传上文件,prompt 开头写 Use the analysis tool.,再跟一句 Print df.shape, df.dtypes, and df.head() before computing anything.。如果回复里仍然没有 Analyzed 折叠块,说明它走的是文本路径,就是下面的原因 #1;如果它跑了 Python 但数字还是错,那基本是原因 #2(本地化)或 #3(编码)。
你属于哪一类
| 症状 | 最可能的原因 | 跳到 |
|---|---|---|
回复里没有 Analyzed / python 块 | 文本路径,没跑 Python | 原因 1 |
| 日期固定地错位(月 / 日互换) | 本地化(DD/MM vs MM/DD) | 原因 2 |
出现 ??、乱码、或多出来的列名 | 编码 / BOM / 引号 | 原因 3 |
出现 NaN 空洞、少行、读错 Sheet | 合并单元格 / 隐藏行 / 多 Sheet | 原因 4 |
| 大文件总数偏小 | 聚合前被采样 | 原因 5 |
| 代码跑了但答案就是错的 | 模型写的 pandas 代码有问题 | 原因 6 |
常见原因
按命中率从高到低:
1. 模型走的是文本抽取路径,没跑 Python
最常见。CSV / XLSX 传上去,模型直接读前几行做总结——没出现 python 代码块,没有 Analyzed 标记,也没有输出文件。看起来在”分析”,其实是在猜。
如何判断:回复里没有可展开的 Analyzed 折叠块(点开它能看到 Python 代码)。这个块不在,就说明 Code Interpreter 根本没跑。让它”用 analysis tool 重新算一遍”再对比结果。
2. 日期 / 数字本地化不一致
03/04/2026 在美国是 March 4,在欧洲是 April 3。1,234.56 在英美是一千二百多,在欧陆很多国家写成 1.234,56 才是这个数。模型默认用美式,欧式 CSV 的所有日期 / 金额都会错。
这里还有一个更隐蔽的坑:pandas 的日期推断是按列、但依赖行顺序的。如果 read_csv 把第一行读成合法美式日期(01/02/2026)就锁定 MM/DD,后面遇到一行只能解析成 DD/MM(13/02/2026)时会悄悄切换格式,却不回头重检前面那些行。结果你得到的列前半段按一种格式、后半段按另一种格式。解法是别让 pandas 猜:传 dayfirst=True 或显式 format=。
如何判断:让它”打印 Date 列前 5 行原始值 + 解析后的 datetime”。年份对了但月日反了、或者只有部分行反了,就是这条。
3. CSV 编码 / 引号 / BOM 异常
Excel 普通的”另存为 CSV”默认用系统代码页(中文 Windows 是 GBK,美 / 欧是 Windows-1252),不是 UTF-8。带中文 / 欧元符号会变成 ?? 或乱码。字段里有逗号却没加引号,会把后面每一列都顶错位。文件头的 BOM()会让第一个列名变成 name,于是 df["name"] 直接报 KeyError。
如何判断:让它”打印 columns 列表 + 第一行的 raw bytes”。出现 ? 字符、列名带 前缀、或列数和你预期对不上,都是编码 / 引号问题。
4. Excel 隐藏行、合并单元格、多 Sheet
合并单元格会把值塞进左上角那一格,其余位置变 NaN。隐藏行 pandas 默认照样读出来(所以你以为删掉的行其实还在总数里)。多 Sheet 文件不指明 sheet_name 时只读第一个,你可能整篇都在分析错的那一页。
如何判断:让它跑 pd.read_excel(file, sheet_name=None).keys() 列出所有 Sheet,再打印 df.shape 对照 Excel 里看到的行 / 列数。
5. 大文件被采样后聚合
analysis tool 对 CSV / 表格的单文件上限大约是 50MB(截至 2026 年 6 月——列数上千的高密度文件远不到这个体积就可能卡住),行数到百万级时容器还可能内存溢出。一旦如此,模型有时只读前 N 行就开始算,不告诉你它在采样。
如何判断:让它打印 len(df),对照文件真实行数(本地 wc -l,或者用文件大小估行数)。数字偏小就是采样或截断了。
6. 模型写的 Python 代码本身错
即使跑了 Python,代码也是模型生成的。df.groupby('region').sum() 看起来对,但如果金额列因为原因 #3 进来时是字符串,求和要么为空、要么把文本拼在一起。模型偶尔还会用已废弃的 pandas 写法(比如 infer_datetime_format=True,pandas 2.0 已移除),直接报错或行为异常。
如何判断:高风险任务都让它把代码贴出来,手算一行输出和原始数据核对一遍。
动手前先确认
- 确认问题出现在普通对话、Project,还是 Custom GPT;analysis tool 在三者里的可用性和上限不同,Free 用户配额尤其紧。
- 在 picker 里选对模型。截至 2026 年 6 月,picker 是 Instant / Thinking / Pro(都是 GPT-5.5;o3 和 GPT-5.2 一线已在 2026 年中前后从 ChatGPT 下线)。Thinking 写的分析代码更可靠、支持全部工具;Instant 在临界 prompt 上可能悄悄走文本路径。
- 复现前把当前对话复制一份,避免历史污染下一次诊断。
- 确认订阅级别:Free / Go / Plus / Business / Enterprise 在 analysis tool 配额、单文件大小、执行时长上限上都不一样。
需要收集的信息
- 文件类型(csv / xlsx / tsv / json)、大小(MB)、总行数、列数、是否含非 ASCII / 欧元符号 / 日期。
- 编码:本地用
file -I data.csv看是 utf-8 / utf-16 / windows-1252。 - 完整 prompt 文案 + ChatGPT 回复;特别记录”回复里有没有
Analyzed折叠块”。 - 当前模型(Instant / Thinking / Pro)、analysis tool 是否开启(Thinking 默认开;Instant 支持但可能跳过)。
- 一个具体错误的例子:你期望 X、它返回 Y、原始数据里的真值是 Z。
最短修复路径
按收益从高到低,前 3 步通常能修 80% 的问题。
Step 1:强制走 analysis tool,先看 schema
开新对话,把模型切到 Thinking,用这个 prompt 模板:
Use the analysis tool. Load `data.csv` into pandas, reading every column
as a string first (dtype=str) so nothing is silently coerced.
Print:
1. df.shape
2. df.dtypes
3. df.head()
4. For any date column, parse it with an explicit format and print the
first 3 parsed values next to the raw strings.
After confirming the schema, compute: <your real question>
先把每一列都按字符串读进来,能防止 pandas 在你还没看到数据前就乱猜类型。这一步会暴露大部分格式问题,避免你拿错的 dtype 去做后续计算。
Step 2:日期 / 小数本地化显式声明
The Date column is DD/MM/YYYY (European format) — parse with dayfirst=True
or format="%d/%m/%Y", and do NOT let pandas auto-infer (it switches format
mid-column and corrupts earlier rows).
The Amount column uses a comma as the decimal separator (e.g. "1.234,56" =
1234.56) — strip thousands separators before converting to float.
不要省这一段——本地化错误是无声的,输出看起来正常但数字全错。
Step 3:Excel 转 CSV,干掉合并单元格
上传前在本地处理一遍:
- 选中所有合并单元格 → 取消合并 → 把重复值填回去。
- 取消所有隐藏行 / 列。
- 另存为 →
CSV UTF-8 (Comma delimited)——不是默认那个 “CSV”,那个用的是你的系统代码页。 - 一行表头,无空行。
或者用 Python 在本地预处理:
import pandas as pd
df = pd.read_excel("source.xlsx", sheet_name="Sheet1")
df.to_csv("clean.csv", index=False, encoding="utf-8")
Step 4:核验行数 + 抽样验算
每次分析末尾追加:
Print:
- Total rows read: len(df)
- Non-null count per column
- Sanity check: pick one row from the result, find it in the raw data,
and confirm the math matches.
如果 len(df) 小于本地 wc -l 得到的真实行数,就是它采样或截断了。让它重新完整读一次文件,或者拆文件分批(Step 6)。
Step 5:把代码贴出来人工 review
高风险任务(财务报表、A/B 测试结论、对客户报的数):
Show me the exact pandas code you used, with comments.
读一遍 groupby 的列、聚合函数、过滤条件。比让模型再算一遍可靠得多。
Step 6:超大文件先本地切
文件接近或超过约 50MB 的 CSV 上限(或超过 100 万行)时,先本地切片再上传:
# 按行切 CSV
split -l 100000 large.csv part_
# 或者只取部分列
csvcut -c "date,amount,region" large.csv > slim.csv
每段当成独立任务处理,最后自己聚合。
怎么确认已经修好
- 开新对话上传同一个文件,问同一个问题,确认答案稳定(不是上次蒙对)。
- 让 ChatGPT 输出一个总数 / 平均 / 分组结果,挑一行跟你手算或 Excel pivot 对,每一位都一致才算通过。
- 让同事在他们账号里跑一遍同样的 prompt,确认不是只有你这个会话被修好。
如果还是没修好
- 如果出现
Code Interpreter session expired提示,说明沙箱超时了(大约闲置 15-30 分钟、或触发用量上限后),你传的文件也没了。在同一轮里重新上传并重发 prompt。 - 把文件切到最小:100 行 CSV,只留出问题的几列,看最小用例能不能跑通。
- 换格式:xlsx → csv、csv → tsv、CSV → Parquet,排除是不是某种格式的解析路径有 bug。
- 把模型从 Instant 切到 Thinking;reasoning 模型写的分析代码更稳,也更不容易跳过工具。
- 准备好原文件 + prompt + 模型 + 订阅级别截图,去 help.openai.com 提工单。
预防建议
- 文件标准化模板:UTF-8、ISO 日期(
YYYY-MM-DD)、点作小数点、一行表头、无合并单元格、无空行。 - 每个数据任务都开头让它先
print(df.shape, df.dtypes, df.head())——schema bug 立刻暴露。 - 数字相关任务一律强制 “use the analysis tool”,永远别信模型的口算。
- 高风险任务建立”双重核对”习惯:让它贴代码 + 你手算一行验证 + 用 Excel pivot 再对一遍。
- 反复分析的同类报表,把数据清洗代码写进一个 Custom GPT 的 instructions,保证 schema 处理始终一致。
常见问题
为什么 ChatGPT 说它分析了我的文件,可明明没有?
因为文本路径会从前几行拼出一段听起来很像样的总结,根本不跑代码。判别点就是缺少 Analyzed 折叠块。看不到它,就说明没跑 Python——强制走 analysis tool 重问一遍。
为什么只有一部分行的日期错了一个月?
这就是 pandas 那个依赖行顺序的推断坑(原因 #2):它在前几行锁定了美式格式,到中途又切成欧式,却不回头重检。强制 dayfirst=True 或显式 format=,别让它自动猜。
CSV 上传到底有多大的上限? 截至 2026 年 6 月,单个表格 / CSV 大约 50MB,列数上千的高密度文件远不到这个体积就可能失败。纯文本类文档受 token 限制(每个文件约 200 万 token),不是看原始体积。大 CSV 先在本地切再传。
Code Interpreter session expired——我的数据丢了吗? 沙箱是临时的,闲置一段时间或触发用量上限后就清空,你上传的文件和内存里的 DataFrame 都跟着没了。在同一条消息里重新上传文件并重发指令即可。
数据任务该用 Instant 还是 Thinking? 用 Thinking。它写的分析代码更可靠、支持全部工具,也更不容易悄悄走文本路径。Instant 留给快速、非数值的问题。
相关阅读
- ChatGPT 文件分析感觉太浅
- ChatGPT 大文档分析感觉很浅
- ChatGPT 上传的 PDF 分析不正确
- ChatGPT 项目功能
- ChatGPT 文件分析
- ChatGPT Projects 进阶工作流
- ChatGPT Custom GPT 上传的文件未被使用:3 个原因 + 修复路径
- ChatGPT Project 导出缺少附件
- ChatGPT Project Instructions 更新后被忽略
- ChatGPT Project Knowledge 编辑后没更新
标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #数据文件