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

news2025/6/9 6:46:40

需求说明

实现对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 LocalLLM


ollama_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.coloradmin.cn/o/2405068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iptables实验

实验一:搭建web服务,设置任何人能够通过80端口访问。 1.下载并启用httpd服务器 dnf -y install httpd 开启httpd服务器 systemctl start httpd 查看是否启用 下载并启用iptables,并关闭firewalld yum install iptable…

前后端分离开发 和 前端工程化

来源:黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)_哔哩哔哩_bilibili 前后端混合开发: 需要使用前端的技术栈开发前端的功能,又需要使用Java的技术栈…

web端rtmp推拉流测试、抽帧识别计数,一键式生成巡检报告

本文旨在实现无人机城市交通智慧巡检中的一个模块——无人机视频实时推拉流以及识别流并在前端展示,同时,统计目标数量以及违停数量,生成结果评估,一并发送到前端展示。对于本文任何技术上的空缺,可在博主主页前面博客…

Excel 表格内批量添加前缀与后缀的实用方法

我们经常需要为 Excel 表格中的内容统一添加前缀或后缀,例如给编号加“NO.”、给姓名加“会员_”等。手动操作效率低,本文将介绍几种实用的方法,帮助你快速完成批量添加前缀和后缀的操作。 使用“&”运算符添加前缀或后缀(推…

2024 CKA题库+详尽解析| 15、备份还原Etcd

目录 免费获取题库配套 CKA_v1.31_模拟系统 15、 备份还原Etcd 题目: 开始操作: 1)、切换集群 2)、登录master并提权 3)、备份Etcd现有数据 4)、验证备份数据快照 5)、查看节点和Pod状态 6&am…

西门子 S7-1200 PLC 海外远程运维技术方案

西门子 S7-1200 PLC 海外远程运维技术方案 一、面向海外场景的核心优势 针对跨国企业、海外项目及远程技术支持需求,本方案基于巨控GRM552Y-CHE模块提供无缝的全球化远程PLC运维能力,突破地域及时差限制,显著提升国际项目响应效率。 二、海…

嵌入式学习--江协stm32day5

USART 1. 引脚与接口层 异步引脚: TX:发送数据输出;RX:接收数据输入;SW_RX:单线半双工模式的接收引脚(替代 RX)。 同步引脚:SCLK:同步模式下的时钟输出&…

(LeetCode 动态规划(基础版))96. 不同的二叉搜索树 (递推 || 递归)

题目:96. 不同的二叉搜索树 思路:二叉树长度为n时,枚举每个点u作为根节点root,那么root左边的数构成左子树种数left,root右边的数构成右子树种数right,那么当前u为根节点下,二叉树的种数为left*…

vue项目使用svg图标

下面是在 Vue 3 项目中完整引入和使用 vite-plugin-svg-icons 的步骤 1、安装插件 npm install vite-plugin-svg-icons -D # 或 yarn add vite-plugin-svg-icons -D # 或 pnpm add vite-plugin-svg-icons -D 2、配置 Vite 在 vite.config.ts 或 vite.config.js 中配置&…

智能网卡之hinic3 WQE(Work Queue Element)结构梳理

hinic3 WQE(Work Queue Element)结构详解 本文基于 hinic3 驱动源码,对 WQE(Work Queue Element)做详细讲解。如需查阅完整源码和结构体定义可参考hinic3_nic_qp.h等文件。 1. WQE 的作用 WQE(Work Queue…

力扣HOT100之二分查找:4. 寻找两个正序数组的中位数

这道题如果没有时间复杂度的限制的话,相当好做,但是这道题要求时间复杂度为O(log(m n)),思路很难想,我看了一圈题解,发现华南溜达虎的视频讲得还不错,我是参考他的思路写出来的,这里把他的思路…

PyTorch——损失函数与反向传播(8)

Loss Functions 越小越好 L1loss MSELoss 损失函数 CrossEntyopyLoss 损失函数 import torch from torch.nn import L1Loss from torch import nn# 创建输入和目标张量,用于后续的损失计算 inputs torch.tensor([1,2,3],dtypetorch.float32) targets torch.tenso…

macOS 升级 bash 到最新版本

macOS 的默认「终端」,千年不变的版本。 》〉bash --version GNU bash, version 3.2.57(1)-release (arm64-apple-darwin24) Copyright (C) 2007 Free Software Foundation, Inc. 官方 bash.git - bash 已经将 bash 升级到了 5.2的大版本。 macOS 最新版系统的 ba…

力扣面试150题--课程表

Day 63 题目描述 做法 初次思路:本质就是将所有前置课程和后置课程作为一个有向图(前者指向后者),判断这个图是否是一个有向无环图(即是否存在拓扑排序)(本质做法是dfs) 做法&…

用通俗的话解释下MCP是个啥?

在AI领域,模型的开发、部署和迭代速度日益加快,但随之而来的挑战也愈发显著:如何高效管理不同版本的模型?如何在复杂环境中确保模型的可追溯性和可复用性?如何实现跨团队、跨平台的模型协作? 在计算机领域…

LeetCode 高频 SQL 50 题(基础版)之 【子查询】· 上

题目&#xff1a;1978. 上级经理已离职的公司员工 题解&#xff1a; select employee_id from Employees where salary<30000 and manager_id is not null and manager_id not in (select distinct employee_id from Employees ) order by employee_id题目&#xff1a;626.…

Spark流水线+Gravitino+Marquez数据血缘采集

1.Openlinage和Marquez简介 1.1 OpenLineage 概述 OpenLineage 是一个开放标准和框架&#xff0c;用于跨工具、平台和系统捕获数据血缘信息。它定义了通用的数据血缘模型和API&#xff0c;允许不同的数据处理工具&#xff08;如ETL、调度器、数据仓库&#xff09;以标准化格…

基于微信小程序的车位共享平台的设计与实现源码数据库文档

摘 要 近年来&#xff0c;随着国民经济的飞速发展&#xff0c;城镇化进程的步伐加快&#xff0c;城市人口急剧增长&#xff0c;人们的生活水平持续改善&#xff0c;特别是大中型城市&#xff0c;城市的交通规模日益增大&#xff0c;汽车的保有量不断提高&#xff0c;然而城市的…

多模态大语言模型arxiv论文略读(111)

SEA: Supervised Embedding Alignment for Token-Level Visual-Textual Integration in MLLMs ➡️ 论文标题&#xff1a;SEA: Supervised Embedding Alignment for Token-Level Visual-Textual Integration in MLLMs ➡️ 论文作者&#xff1a;Yuanyang Yin, Yaqi Zhao, Yaji…

怎么让自己ip显示外省?一文说清操作

在互联网时代&#xff0c;IP地址不仅关联网络连接&#xff0c;还可能影响IP属地显示。那么&#xff0c;手机和电脑用户怎么让自己IP显示外省&#xff1f;一文说清操作要点。 ‌ 二、4种主流方法详解 要让自己的IP显示为外省地址&#xff0c;主要有以下几种方法&#xff1a; …