当前位置: 首页 > article >正文

利用Pandas AI完成Excel大模型的结合实现自然语言问数

需求说明

实现对Excel工具的自然语言问数,即可以通过界面上传Excel文件,然后在文本框里通过语言对话的形式问出要统计的内容。比如:

用户数有多少?

语文成绩低于90的用户有多少?

.....

实现思路

Pandas AI是基于Pandas库构建的,它扩展了Pandas的功能,使其能够支持生成式AI的任务。Pandas本身是一个用于数据处理和分析的Python库,其强大的数据处理能力也是Pandas AI的基础。这里借助于Pandas AI框架集成Pandas和大模型的能力达到这个目的,详见如下代码。

代码过程

import gradio as gr
import pandas as pd
from pandasai import SmartDataframe
from pandasai.llm.local_llm import LocalLLMollama_llm = LocalLLM(api_base="http://127.0.0.1:11434/v1", model="qwen2.5:72b")def analyze_excel(file_path, user_query):"""使用PandasAI分析Excel文件并回答用户查询"""try:# 读取Excel文件df = pd.read_excel(file_path)# 创建SmartDataframe##smart_df = SmartDataframe(df, config={"llm": llm})smart_df = SmartDataframe(df, config={"llm": ollama_llm})# 执行查询response = smart_df.chat(user_query)# 返回响应和原始数据的前5行return response, df.head()except Exception as e:return f"发生错误: {str(e)}", None# 创建Gradio界面
with gr.Blocks(title="Excel 数据分析助手") as demo:gr.Markdown("Excel 数据分析助手")gr.Markdown("上传Excel文件,然后用自然语言提问,AI会帮你分析数据!")with gr.Row():file_input = gr.File(label="上传Excel文件", file_types=[".xlsx", ".xls"])query_input = gr.Textbox(label="输入你的问题", placeholder="例如:哪个月的销售额最高?")submit_btn = gr.Button("分析")with gr.Row():output_text = gr.Textbox(label="分析结果", interactive=False)output_data = gr.Dataframe(label="数据预览")# 示例问题examples = [#["示例数据.xlsx", "哪个月的销售额最高?"],#["示例数据.xlsx", "按产品类别分组并计算平均价格"],#["示例数据.xlsx", "绘制销售额随时间变化的趋势图"]]# 设置交互submit_btn.click(fn=analyze_excel,inputs=[file_input, query_input],outputs=[output_text, output_data])gr.Examples(examples=examples,inputs=[file_input, query_input],outputs=[output_text, output_data],fn=analyze_excel,cache_examples=True)# 启动应用
if __name__ == "__main__":demo.launch(server_name="0.0.0.0", server_port=7860)

http://www.lryc.cn/news/2405068.html

相关文章:

  • iptables实验
  • 前后端分离开发 和 前端工程化
  • web端rtmp推拉流测试、抽帧识别计数,一键式生成巡检报告
  • Excel 表格内批量添加前缀与后缀的实用方法
  • Vulkan 3D Tiles渲染器开发笔记1-脚手架搭建
  • 2024 CKA题库+详尽解析| 15、备份还原Etcd
  • 【C/C++】std::vector成员函数清单
  • 如何借助Hyper - V在Windows 10中构建安全软件测试环境
  • 西门子 S7-1200 PLC 海外远程运维技术方案
  • 如何对Video视频进行SEO优化?
  • 嵌入式学习--江协stm32day5
  • (LeetCode 动态规划(基础版))96. 不同的二叉搜索树 (递推 || 递归)
  • 服务器中CC攻击的特点有哪些?
  • vue项目使用svg图标
  • 智能网卡之hinic3 WQE(Work Queue Element)结构梳理
  • go的工具库:github.com/expr-lang/expr
  • 力扣HOT100之二分查找:4. 寻找两个正序数组的中位数
  • PyTorch——损失函数与反向传播(8)
  • macOS 升级 bash 到最新版本
  • Linux下如何查看一个端口被什么进程占用? 该进程又打开了哪些文件?
  • 力扣面试150题--课程表
  • 用通俗的话解释下MCP是个啥?
  • LeetCode 高频 SQL 50 题(基础版)之 【子查询】· 上
  • Spark流水线+Gravitino+Marquez数据血缘采集
  • 一个完整的时间序列异常检测系统,使用Flask作为后端框架,实现了AE(自编码器)、TimesNet和LSTM三种模型,并提供可视化展示
  • 深度学习在非线性场景中的核心应用领域及向量/张量数据处理案例,结合工业、金融等领域的实际落地场景分析
  • 基于微信小程序的车位共享平台的设计与实现源码数据库文档
  • 多模态大语言模型arxiv论文略读(111)
  • 网页端 VUE+C#/FastAPI获取客户端IP和hostname
  • 一个自动反汇编脚本