安装

要使用 pandasai,首先安装它:

# Using poetry (recommended)

poetry add pandasai



# Using pip

pip install pandasai

在安装之前,我们建议您使用您偏好的环境管理器创建一个虚拟环境,例如 Poetry, Pipenv, Conda, Virtualenv, Venv 等。

可选依赖项

为了保持安装包的大小较小,pandasai 默认不包含所有支持的依赖项。您可以通过运行以下命令来安装额外的依赖项:

pip install pandasai[extra-dependency-name]

你可以用以下任意一个替换extra-dependency-name

  • google-ai: 如果你想使用Google PaLM作为语言模型,这个额外的依赖是必需的。
  • google-sheet: 如果您想使用Google Sheets作为数据源,则需要此额外依赖项。
  • excel: 如果你想使用Excel文件作为数据源,则需要这个额外的依赖项。
  • modin: 如果你想使用Modin数据框作为数据源,则需要此额外依赖项。
  • polars: 如果你想使用Polars数据框作为数据源,则需要此额外依赖项。
  • langchain: 如果您想支持LangChain LLMs,则需要此额外依赖项。
  • numpy: 如果你想支持numpy,这个额外的依赖是必需的。
  • ggplot: 如果您想支持使用 ggplot 进行绘图,则需要此额外依赖项。
  • seaborn: 如果您希望支持使用 seaborn 进行绘图,则需要此额外依赖项。
  • plotly: 如果您想支持使用plotly进行绘图,则需要此额外依赖项。
  • statsmodels: 如果您想支持statsmodels,则需要此额外依赖项。
  • scikit-learn: 如果您想支持 scikit-learn,则需要此额外依赖项。
  • streamlit: 如果你想支持streamlit,这个额外的依赖是必需的。
  • ibm-watsonx-ai: 如果您想使用IBM watsonx.ai作为语言模型,则需要此额外依赖项

智能数据框架

SmartDataframe 类是 pandasai 的主要类。它用于与单个数据框进行交互。以下是一个简单的示例,帮助您开始使用 pandasai

import os

import pandas as pd

from pandasai import SmartDataframe



# Sample DataFrame

sales_by_country = pd.DataFrame({

    "country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],

    "sales": [5000, 3200, 2900, 4100, 2300, 2100, 2500, 2600, 4500, 7000]

})



# By default, unless you choose a different LLM, it will use BambooLLM.

# You can get your free API key signing up at https://pandabi.ai (you can also configure it in your .env file)

os.environ["PANDASAI_API_KEY"] = "YOUR_API_KEY"



df = SmartDataframe(sales_by_country)

df.chat('Which are the top 5 countries by sales?')

# Output: China, United States, Japan, Germany, Australia

如果你想了解更多关于SmartDataframe类的内容,请查看这个视频:

如何生成BambooLLM API令牌

为了使用BambooLLM,您需要生成一个API令牌。按照以下简单步骤使用PandaBI生成令牌:

  1. 前往 https://pandabi.ai 并使用您的电子邮件地址注册或连接您的Google账户。
  2. 转到设置页面上的API部分。
  3. 选择创建新的API密钥。

如何生成OpenAI API令牌

为了使用OpenAI语言模型,用户需要生成一个令牌。按照以下简单步骤使用openai生成令牌:

  1. 前往 https://openai.com/api/ 并使用您的电子邮件地址注册或连接您的谷歌账户。
  2. 转到个人账户设置左侧的查看API密钥。
  3. 选择创建新的密钥。

访问OPENAI的API是一项付费服务。您需要设置账单。 在实验之前,请确保阅读了Pricing信息。

为数据框传递名称和描述

有时,为了帮助LLM更好地工作,您可能希望传递数据框的名称和描述。您可以按如下方式操作:

df = SmartDataframe(df, name="My DataFrame", description="Brief description of what the dataframe contains")

智能数据湖

PandasAI 还支持使用多个数据框进行查询。要执行此类查询,您可以使用 SmartDatalake 而不是 SmartDataframe

类似于SmartDataframe,你可以按如下方式实例化一个SmartDatalake

import os

import pandas as pd

from pandasai import SmartDatalake



employees_data = {

    'EmployeeID': [1, 2, 3, 4, 5],

    'Name': ['John', 'Emma', 'Liam', 'Olivia', 'William'],

    'Department': ['HR', 'Sales', 'IT', 'Marketing', 'Finance']

}



salaries_data = {

    'EmployeeID': [1, 2, 3, 4, 5],

    'Salary': [5000, 6000, 4500, 7000, 5500]

}



employees_df = pd.DataFrame(employees_data)

salaries_df = pd.DataFrame(salaries_data)



# By default, unless you choose a different LLM, it will use BambooLLM.

# You can get your free API key signing up at https://pandabi.ai (you can also configure it in your .env file)

os.environ["PANDASAI_API_KEY"] = "YOUR_API_KEY"



lake = SmartDatalake([employees_df, salaries_df])

lake.chat("Who gets paid the most?")

# Output: Olivia gets paid the most

PandasAI 将自动识别与查询相关的数据框,并仅使用这些数据框来回答查询。

代理

虽然SmartDataframeSmartDatalake可以用于回答单个查询,并且旨在用于单个会话和探索性数据分析,但代理可以用于多轮对话。

要实例化一个代理,你可以使用以下代码:

import os

from pandasai import Agent

import pandas as pd



# Sample DataFrames

sales_by_country = pd.DataFrame({

    "country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],

    "sales": [5000, 3200, 2900, 4100, 2300, 2100, 2500, 2600, 4500, 7000],

    "deals_opened": [142, 80, 70, 90, 60, 50, 40, 30, 110, 120],

    "deals_closed": [120, 70, 60, 80, 50, 40, 30, 20, 100, 110]

})





# By default, unless you choose a different LLM, it will use BambooLLM.

# You can get your free API key signing up at https://pandabi.ai (you can also configure it in your .env file)

os.environ["PANDASAI_API_KEY"] = "YOUR_API_KEY"



agent = Agent(sales_by_country)

agent.chat('Which are the top 5 countries by sales?')

# Output: China, United States, Japan, Germany, Australia

SmartDataframeSmartDatalake不同,代理将跟踪对话的状态,并能够回答多轮对话。例如:

agent.chat('And which one has the most deals?')

# Output: United States has the most deals

澄清问题

如果代理没有足够的信息来回答查询,它也将能够提出澄清问题。例如:

agent.clarification_questions('What is the GDP of the United States?')

这将返回最多3个澄清问题,代理可以询问用户以获取更多信息来回答查询。

解释

代理还能够向用户解释给出的答案。例如:

response = agent.chat('What is the GDP of the United States?')

explanation = agent.explain()



print("The answer is", response)

print("The explanation is", explanation)

重述问题

重新表述问题以从模型中获得准确和全面的响应。例如:

rephrased_query = agent.rephrase_query('What is the GDP of the United States?')



print("The rephrased query is", rephrased_query)


配置

要自定义PandasAI的SmartDataframe,您可以在实例化时传递一个带有特定设置的config对象,或者修改项目根目录中的pandasai.json文件。后者作为默认配置,但可以通过在创建时直接在config对象中指定设置来覆盖。这种方法确保了PandasAI处理数据的灵活性和精确性。

设置:

  • llm: 使用的LLM。您可以传递一个LLM的实例或LLM的名称。您可以使用支持的LLM之一。您可以在此找到更多关于LLM的信息here
  • llm_options: 用于LLM的选项(例如API令牌等)。您可以在此处找到有关设置的更多信息here
  • save_logs: 是否保存LLM的日志。默认为True。您将在项目根目录下的pandasai.log文件中找到日志。
  • verbose: 是否在PandasAI执行时在控制台打印日志。默认为False
  • enforce_privacy: 是否强制执行隐私。默认为 False。如果设置为 True,PandasAI 将不会向 LLM 发送任何数据,而只会发送元数据。默认情况下,PandasAI 会发送 5 个经过匿名化的样本以提高结果的准确性。
  • save_charts: 是否保存由PandasAI生成的图表。默认为False。您将在项目的根目录或save_charts_path指定的路径中找到这些图表。
  • save_charts_path: 保存图表的路径。默认为 exports/charts/。您可以使用此设置来覆盖默认路径。
  • open_charts: 是否在解析LLM的响应时打开图表。默认为True。您可以通过将此选项设置为False来完全禁用图表的显示。
  • enable_cache: 是否启用缓存。默认为 True。如果设置为 True,PandasAI 将缓存 LLM 的结果以提高响应时间。如果设置为 False,PandasAI 将始终调用 LLM。
  • use_error_correction_framework: 是否使用错误纠正框架。默认为 True。如果设置为 True,PandasAI 将尝试通过进一步调用 LLM 来纠正 LLM 生成的代码中的错误。如果设置为 False,PandasAI 将不会尝试纠正 LLM 生成的代码中的错误。
  • max_retries: 使用错误纠正框架时的最大重试次数。默认为 3。您可以使用此设置来覆盖默认的重试次数。
  • custom_whitelisted_dependencies: 使用的自定义白名单依赖项。默认为 {}。您可以使用此设置来覆盖默认的自定义白名单依赖项。您可以在此处找到更多关于自定义白名单依赖项的信息 here
  • security: “security”参数根据具体使用场景允许三个级别:“none”、“standard”和“advanced”。“standard”和“advanced”特别适用于检测用户查询中的恶意意图,并避免执行可能有害的代码。默认情况下,“security”设置为“standard”。安全检查可能会引入更严格的规则,可能会将无害的查询标记为有害。您可以通过在配置中将“security”设置为“none”来停用它。

在Google Colab中的演示

在您的浏览器中试用PandasAI:

其他示例

你可以找到所有其他示例 这里.