大家好,数据分析和数据处理是数据科学领域每天都在进行的基本任务。高效和快速的数据转换对于提取有意义的见解和基于数据做出明智决策至关重要。其中最受欢迎的工具之一是Python库Pandas,它提供了一个功能强大的DataFrame工具,使用灵活直观的结构简化了这些任务。
然而,DataFrame需要编写代码,对于没有编程知识的人来说可能具有挑战性。为了弥补这一差距,使数据分析更广泛地应用,LangChain和OpenAI的GPT-4的组合非常有用。
本文我们将探索如何通过LangChain、GPT-4和Pandas的协作,创建一个以代理形式呈现的交互式DataFrame。我们可以使用自然语言与该代理进行交互,并要求它执行各种以前需要编程知识才能完成的分析任务。
一、LangChain和GPT-4
我们将深入了解LangChain和GPT-4的基础知识,当这两个工具结合在一起时,它们能够创建一个由OpenAI自然语言模型驱动的智能代理。
1.1 LangChain:用于智能代理的编程语言
LangChain是一个旨在创建智能代理的项目。它提供了一个独特的接口,允许用户使用人类语言指令与代理进行交互,而无需复杂的代码,使得即使没有编程知识,也能进行交互。
LangChain最显著的特点是它能够理解和处理用人类语言编写的指令。在内部,它利用先进的自然语言处理技术来理解指令并将其转换为可以执行的代码。LangChain使我们的代理能够理解、处理和执行指令,以执行数据分析和处理任务。
1.2 GPT-4:自然语言处理的进展
Generative Pre-trained Transformed 4,简称GPT-4,是由OpenAI开发的一种先进的大型语言模型。GPT-4目前是最新、最先进的大型语言模型,提供了广泛的自然语言处理能力。它经过大规模数据集的训练,使其能够对任何主题生成连贯和与上下文相符的回答。
尽管GPT-4具有强大的功能,但它的主要优势之一是能够理解和生成类似人类的文本。它可以学习语言的模式、细微差别和风格,使其能够理解指令并根据其生成结果。GPT-4通过为代理提供处理和生成自然语言指令的能力,从而增强了LangChain。
图片由MidJourney生成
二、训练代理
LangChain有一个特定的用于Pandas的库,称为pandas_dataframe_agent
。这是一个功能强大的工具,可以高效处理大型数据集,并允许进行高级查询和转换。它在数据分组和聚合以及统计分析等任务方面表现出色。此外,它还可以进行过滤、连接、合并、掩码等许多其他操作。
准备好后开始训练代理。
2.1 设置舞台
!pip install langchain
import os
os.environ["OPENAI_API_KEY"] = ""
我们需要安装langchain
库,此外还需要将环境变量设置为OpenAI API密钥,并使用自己的API密钥更新代码。通过设置密钥,可以确保API调用经过身份验证和授权,以供代理使用。
from langchain.agents import create_pandas_dataframe_agent
from langchain.llms import OpenAI
import pandas as pd
需要导入已安装的库,注意还导入了OpenAI,LangChain有多个大型语言模型可用,但本示例使用OpenAI。
2.2 获取一些数据
获取一些数据,对于本示例将使用来自Kaggle的Titanic数据集:
【Titanic数据集】:https://www.kaggle.com/c/titanic
df = pd.read_csv('titanic.csv')
查看数据帧的前10行:
Titanic数据集的前10行
2.3 实例化代理
在准备好数据后,需要实例化代理:
agent = create_pandas_dataframe_agent(OpenAI(temperature=0,
model_name = 'gbt4'),
df,
verbose=True)
我们需要创建一个LangChain代理,使用OpenAI的语言模型来处理自然语言,然后从提供的CSV文件titanic.csv
创建一个Pandas DataFrame代理。将温度设置为0,以便从GPT-4中获取最可能的响应。
三、向代理提问
从简单的问题开始,将逐渐挑战代理来回答更复杂的问题,从第一个问题开始:
agent.run("How many passengers were onboard the Titanic?")
正如所看到的,代理经过了所有人类的步骤,识别了问题、找到了正确的操作输入,并返回了最终答案。再提高一点难度:
agent.run("""
How many passengers had more than 2 siblings?
Return the answer as a product of Pi
""")
代理试图用Pi来进行乘法运算,然而所需的库没有被导入,因此它导入了该库并最终得到了正确的答案。尝试使用稍微复杂一点的提示来进行最后一个示例:
agent.run("What was the survival rate for each gender?")
同样,该代理通过使用groupby
并取输出的平均值,正确地识别了操作输入。
图片由MidJourney生成
综上所述,LangChain、GPT-4和Pandas的融合使我们能够创建智能的DataFrame代理,使数据分析和处理变得简单。可以使用自然语言与代理进行交互,拓宽进行数据分析的方法,降低门槛。除了简单的过滤和数据清理任务外,代理还可以执行更复杂的操作,这通常需要高级代码。
本文中逐步从零开始构建了一个代理,并展示了与之交互的简便性。另一个很酷的事情是,代理在执行过程中展示了其思考过程,从而使得调试和透明化变得容易。
可以通过创建自己的代理来探索LangChain和GPT-4的可能性,向它提问,并通过数据分析为你所热衷的领域提供价值,来探索LangChain和GPT-4的可能性。由于LangChain和GPT-4等工具的存在,数据分析的未来将比以往任何时候都更加光明。