AI数据分析实操:ChatGPT上传CSV自动生成分析和图表的完整步骤
用 ChatGPT 做数据分析,上传 CSV 能不能直接出图表?能,但前提是先清洗字段、锁定口径,再让它产出可复现的代码,而不是一段听着合理的口头结论。
场景:一份后台导出的销售表,字段名全是英文缩写
一个做独立站的读者,把近三个月的订单导出成 CSV,字段是 order_id, sku, pay_time, amount, country,想弄清哪些国家的客单价高、哪个月在下滑。他直接把文件拖进 ChatGPT,得到的回复是"整体销售呈增长趋势"这类空话——模型压根没读到数据,只是照着字段名在猜。
要纠正的第一个认知:文件没真正传进去,ChatGPT 就只能陪你聊数据,不能算数据。 网页版入口在输入框左侧的回形针,点 Upload from computer 选中本地文件再回车;手机端在输入框的加号里选文件。发送成功后消息区会出现一个文件卡片,悬停能看到文件名和体积。卡片没出现,就说明你只是把文件路径当成文本发了出去。
文件体积和行数是有上限的。据公开报道,单文件在几十 MB 量级、几十万行的量级就可能被拒绝或截断,具体数字以你账号套餐的说明为准。超过这个量级,正确做法是先在本机聚合——用 SQL 或者 pandas 先 group by 到几百行的汇总表,再把汇总结果传上去。
分析环节:把"帮我分析一下"拆成能验收的四句话
分析部分最容易翻车的地方,是把一句含糊的请求丢过去。可用的提问顺序是这样:
- 先让它读。
请用 pandas 读取该文件,只输出 df.shape、df.dtypes 和各列缺失值数量,不要做任何计算。 - 再让它洗。把
pay_time转成日期、amount转成数值、剔除sku以 TEST 开头的测试单。 - 然后锁口径。比如客单价统一按
amount.sum() / order_id.nunique()计算,而不是按行平均。 - 最后才算和画。先出汇总表,确认无误再出图。
"读—洗—锁—算"这四步的意义在于每一句都能被验证。凡是让它一步到位"给我一份完整的数据分析报告",出来的东西基本没法复核,因为中间口径全藏在它脑子里。
出图:要代码,不要描述
图表环节的常见错觉是,它给我画了一张图就等于对了。稳妥的提法是:用 matplotlib 画柱状图,x 轴为国家,y 轴为客单价,按降序排列,保存 PNG 并给出下载链接。它跑完会返回预览图和可下载文件,你顺手把图下载下来留档。
几件必须交代的事:
- 中文字体。默认 matplotlib 不带中文字体,标题会显示成方框。要么改用英文标签,要么指定
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK JP']。 - 代码要留在对话里。让它把完整 Python 代码贴出来,下次数据更新你可以在本地或 Colab 重跑,不依赖这段对话历史。
- 图文对不上时,先回头查口径,别急着怀疑模型算错。
复核:三个自己盯的校验点
那位读者最后发现"某月下滑"是假象,原因正好落在三个通用坑上:
- 时间字段被当字符串。
2024/3/5 10:22这种格式如果没解析,排序会乱。用pd.to_datetime(df['pay_time'], errors='coerce'),然后检查有多少行变成 NaT。 - 金额带符号。
$1,299.00直接转数值会变 NaN,要先去掉货币符号和千分位逗号。 - 退款单没剔除。有些后台把退款也导成一行负金额,客单价自然被拉低,先看
amount < 0有多少行。
编码也要提前说清。国内后台导出的 CSV 常见 GBK 编码,报 UnicodeDecodeError 时就补一句"用 encoding='gbk' 重试",或者在本机另存为 UTF-8 再上传。
结论:什么活交给它,什么活别交
值得交出去的是:字段探查、写清洗脚本、批量改列名、按给定口径聚合、生成可复现的绘图代码、把结果翻译成一段人话。
不该交出去的是:判断数据是否完整、拍业务结论、定指标口径。这三件事模型没有上下文,只能编。数据里没有的信息,它通常不会说"没有",而是补一个看起来合理的数字——这是 AI 数据分析最常见的翻车方式。对域名投资者和站长来说,手里的 WHOIS、收录量、历史价格这类表格,同样适用这套流程。
国内可直接访问的 Kimi、通义千问、DeepSeek 都支持上传表格并执行代码,Claude 也带分析工具。挑哪个的标准只有一条:能不能把中间结果和完整代码亮给你看。额度与费用以各平台页面为准。