前言

PandasAI是一款数据分析领域的ChatGPT应用,本文对原项目进行翻译旨在进行知识科普和梳理。这个项目的github地址为:https://github.com/gventuri/pandas-ai

PandasAI ?

Pandas AI 是一个 Python 库,它为 Pandas(一款流行的数据分析和操作工具)增加了生成式人工智能功能。它设计用于与 Pandas 共同使用,并非替代 Pandas。

PandasAI

演示

在你的浏览器中试试 PandasAI:[7]

演示地址:https://colab.research.google.com/drive/1rKz7TudOeCeKGHekw7JFNL4sagN9hon-?usp=sharing#scrollTo=MhByl8oxEJFH

大家可以在colab上进行功能尝试,只是在代码生成阶段需要填入自己的API key。除了可以选用ChatGPT外,也可以选用HuggingFace Hub 的LLM —Starcoder,只是也要输入HuggingFace的key。

安装

pip install pandasai

使用

免责声明:国内生产总值(GDP)数据收集自此处[8],由世界发展指标(World Development Indicators)-世界银行(World Bank)(2022.05.26)收集,国民账户数据(National Account data)-世界银行/经合组织(World Bank/OECD)收集。它与2020年有关。幸福指数从世界幸福报告[9]中提取。还可以看一下另一个有用的链接[10]

PandasAI 设计用于与 Pandas 共同使用。它使 Pandas 具有对话能力,允许你向你的数据以 Pandas DataFrame 的形式提问并获得答案。例如,你可以要求 PandasAI 查找 DataFrame 中某列的值大于 5 的所有行,它将返回只包含符合要求的那些行的 DataFrame:

import pandas as pdfrom pandasai import PandasAI
# 示例 DataFramedf = pd.DataFrame({ "country": [
#"United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"], 
#"gdp": [19294482071552, 2891615567872, 2411255037952, 3435817336832, 1745433788416, 1181205135360, 1607402389504, 1490967855104, 4380756541440, 14631844184064], 
#"happiness_index": [6.94, 7.16, 6.66, 7.07, 6.38, 6.4, 7.23, 7.22, 5.87, 5.12]})
# 实例化一个 LLMfrom pandasai.llm.openai import OpenAIllm = OpenAI()
pandas_ai = PandasAI(llm, conversational=False)pandas_ai.run(df, prompt='哪五个国家最快乐?')

上述代码将返回以下内容:

6 Canada7 Australia1 United Kingdom3 Germany0 United StatesName: country, dtype: object

当然,你也可以让 PandasAI 执行更复杂的查询。例如,你可以要求 PandasAI 找出两个最不快乐的国家的 GDP 总和:

pandas_ai.run(df, prompt='两个最不快乐的国家的 GDP 总和是多少?')

上述代码将返回以下内容:

19012600725504

你也可以要求 PandasAI 绘制图表:

pandas_ai.run( df,    "绘制显示各国 GDP 的直方图,每个柱子使用不同的颜色",)
Chart

你可以在示例[11]目录中找到更多示例。

隐私和安全

为了生成运行的 Python 代码,我们取 dataframe 的head,将其随机化(对敏感数据使用随机生成,对非敏感数据进行打散)并只发送head。

此外,如果你想进一步加强你的隐私,你可以将 PandasAI 实例化为 enforce_privacy = True,这将不会发送head(只发送列名)给 LLM。

原理

首先我们clone一份代码,找到入口:

如代码所示,主要分三步:

第一步:选择一个大模型,并实例化一个模型对象

第二步:实例化PandasAI对象

第三步:进行代码和结果生成

下面我们分别来走马观光式地看一看里面的代码:

1. 实例化大模型

有以下两种大模型可供选择,感兴趣的同学自己去详看代码:

大模型主要承担代码生成的工作。

2. PandasAI对象

我们主要关注一下它的run方法:

环境变量

由于需要借助LLM(大模型)的能力进行分析结果生成,这里需要设置LLM的API key。

为了设置 LLM(Hugging Face Hub或OpenAI)的 API 密钥,你需要设置适当的环境变量。你可以通过复制 .env.example 文件到 .env 来完成此操作:

cp .env.example .env

然后,编辑 .env 文件并设置适当的值。

另外,你也可以直接将环境变量传递给 LLM 的构造函数:

# OpenAIllm = OpenAI(api_token="你的OpenAI_API_KEY")
# Starcoderllm = Starcoder(api_token="你的HF_API_KEY")

许可证

PandasAI 采用 MIT 许可证。有关更多详细信息,请查看 LICENSE 文件。

贡献

欢迎贡献!请查看以下待办事项,并随时提交拉取请求。更多信息,请参见贡献指南[12]

在安装虚拟环境后,请记得安装 pre-commit 以符合我们的标准:

pre-commit install

待办事项

• 添加对更多 LLM 的支持• 让 PandasAI 可以从命令行界面使用• 为 PandasAI 创建一个网页界面• 添加单元测试• 添加贡献指南• 添加 CI• 添加对对话响应的支持

References

[1] : https://pypi.org/project/pandasai/
[2] : https://github.com/gventuri/pandas-ai/actions/workflows/ci.yml/badge.svg
[3] : https://discord.gg/kF7FqH2FwS
[4] : https://pepy.tech/project/pandasai
[5] : https://opensource.org/licenses/MIT
[6] : https://colab.research.google.com/drive/1rKz7TudOeCeKGHekw7JFNL4sagN9hon-?usp=sharing
[7] : https://colab.research.google.com/drive/1rKz7TudOeCeKGHekw7JFNL4sagN9hon-?usp=sharing
[8] 此源: https://ourworldindata.org/grapher/gross-domestic-product?tab=table
[9] 世界幸福报告: https://ftnnews.com/images/stories/documents/2020/WHR20.pdf
[10] 链接: https://data.world/makeovermonday/2020w19-world-happiness-report-2020
[11] 示例: examples
[12] 贡献指南: CONTRIBUTING.md

来源:https://mp.weixin.qq.com/s/OoA-e3sqwwJG6ZfrpztPxQ