电脑里躺着十几个 Excel,每个都是几千上万行。老板要"按月看销售额、再画个柱状图",你打开文件,盯着那一片单元格,脑子里只剩一句话:透视表怎么拖来着?VLOOKUP 又是哪几个参数?
我先把结论放前面:现在这件事,可以不写一个函数、不拖一次透视表就做完。在一台 8GB 显存的普通电脑上,跑一个本地 AI,把表丢给它,用中文问"按月统计销售额并画柱状图",它自己读数据、自己写代码、自己出图。全程不联网,数据不出本机。
我之前写过的数据分析入门那篇,讲的是 pandas 的基本套路——但那毕竟还要你自己敲代码。这次更进一步:你只负责提问。
三条路线,先认清谁适合你
本地"自然语言查表"目前有三条成熟路线,我主力推第一条,另两条做对比:
| PandasAI + Ollama | |||
| DuckDB + 本地 LLM 生成 SQL | |||
| Open Interpreter |
普通人、临时分析、想"问一句出一张图",选 PandasAI。这也是本文的主角。
第一步:装好底座 Ollama 和模型
Ollama 负责在本地跑大模型,装最新版即可。装好后拉一个对 8GB 显存友好的代码模型:
# 拉模型(二选一)ollama pull qwen2.5-coder:7b # 约 4.7GB,8GB 显存稳跑,首选ollama pull qwen3.5:9b # 约 6.6GB,质量更好,8GB 仍可# 让 Ollama 在后台跑起来ollama serve这里有个必须避开的坑:网上很多教程推 qwen2.5-coder:14b,那个要约 9GB 显存,超过 8GB,别装——它会爆显存或退回 CPU,慢到没法用。8GB 的同学认准 7b 或 qwen3.5:9b 这两个真实 tag 就行。
第二步:装 PandasAI,几行代码问数
⚠️ 先说清楚版本:PandasAI 现在有 v2 / v3 两套完全不同的 API。本文用稳定成熟的 v2(下面的 SmartDataframe 写法)。所以安装时要锁定 v2,别直接 pip install pandasai——那样会装到 v3,语法对不上、代码直接报错:
pip install "pandasai<3"v3 改成了
import pandasai as pai+ 另外装pandasai-litellm的写法(pai.DataFrame(...).chat(...)),但它接 Ollama 目前仍是实验性,Windows 上还有已知的"静默退出"bug。想省心就先用 v2,等 v3 的本地支持稳了再升。
然后核心代码真的只有这么几行:
from pandasai import SmartDataframefrom pandasai.llm.local_llm import LocalLLM# 指向本地 Ollamallm = LocalLLM(api_base="http://localhost:11434/v1", model="qwen2.5-coder:7b")# 直接把 Excel 喂进去df = SmartDataframe("sales.xlsx", config={"llm": llm})# 用中文提问df.chat("按月统计销售额并画柱状图")跑完,它会在背后自动写好 pandas + matplotlib 代码,统计、画图、把柱状图弹出来。你一行函数都没碰。
更妙的是可以连着追问,像聊天一样:
df.chat("再按地区拆一下,找出销售额最高的三个地区")df.chat("华东和华南的环比增长各是多少?")df.chat("把异常偏低的几个月份单独列出来")几行代码就能开问,这是它最爽的地方。
真实的坑,提前打好补丁
我必须坦白:本地模型不像云端那样"一问就准"。实际用下来有几个高频问题,以及对应的解法。
1)首次常生成不完整的代码,需要重跑。 本地小模型偶尔会写出半截代码、缩进错乱或漏了 import,导致报错。别慌,再 chat 一次往往就好了——偶尔要重跑一次,这是本地方案的常态,不是你装错了。
2)想少重试,按这三招调。
降低 temperature:让模型输出更稳定、更可复现,少发挥少出错。 关闭缓存:调试阶段缓存会让你以为改了其实没生效,先关掉。 把表头 / schema 注进 prompt:提问时顺手告诉它有哪些列、什么含义,比如"这张表有 日期、地区、产品、销售额 四列,请按月汇总销售额"。给了 schema,它生成的代码命中率明显高很多,重试次数肉眼可见地减少。
# 示意:提问时带上结构信息df.chat("这张表有 日期、地区、产品、销售额 四列。""按月汇总销售额,并画柱状图,月份按时间顺序排列。")3)大文件超上下文怎么办? PandasAI 会自动分片处理,不会一次性把几十万行塞给模型。但行数特别大时,体验会变慢、也更容易出错——这正是下面要说的另两条路线登场的时候。
行数上百万?换 DuckDB 或 Open Interpreter
如果你的 CSV 动辄上百万行,PandasAI 这种"交互探索"型工具就吃力了。这时候:
DuckDB + 本地 LLM 生成 SQL:DuckDB 是列式存储的本地分析引擎,处理大文件又快又省内存。思路是让本地模型把你的中文问题翻译成 SQL,再交给 DuckDB 执行。生产环境、要稳要快,走这条。
Open Interpreter:GitHub 上 64K star 的项目,能力是"整机级"的——它能跨文件读、批量处理、甚至帮你操作系统。装法:
pip install 'open-interpreter[local]'interpreter --api_base "http://localhost:11434" --model ollama/qwen2.5-coder:7b然后直接在终端里用中文吩咐它:"把这个文件夹里所有 Excel 合并,按月做汇总,导出一张总表。"它会一步步规划、写代码、执行。适合那种"不止一张表、还要跨文件折腾"的活儿。
一句话总结这三条路
随手问一张表、要图 → PandasAI + Ollama 百万行、要快要稳 → DuckDB + 本地 LLM 跨文件、整机级批处理 → Open Interpreter
行动建议
今晚就能跑通:装最新版 Ollama → ollama pull qwen2.5-coder:7b → pip install "pandasai<3" → 把你手头最头疼的那个 Excel 改名成 sales.xlsx,照着上面五行代码问它"按月统计销售额并画柱状图"。第一次可能要重跑一两次,记得降 temperature、关缓存、把列名写进问题里,体验立刻顺滑。
数据不出本机、不花 API 钱、不用记函数——这就是本地 AI 给普通人最实在的红利。
下一篇,我想写给学生和考研党:怎么用一台普通笔记本,搭一个完全离线的 AI 学习搭子——没网也能问、能讲题、能陪你背书。敬请期待。
夜雨聆风