PandasAI是一款数据分析领域的ChatGPT应用,本文对原项目进行翻译旨在进行知识科普和梳理。这个项目的github地址为:https://github.com/gventuri/pandas-ai
Pandas AI 是一个 Python 库,它为 Pandas(一款流行的数据分析和操作工具)增加了生成式人工智能功能。它设计用于与 Pandas 共同使用,并非替代 Pandas。
PandasAI
演示
在你的浏览器中试试 PandasAI:[7]
大家可以在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 pd
from pandasai import PandasAI
# 示例 DataFrame
df = 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]
})
# 实例化一个 LLM
from pandasai.llm.openai import OpenAI
llm = OpenAI()
pandas_ai = PandasAI(llm, conversational=False)
pandas_ai.run(df, prompt='哪五个国家最快乐?')
上述代码将返回以下内容:
6 Canada
7 Australia
1 United Kingdom
3 Germany
0 United States
Name: 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 的构造函数:
# OpenAI
llm = OpenAI(api_token="你的OpenAI_API_KEY")
# Starcoder
llm = 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