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

利用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.xdnf.cn/news/12773.html

相关文章:

  • 第二十九章 数组
  • iptables实验
  • 2025年中国建银投资笔试测评春招校招社招笔试入职测评行测题型解读揭秘
  • 小番茄C盘清理:专业高效的电脑磁盘清理工具
  • FBRT-YOLO:面向实时航拍图像检测的轻量高效目标检测框架
  • 【QT】QT多语言切换
  • Java 线程同步详解
  • 前后端分离开发 和 前端工程化
  • k8s4部署
  • STM32H562----------串口通信(UART)
  • Spring注解开发
  • 《Go小技巧易错点100例》第三十五篇
  • CCF GESP202503 Grade4-B4263 [GESP202503 四级] 荒地开垦
  • JAVA学习 DAY4 DOS操作讲解及实例
  • 高保真组件库:下拉框
  • (一)单例模式
  • leetcode56-合并区间
  • 常见查找算法原理与应用详解
  • pandas 字符串存储技术演进:从 object 到 PyArrow 的十年历程
  • C语言内存管理和编译优化实战
  • Fetch API 使用详解:Bearer Token 与 localStorage 实践
  • LeetCode面试经典150题—合并两个有序数组—LeetCode88
  • 机器学习算法_决策树
  • OC—UI学习-2
  • Linux安全加固:从攻防视角构建系统免疫
  • [创业之路-410]:经济学 - 国富论的核心思想和观点,以及对创业者的启发
  • 【11408学习记录】考研写作双核引擎:感谢信+建议信复合结构高分模板(附16年真题精讲)
  • 【优选算法】位运算
  • Python Flask文件处理与异常处理实战指南
  • Boost ASIO 库深入学习(3)