使用LlamaIndex构建自己的PandasAI

news2024/12/26 9:19:42
推荐:使用 NSDT场景编辑器 快速搭建3D应用场景

Pandas AI 是一个 Python 库,它利用生成 AI 的强大功能来增强流行的数据分析库 Pandas。只需一个简单的提示,Pandas AI 就可以让你执行复杂的数据清理、分析和可视化,而这以前需要很多行代码。

除了处理数字之外,Pandas AI还理解自然语言。您可以用简单的英语询问有关数据的问题,它将以日常语言提供摘要和见解,使您免于破译复杂的图形和表格。

在下面的示例中,我们提供了一个 Pandas 数据帧,并要求生成 AI 创建条形图。结果令人印象深刻。

pandas_ai.run(df, prompt='Plot the bar chart of type of media for each year release, using different colors.')

使用LlamaIndex构建自己的PandasAI

注意:代码示例来自 Pandas AI:您的生成式 AI 驱动的数据分析指南教程。

在这篇文章中,我们将使用LlamaIndex来创建类似的工具,这些工具可以理解Pandas数据框架并产生复杂的结果,如上所示。

LlamaIndex支持通过聊天和代理对数据进行自然语言查询。它允许大型语言模型大规模解释私有数据,而无需对新数据进行重新训练。它将大型语言模型与各种数据源和工具集成在一起。LlamaIndex是一个数据框架,只需几行代码即可轻松创建带有PDF应用程序的聊天。

建立

您可以使用该命令安装 Python 库。pip

pip install llama-index

默认情况下,LlamaIndex使用OpenAI模型进行文本生成以及检索和嵌入。为了轻松运行代码,我们必须设置 .我们可以在新的 API 令牌页面上免费注册并获取 API 密钥。gpt-3.5-turbotext-embedding-ada-002OPENAI_API_KEY

import os
os.environ["OPENAI_API_KEY"] = "sk-xxxxxx"

它们还支持Anthropic,Hugging Face,PaLM和更多模型的集成。您可以通过阅读模块的文档来了解有关它的所有信息。

熊猫查询引擎

让我们进入创建自己的PandasAI的主要主题。安装库并设置 API 密钥后,我们将创建一个简单的城市数据帧,以城市名称和人口作为列。

import pandas as pd
from llama_index.query_engine.pandas_query_engine import PandasQueryEngine
df = pd.DataFrame(
    {"city": ["New York", "Islamabad", "Mumbai"], "population": [8804190, 1009832, 12478447]}
)

使用 ,我们将创建一个查询引擎来加载数据帧并为其编制索引。PandasQueryEngine

之后,我们将编写一个查询并显示响应。

query_engine = PandasQueryEngine(df=df)

response = query_engine.query(
    "What is the city with the lowest population?",
)

如我们所见,它开发了 Python 代码,用于在数据帧中显示人口最少的城市。

> Pandas Instructions:
```
eval("df.loc[df['population'].idxmin()]['city']")
```
eval("df.loc[df['population'].idxmin()]['city']")
> Pandas Output: Islamabad

而且,如果你打印回复,你会得到“伊斯兰堡”。这很简单,但令人印象深刻。您不必提出自己的逻辑或围绕代码进行实验。只需输入问题,您就会得到答案。

print(response)
Islamabad

您还可以使用响应元数据打印结果背后的代码。

print(response.metadata["pandas_instruction_str"])
eval("df.loc[df['population'].idxmin()]['city']")

全球优酷统计分析

在第二个示例中,我们将从 Kaggle 加载 2023 年全球 YouTube 统计数据集并执行一些基本面分析。这是从简单示例迈出的一步。

我们将用于将数据集加载到查询引擎中。然后我们将编写提示,仅显示具有缺失值和缺失值数量的列。read_csv

df_yt = pd.read_csv("Global YouTube Statistics.csv")
query_engine = PandasQueryEngine(df=df_yt, verbose=True)

response = query_engine.query(
    "List the columns with missing values and the number of missing values. Only show missing values columns.",
)
> Pandas Instructions:
```
df.isnull().sum()[df.isnull().sum() > 0]
```
df.isnull().sum()[df.isnull().sum() > 0]
> Pandas Output: category                                    46
Country                                    122
Abbreviation                               122
channel_type                                30
video_views_rank                             1
country_rank                               116
channel_type_rank                           33
video_views_for_the_last_30_days            56
subscribers_for_last_30_days               337
created_year                                 5
created_month                                5
created_date                                 5
Gross tertiary education enrollment (%)    123
Population                                 123
Unemployment rate                          123
Urban_population                           123
Latitude                                   123
Longitude                                  123
dtype: int64

现在,我们将直接询问有关流行频道类型的问题。在我看来,LlamdaIndex查询引擎非常准确,还没有产生任何幻觉。

response = query_engine.query(
    "Which channel type have the most views.",
)
> Pandas Instructions:
```
eval("df.groupby('channel_type')['video views'].sum().idxmax()")
```
eval("df.groupby('channel_type')['video views'].sum().idxmax()")
> Pandas Output: Entertainment
Entertainment

最后,我们将要求它可视化barchat,结果是惊人的。

response = query_engine.query(
    "Visualize barchat of top ten youtube channels based on subscribers and add the title.",
)
> Pandas Instructions:
```
eval("df.nlargest(10, 'subscribers')[['Youtuber', 'subscribers']].plot(kind='bar', x='Youtuber', y='subscribers', title='Top Ten YouTube Channels Based on Subscribers')")
```
eval("df.nlargest(10, 'subscribers')[['Youtuber', 'subscribers']].plot(kind='bar', x='Youtuber', y='subscribers', title='Top Ten YouTube Channels Based on Subscribers')")
> Pandas Output: AxesSubplot(0.125,0.11;0.775x0.77)

使用LlamaIndex构建自己的PandasAI

通过简单的提示和查询引擎,我们可以自动化数据分析并执行复杂的任务。喇嘛指数还有更多。我强烈建议您阅读官方文档并尝试构建令人惊叹的东西。

结论

总之,LlamaIndex是一个令人兴奋的新工具,它允许开发人员创建自己的PandasAI - 利用大型语言模型的强大功能进行直观的数据分析和对话。通过使用 LlamaIndex 索引和嵌入数据集,您可以对私有数据启用高级自然语言功能,而不会影响安全性或重新训练模型。

这只是一个开始,使用LlamaIndex,您可以构建文档,聊天机器人,自动化AI,知识图谱,AI SQL查询引擎,全栈Web应用程序的问答,并构建私有生成AI应用程序。

原文链接:使用LlamaIndex构建自己的PandasAI (mvrlink.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1002237.html

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

相关文章

为特征向量数据(1D数组)叠加噪声实现数据增强

为特征向量数据(1D数组)叠加噪声实现数据增强 日期作者版本备注2023.09.11Dog TaoV1.0完成文档的初始版本。 文章目录 为特征向量数据(1D数组)叠加噪声实现数据增强背景介绍叠加噪声的主要方法高斯噪声(Gaussian Nois…

移动机器人(浙大)(待补充)

目录 1.简介 1.1分类 1.2执行模式 2.运动学建模 2.1简述 2.2建模 2.2.1分量叠加 3.导航规划 ​编辑 4.路径规划 1.简介 1.1分类 按移动方式:轮式、履带式、足式、躯干式 1.2执行模式 未知的环境中构建局部地图/已知环境则有地图,根据环境和定位信息进…

AtCoder Beginner Contest 319(D-G)

D.Tasks - AtCoder Beginner Contest 319 (1)题意 给你一个M行得框框和N个单词,每个单词有一个宽度,每个单词之间应该用一个空格隔开,首位单词不需要,问至少需要多宽才能使得单词不会超过M行。 &#xff08…

Batch normalization和Layer normalization

深度学习的归一化方法 1 归一化的目的 当我们使用梯度下降法做优化时,随着网络深度的增加,输入数据的特征分布会不断发生变化,为了保证数据特征分布的稳定性,会加入Normalization。从而可以使用更大的学习率,从而加速…

快速搭建:对象存储平台MinIO

简介:MinIO 是一个高性能的对象存储服务器,兼容Amazon S3云存储服务。适用于大数据存储和用于构建私有云的场景。作为一个对象存储服务,它基于Apache License 开源协议,兼容Amazon S3云存储接口。适合存储非结构化数据&#xff0c…

【软件分析/静态分析】chapter8 课程11/12 指针分析—上下文敏感(Pointer Analysis - Context Sensitivity)

🔗 课程链接:李樾老师和谭天老师的: 南京大学《软件分析》课程11(Pointer Analysis - Context Sensitivity I)_哔哩哔哩_bilibili 南京大学《软件分析》课程12(Pointer Analysis - Context Sensitivity II&…

PCL入门(四):octree简单使用

目录 1. 八叉树(Octree)2. 简单使用 参考博客《三维点云数据的两种结构Kdtree和Octree》和《八叉树》 1. 八叉树(Octree) 只需要考虑三维情况下的八叉树的情况,如下 设置最大的递归深度;找出场景的最大尺寸,并据此创建第一个立方体若未到达…

linux安装jdk1.8

1.下载jdk安装包: https://www.oracle.com/cn/java/technologies/downloads/#java8-windows 2.创建java文件夹: mkdir /usr/local/java3.上传安装包并解压: tar -xzf jdk-xxx.tar.gz4.修改profile文件: vim /etc/profile在文…

计算机专业毕业设计项目推荐04-物业管理系统(SpringBoot+原生Js+Mysql)

物业管理系统(SpringBoot原生JsMysql) **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计…

物联网 低功耗蓝牙BLE GATT 实现微信小程序通信连接详细教程

蓝牙基本概念 蓝牙技术是一种无线通信的方式,利用特定频率的波段(2.4GHz ~ 2.485GHz左右),进行电磁波传输。蓝牙传输原理是主从关系,一个主设备可以与7个蓝牙从设备配对。 经典蓝牙 vs BLE 蓝牙分为经典蓝牙和低功耗…

最新软件测试面试题+笔试题(十个面试官里有九个会问)

2023最新软件测试面试大全看完offer拿到手软_哔哩哔哩_bilibili2023最新软件测试面试大全看完offer拿到手软共计21条视频,包括:1.HR已读不回问题分析以及如何解决、2.HR已读不回之针对性进行简历优化。、3.HR已读不回之针对性进行技能提升路线。等&#…

编程语言流行度排名(每月更新)

2023年09月编程语言流行度排名 编程语言流行度排名是通过分析在谷歌上搜索语言教程的频率而创建的 一门语言教程被搜索的次数越多,大家就会认为该语言越受欢迎。这是一个领先指标。原始数据来自谷歌Trends 如果您相信集体智慧,那么流行编程语言排名可以…

数据结构与算法之二叉树、二叉搜索树、平衡二叉树、红黑树、B - 树、哈夫曼树等详细教程(更新中)

第一章、二叉树概述和基本算法 1.1 二叉树遍历算法概述 对于二叉树,其实遍历顺序一共有6种,基于有左子树,右子树,根这三个因素,即排列组合有3 * 2 * 16种结合顺序,不过因为算法思想是一样的,就…

day 4

#!/bin/bashfunction adda() { #a($*)sum0 for i in $*do ((sumi))donereturn $sum }arr(5 4 3 2 1 50) adda ${arr[*]} add$? echo $addfunction A() { echo id -uecho id -g }BA echo "uid和gid分别是:"$Bxmind

基于springboot2+mybatis-plus+jsp增删改查

概述 编写简单增删改查,理解之后可以自己试着扩展,相信你也可以,加油,我自己懂了的用注释记在下面方便理解 详细 一、需求(要做什么) 基于现今最流行的技术实现增删改查demo, 便于初学者上手…

JAVAEE初阶相关内容第八弹--多线程(初阶)

本文目录 阻塞队列 阻塞队列是什么? 标准库中的阻塞队列 生产者消费者模型 阻塞队列的实现 普通队列实现: 入队列: 出队列: 完整代码: 加阻塞 加锁 加阻塞 阻塞队列 队列:先进先出,…

福立转债,科数转债上市价格预测

福立转债118043 基本信息 转债名称:福立转债,评级:AA-,发行规模:7.0亿元。 正股名称:福立旺,今日收盘价:20.07元,转股价格:21.28元。 当前转股价值 转债面值…

Java—JDK8新特性—重复注解

目录 重复注解是什么? 常见的重复注解的应用场景 源码(JDK中哪里?) 在实际开发中哪里使用了注解(举例) 使用步骤 案例 重复注解是什么? 重复注解,一个注解可以在一个类、方法、…

限流式保护器在古建筑消防安全中的应用

安科瑞 华楠 【摘要】我国古建筑众多且具有自身的消防安全特性。本文结合当前古建筑消防安全形势从消防管理、防火设计及火灾扑救三个方面对我国古建筑消防安全问题进行系统的阐述并提出相关对策。 【关键词】古建筑;消防安全;电气防火;限流…

C++ String类的简单实现(非模板)

头文件 #ifndef MY_STRING_H #define MY_STRING_Hclass Mstring {private:int m_length;char* m_pointer;public://构造函数Mstring();//有参构造Mstring(const char* str);//拷贝构造Mstring(const Mstring& obj);//获取长度int length()const;//转换为C字符串const char…