PandasAI——让AI做数据分析

容器人工智能与算法MySQL
前言

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

PandasAI 🐼

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

picture.image PandasAI

演示

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

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

picture.image

大家可以在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 的直方图,每个柱子使用不同的颜色",
          
)
      

picture.image Chart

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

隐私和安全

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

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

原理

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

picture.image

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

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

第二步:实例化PandasAI对象

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

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

1. 实例化大模型

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

picture.image

picture.image

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

2. PandasAI对象

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

picture.image

picture.image

环境变量

由于需要借助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

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论