ChatGPT 把你的 CSV / Excel 数据看错了

数字算错、表头错位、日期颠倒——数据工具链有坑。这里给出保证准确的做法。

对数据文件,ChatGPT 有两条路:把文件当文本读(直接抽取数字”目测”汇总),或者调 Code Interpreter / Advanced Data Analysis 用 Python 算。走哪条路对准确率影响巨大——文本路径只能给你大致感觉,做求和 / 计数 / 透视一律会错。本地化、编码、合并单元格这些坑会让 Python 路径也出错,所以光”强制走代码”还不够。

常见原因

按命中率从高到低:

1. 模型走的是文本抽取路径,没跑 Python

最常见。CSV / XLSX 传上去,模型直接读前几十行做总结——没出现 python 代码块,也没下载 / 输出文件。看起来在”分析”,其实是在猜。

如何判断:回复里没有灰底的 python 代码块、也没说”Analyzed”——就是没走 Code Interpreter。让它”用 analysis tool 重新算一遍”对比结果。

2. 日期 / 数字本地化不一致

03/04/2026 在美国是 March 4,在欧洲是 April 3。1,234.56 在英美是一千二,欧陆部分国家是 1.23456。模型默认用美式,CSV 里如果是欧式,所有日期 / 金额都会错。

如何判断:让它”打印 Date 列前 5 行 + 解析后的 datetime”,对比原始字符串。年份对了但月日反了就是这条。

3. CSV 编码 / 引号 / BOM 异常

CSV 来自 Excel “另存为 CSV” 默认是 GBK / Windows-1252,不是 UTF-8。带中文 / 欧元符号会变 ??。字段里有逗号没加引号会列错位。文件头有 BOM()让第一个列名变成 name

如何判断:让它”打印 columns 列表 + 第一行 raw bytes”。出现 ? 字符、列名带  前缀、或列数和你预期对不上,就是编码 / 引号问题。

4. Excel 隐藏行、合并单元格、多 Sheet

合并单元格会把多行合到一行的左上格,其他位置变 NaN。隐藏行 pandas 默认读出来(你以为没了)。多 Sheet 文件不指明 sheet_name 时只读第一个。

如何判断:让它打印 pd.read_excel(file, sheet_name=None).keys() 看有几个 Sheet;打印 df.shape 对照你 Excel 里看到的行数。

5. 大文件被采样后聚合

文件超过 Code Interpreter 内存阈值(通常 ~100MB / 几十万行),有时模型只读前 N 行就开始算,不告诉你它在采样。

如何判断:让它打印 len(df) + 总行数(从文件 wc -l 或者 os.path.getsize),数字对不上就是采样了。

6. 模型写的 Python 代码本身错

即使跑了 Python,代码也是模型生成的。df.groupby('region').sum() 看起来对,但如果数据列是字符串而不是数字,结果就是空。

如何判断:高 stakes 任务都让它把代码贴出来 + 手算一行数据核对一遍。

动手前先确认

  • 确认问题出现在普通对话、Project,还是 Custom GPT;Code Interpreter 在三者里的可用性不同(Free 用户 Code Interpreter 配额很紧)。
  • 复现前把当前对话复制一份,避免清掉历史影响下次诊断。
  • 确认订阅:Free / Plus / Team / Enterprise 在 Code Interpreter 配额、单文件大小、执行时长上限不同。

需要收集的信息

  • 文件类型(csv / xlsx / tsv / json)、大小(MB)、总行数、列数、是否有中文 / 欧元 / 日期。
  • 编码:用 file -I data.csv 看是 utf-8 / utf-16 / windows-1252。
  • 完整 prompt 文案 + ChatGPT 回复截图;特别记录”回复里是否出现 python 代码块”。
  • 当前模型(GPT-5.5 / GPT-5 / o3)、是否启用了 Code Interpreter(看 Tools 设置)。
  • 一个具体错误的例子:你期望 X、它返回 Y、原始数据里的真值是 Z。

最短修复路径

按收益从高到低,前 3 步通常修 80% 问题。

Step 1:强制走 Code Interpreter,先看 schema

打开新对话,prompt 模板:

Use the analysis tool. Load `data.csv` into pandas with UTF-8 encoding.
Print:
1. df.shape
2. df.dtypes
3. df.head()
4. For any date column, parse it and print the first 3 parsed values
   next to the raw strings.

After confirming schema, compute: <your real question>

这一步会暴露 90% 的格式问题,避免你拿错的 dtype 去做后续计算。

Step 2:日期 / 小数本地化显式声明

The Date column is DD/MM/YYYY (European format).
The Amount column uses comma as decimal separator (e.g. "1.234,56" = 1234.56).
Parse accordingly.

不要省这一段——本地化错误是无声的,输出看起来正常但数字全错。

Step 3:Excel 转 CSV,删除合并单元格

Excel 上传前在本地处理:

  1. 选中所有合并单元格 → 取消合并 → 填充重复值
  2. 取消所有隐藏行 / 列
  3. 另存为 → CSV UTF-8 (Comma delimited)(不是默认的 “CSV”,那是 Windows-1252)
  4. 一行表头,无空行

或者用 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 row count read: len(df)
- Non-null count per column
- A sanity check: pick one row from the result, find it in the raw
  data, and confirm the calculation matches.

发现 len(df) 对不上原始 wc -l 行数 → 它在采样。要求重新读全文件(或拆文件分批处理)。

Step 5:把代码贴出来人工 review

高 stakes(财务报表、A/B 测试结论、对客户报数)的任务:

Show me the exact pandas code you used, with comments.

读一遍 groupby 的列、聚合函数、过滤条件。比让模型再算一遍更可靠。

Step 6:超大文件先本地切

> 200MB 或 > 100 万行:先本地切片再上传。

# 按行切 CSV
split -l 100000 large.csv part_
# 或者按列子集
csvcut -c "date,amount,region" large.csv > slim.csv

把每段当独立任务处理,最后自己聚合。

怎么确认已经修好

  • 开新对话上传同一个文件,问同一个问题,确认答案稳定(不是上次蒙对)。
  • 让 ChatGPT 把它的总数 / 平均 / 分组结果跟你手算或 Excel pivot 对一行,全一致才算通过。
  • 让同事在他们账号里跑一遍同样 prompt,确认不是只有你的会话被修好。

如果还是没修好

  • 把文件切到最小:100 行 CSV,只保留出问题的几列,看最小用例能不能跑通。
  • 换格式:xlsx→csv、csv→tsv、CSV→Parquet,排除是不是某种格式的解析路径有问题。
  • 换模型:GPT-5.5 → o3 / GPT-5;reasoning 模型写的分析代码更稳。
  • 准备好原文件 + prompt + 模型 + 订阅级别截图,去 help.openai.com 提工单。

预防建议

  • 文件标准化模板:UTF-8、ISO 日期(YYYY-MM-DD)、点作小数点、一行表头、无合并单元格、无空行。
  • 数据类任务永远开头让它先 print(df.shape, df.dtypes, df.head())——schema bug 立刻暴露。
  • 数字相关任务强制 “use the analysis tool”,不要相信模型的口算。
  • 高 stakes 任务建立”双重核对”习惯:让它输出代码 + 你手算一行验证 + 用 Excel pivot 对一遍。
  • 反复分析的同类报表,把数据清洗代码烤进一个 Custom GPT 的 instructions,保证 schema 处理一致。

相关阅读

标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #数据文件