Press "Enter" to skip to content

介绍PandasAI:一款由GenAI驱动的数据分析库

介绍

在生成式人工智能领域,最近出现了激增和突破,引起了数据领域的混乱。公司们正在努力看如何充分利用这些创新,例如ChatGPT。这将帮助任何企业获得竞争优势。一种全新的前沿创新是将一种名为“PandasAI”的GenAI驱动的数据分析库引入到常规Pandas库中。OpenAI已经做到了这一点。与生成式AI的其他领域不同,PandasAI将GenAI技术应用于分析工具Pandas。

顾名思义,它直接将人工智能应用于传统的Pandas库。Pandas库在数据领域中与Python一起在预处理和数据可视化等任务中变得非常流行,而这种创新使其变得更好。

学习目标

  • 了解新的PandasAI
  • 使用PandasAI进行对话查询
  • 使用PandasAI绘制图表
  • 介绍PandasAI及其后端(GenAI)

本文是数据科学博文马拉松的一部分。

PandasAI是什么?

PandasAI是一个使用生成式AI模型在pandas中执行任务的Python库。它是一个集成生成式人工智能功能的库,使用提示工程使Pandas数据框具有对话功能。当我们提到Pandas时,我们会想到数据分析和处理。通过PandasAI,我们试图通过GenAI的帮助提高我们的Pandas的生产力。

介绍PandasAI:一款由GenAI驱动的数据分析库 四海 第1张

为什么使用PandasAI?

在生成式人工智能的帮助下,我们都需要给数据集提供对话提示。这带来了不需要学习或理解复杂代码的优势。数据科学家可以通过与数据集对话的方式查询数据集,使用自然的人类语言并获得结果。这样可以节省预处理和分析的时间。这是一个新的革命,程序员不需要编写代码,他们只需要说出他们的想法,然后看到他们的指令被执行。即使非技术人员也可以构建系统,而无需编写任何复杂的代码!

PandasAI如何工作?

在我们看到如何使用PandasAI之前,让我们先看看它是如何工作的。我们在这里多次提到了“生成式人工智能”的术语。它作为实现PandasAI的技术。生成式人工智能(GenAI)是人工智能的一个子集,可以生成各种数据类型,包括文本、音频、视频、图片和3D模型。它通过识别已收集的数据中的模式并利用它们来创建新颖和独特的输出来实现这一目标。

介绍PandasAI:一款由GenAI驱动的数据分析库 四海 第2张

另一个需要注意的是使用大型语言模型(LLMs)。PandasAI已经在LLMs上进行了训练,LLMs是由许多参数(数以千万甚至数十亿)组成的人工神经网络(ANN)模型。所有这些都有助于PandasAI背后的模型能够接受人类指令并在解释之前对其进行标记化处理。PandasAI还被设计用于处理LangChain模型,使构建LLM应用程序更加容易。

开始使用Pandas AI

现在让我们看看如何使用PandasAI。我们将看到两种使用PandasAI的方法。首先是使用LangChain模型,然后是直接实现。

使用LangChain模型

要使用LangChain模型,首先需要安装Langchain包:

pip install langchain

然后我们可以实例化一个LangChain对象:

from pandasai import PandasAI
from langchain.llms import OpenAI

langchain_llm = OpenAI(openai_api_key="my-openai-api-key")
pandasai = PandasAI(llm=langchain_llm)

你的环境已经准备好了,PandasAI将自动使用LangChain llm将其转换为PandasAI llm。

直接实施(不使用LangChain)

本文使用第二种方法,即安装PandasAI而不使用LangChain。在撰写本文时,Colab没有像Pandas那样预安装PandasAI。这就是为什么我们需要先安装它。

pip install pandasai

另一个重要的事项是,您需要一个OpenAI API密钥才能使用PandaAI。您可以在OpenAI平台上创建一个帐户并生成一个API密钥。访问此处创建密钥。

记住将密钥妥善保管以供将来使用,因为返回到该网站将不会给您复制密钥的访问权限。我也隐藏了我的API密钥以管理我的信用。请做同样的操作!

注意:使用免费的OpenAI帐户,由于每分钟限制为3个提示,您可能无法方便地使用PandasAI绘制图形。这是为了管理系统的高需求和最大化利用。

导入依赖项

让我们继续导入我们的依赖项。

import pandas as pd

# PandasAI
from pandasai import PandasAI

# For charts
import seaborn as sns

# 从seaborn导入内置的iris数据集
iris = sns.load_dataset('iris')

# 查看前几行
iris.head()

介绍PandasAI:一款由GenAI驱动的数据分析库 四海 第3张

接下来,我们从之前安装的Pandasai中导入OpenAI。请确保在运行代码之前插入您的API密钥,如下所示。

# 示例DataFrame
df = iris

# 实例化LLM
from pandasai.llm.openai import OpenAI

# 分配API密钥
llm = OpenAI(api_token="INSERT_YOUR_API_KEY_HERE")

# 调用PandasAI
pandas_ai = PandasAI(llm)

会话查询

现在让我们看一些关于iris数据集的文本提示。

示例1

prompt=’哪个物种最常见?’

# 运行PandasAI提示
pandas_ai.run(df, prompt='哪个物种最常见?')

哦,最常见的物种实际上是setosa!

示例2

prompt=’sepal_length的平均值是多少?’

# 调用PandasAI
pandas_ai = PandasAI(llm)

# 运行PandasAI提示
pandas_ai.run(df, prompt='sepal_length的平均值是多少?')

数据集的平均花萼长度为5.84。

示例3

prompt=’sepal_width的平均值是多少?’

# 调用PandasAI
pandas_ai = PandasAI(llm)

# 运行PandasAI提示
pandas_ai.run(df, prompt='sepal_width的平均值是多少?')

平均花萼宽度为3.0573333333333337。

示例4

prompt=’petal_length最常见的是哪个?’

# 调用PandasAI
pandas_ai = PandasAI(llm)

# 运行PandasAI提示
pandas_ai.run(df, prompt='petal_length最常见的是哪个?')

根据提供的数据,最常见的花瓣长度是1.4。

使用PandasAI绘制图形

是的,我们不仅可以生成文本!我们还可以使用PandasAI生成绘图和图形。如果没有付费的API密钥,它可能会生成RateLimitError。您可以不时地尝试运行提示。在20秒间隔内,或者您可以简单地获取一个付费计划。

处理PandasAI中的RateLimitError

当您开始生成图表或图形时,您很可能会遇到RateLimitError。这是那些使用免费API密钥的用户将遇到的问题。首先一种解决方法是购买付费计划。这样可以获得更多的信用和资源来执行需要的任务。但是如果您只是想进行实验或仅具有免费密钥的访问权限,您必须手动调节代码的运行方式。您应该使用免费帐户运行仅限数量的提示,每个提示之间间隔大约为20秒。这样您可以以20秒的间隔运行代码。这是为了在高需求下管理服务器之间的用户。

示例1

Prompt = ’“绘制条形图。”

# 运行PandasAI提示
response = pandas_ai.run(
    df,
    "绘制条形图",
)
print(response)

介绍PandasAI:一款由GenAI驱动的数据分析库 四海 第4张

当然,这是数据集中条目的条形图。它显示了每个变量的值分布,包括萼片长度、萼片宽度、花瓣长度、花瓣宽度和物种。直方图是一种有用的方式来可视化数据并查看可能存在的任何模式或趋势。

示例2

Prompt = ‘绘制萼片长度和萼片宽度的散点图’

# 运行Pandas AI命令
response = pandas_ai.run(
    df,
    "绘制萼片长度和萼片宽度的散点图",
)
print(response)

介绍PandasAI:一款由GenAI驱动的数据分析库 四海 第5张

当然!要创建萼片长度和萼片宽度的散点图,我们可以使用表中提供的数据。该表包括萼片长度、萼片宽度、花瓣长度、花瓣宽度和物种的列。我们可以只关注萼片长度和萼片宽度列来创建图形。

示例3

Prompt = “绘制物种的萼片长度和萼片宽度的散点图”

# 运行Pandas AI命令
response = pandas_ai.run(
    df,
    "绘制物种的萼片长度和萼片宽度的散点图",
)
print(response)

介绍PandasAI:一款由GenAI驱动的数据分析库 四海 第6张

当然!要绘制物种的萼片长度和萼片宽度的散点图,我们可以使用提供的数据集,其中包含萼片长度、萼片宽度、花瓣长度、花瓣宽度和物种的列。我们将只关注萼片长度和萼片宽度列。然后,我们可以创建一个以萼片长度为x轴、萼片宽度为y轴的散点图。这将使我们能够可视化数据集中每个物种之间这两个变量之间的任何潜在关系。

可能性不断增加。您可以尝试您的命令并查看结果。目标是利用生成式人工智能带来的好处。

结论

我们已经看到,通过利用大型语言模型从数据集中提取见解,Pandas AI可以潜在地改变数据分析。然而,它受限且需要人工验证以确保准确性。这个问题可以通过学习提示工程来解决。因此,我们可以得出结论,PandasAI等于Pandas + AI。更具体地说,我们可以说Pandas + 生成式AI。所有这些都是通过命令实现的,允许用户以人与人的方式与任务进行交互。提示经过高级自然语言处理处理,并将其与其他任务结合在一起。

主要观点

  • 生成式AI的进展扰乱了数据,引领公司探索像ChatGPT和PandasAI这样的创新解决方案,改进数据分析和可视化。
  • PandasAI是一个使用生成式AI模型操作的Python库,通过改进数据分析和处理、应用提示工程和GenAI功能来提高Pandas的生产力。
  • 生成式AI节省时间,通过对话式命令实现非技术性系统构建。

常见问题(FAQs)

  • Github代码:https://github.com/inuwamobarak/pandasAI
  • PandasAI:https://github.com/gventuri/pandas-ai
  • https://miro.medium.com/v2/resize:fit:1358/0*uPrVQazL1U4woEO9.png
  • Pandasai艺术作品:https://github.com/gventuri/pandas-ai/blob/main/images/pandas-ai.png?raw=true

本文中显示的媒体不归Analytics Vidhya所有,仅由作者自行决定使用。

Leave a Reply

Your email address will not be published. Required fields are marked *