PandasAI 集成 Streamlit:三步搭出自然语言数据分析 Web 应用
【免费下载链接】pandas-aiChat with your database or your datalake (SQL, CSV, parquet). PandasAI makes data analysis conversational using LLMs and RAG.项目地址: https://gitcode.com/GitHub_Trending/pa/pandas-ai
PandasAI 让数据会"说话",Streamlit 把结果变成网页,两者组合后你用自然语言问数,图表当场渲染。本教程适合刚接触数据分析的朋友,跟着做一遍,十分钟内就能拥有一个可上线的问数工具。
成品速览:先看看你要的东西长什么样
想象这样一个场景:运营同事在输入框里敲下"按部门统计平均工资并绘图",几秒钟后页面上蹦出一张柱状图——全程没人写一行代码。
上面就是最终效果。接下来我带你把它做出来。
三分钟原理:问句是怎么变成图表的
这一节不堆术语,只讲清楚链路。你输入的自然语言先交给 PandasAI 的 SmartDatalake(可以理解为"会思考的数据池",它知道池里每张表的字段长什么样)。SmartDatalake 让大模型把问题翻译成一段针对数据的 Python 代码并执行,得到数值、表格或图表。默认情况下结果只会打印在终端里,但官方提供了 StreamlitResponse 解析器,一挂载,这些结果就直接变成网页上的组件。官方集成示例在 docs/v2/custom-response.mdx,想深挖细节可以对照看。
三步启动数据对话
第一步:装好环境(两行命令搞定)
先用 git clone https://gitcode.com/GitHub_Trending/pa/pandas-ai 拿到仓库(仅用于查文档和示例数据),然后执行:
pip install pandasai pandasai-litellm pip install streamlit export OPENAI_API_KEY=你的密钥这三行装好了核心库、LLM 适配层和网页框架。目录结构不用讲究,记住三个位置就行:一个 app.py 当入口、一个 data 文件夹放数据集、一个 utils 文件夹装你的自定义组件。
第二步:接入数据、开始提问
在 app.py 里把两张表喂给 SmartDatalake,并把 StreamlitResponse 写进配置:
from pandasai import SmartDatalake from pandasai.responses.streamlit_response import StreamlitResponse agent = SmartDatalake( [employees_df, salaries_df], config={"verbose": True, "response_parser": StreamlitResponse}, )这两张表就是员工信息和工资表(示例数据仓库里有现成的 CSV 可换用)。response_parser指定了结果走 Streamlit 通道渲染。
接着搭交互界面,只有几行:
st.text_input("想问数据点什么?") if st.button("开始分析"): agent.chat("按部门统计平均工资并绘图")保存后刷新页面,问题一提交,图表或表格就出现在浏览器里。
第三步:让结果更可控
默认解析器已经把结果渲染成 Streamlit 组件了,想再改什么?记住一个口诀:继承 StreamlitResponse,只覆写你嫌它做得不对的那个方法。比如想给每次分析加个"导出 CSV"按钮,就覆写 format_dataframe,先调用父类方法保留默认表格,再补一个下载控件;想改图表布局同理,找到对应方法动手即可。具体方法签名在 docs/v2/custom-response.mdx 里,照着抄就行。
进阶两招:多轮记忆与自定义技能
这一节给你两个"从能用变好用"的开关。
🧠 两招做出多轮记忆:提问时带上上下文("上一张图里 IT 部门最高的是谁"),前提是让 Agent 记住历史。实例化时加一个 memory_size 参数(比如 10 轮),后续问题就能引用前面的结论。多轮对话的完整写法参考 docs/v2/custom-response.mdx 中段的示例。
🧩 教它新本领:把写好的函数挂上 @skill 装饰器,用 docstring 说明它是干什么的,再传给 agent 的技能列表,模型就会在合适的时候自己调用它——比如"检测工资异常值"这类固定业务逻辑。完整实现(含往 Streamlit 里画图的技能)见 docs/v2/skills.mdx。
部署与避坑:一条命令上线,两个坑先填上
启动就一行:
streamlit run app.py默认监听 8501 端口,浏览器打开 http://localhost:8501 即可。常见坑有两个:一是端口被占,加--server.port换到 8502 或别的空闲端口;二是依赖版本打架,pandasai 目前要求 Python 3.8 到 3.11,建议单独开个虚拟环境装依赖,别和项目里其他库混用。
收尾:你刚刚上线了什么
到这里,你已经把"问一句、出一图"的自然语言数据分析服务跑在了浏览器里,同事打开链接就能用。接下来可以继续往三个方向长:接入图片和文本等多模态数据、加上账号与权限控制、换成实时数据源。代码就放在你本地,现在就 streamlit run 起来试试吧。
【免费下载链接】pandas-aiChat with your database or your datalake (SQL, CSV, parquet). PandasAI makes data analysis conversational using LLMs and RAG.项目地址: https://gitcode.com/GitHub_Trending/pa/pandas-ai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考