极简数据分析:LangChain与ChatGPT交互
本文作者:罗天尧 新疆大学商学院
本文编辑:管文娜
技术总编:郭泽源
Stata and Python 数据分析
爬虫俱乐部将于2023年8月1日至9日在河南大学(河南开封)举行Stata编程技术和Python编程技术定制培训,同时在网络平台进行直播,提供线上学习的方式。线上线下培训均有专门的答疑团队。大家感兴趣请点击推文链接《爬虫俱乐部2023第一期编程训练营开始报名啦!》或点击文末阅读原文查看课程详情及报名方式!
在数据分析领域,NumPy和Pandas提供了丰富的语法和功能,但对于一些初学者或非专业人士来说,它们可能会稍显复杂。这时,LangChain可以减轻你的负担,助你专注于数据分析本身。
#pip install openai #python.exe -m pip install --upgrade pip
#pip install tabulate
import pandas as pd
from langchain.chat_models import ChatOpenAI
from langchain.agents import create_pandas_dataframe_agent
from langchain.agents.agent_types import AgentType
import os
2.数据与秘钥准备
os.environ['OPENAI_API_KEY'] = 'U KEY'
#测试集
data = {
'Date': ['2023-06-28', '2023-06-29', '2023-06-30', '2023-07-01', '2023-07-02'],
'Open': [100.0, 102.5, 99.8, 101.2, 103.0],
'High': [105.0, 103.5, 101.2, 104.0, 106.0],
'Low': [98.0, 101.2, 98.5, 99.8, 101.0],
'Close': [103.2, 100.8, 100.0, 102.0, 105.5],
'Volume': [1000000, 1200000, 800000, 900000, 1100000]
}
3.调用模型进行分析
将模型参数等传入agent实例化。
df = pd.DataFrame(data)
agent = create_pandas_dataframe_agent(
ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613"),
df,
verbose=True,
agent_type=AgentType.OPENAI_FUNCTIONS,
) #openai接口模型,数据,输出详情,代理类型
agent.run("该数据中共有几日的交易数据?最高价是哪一天?") #传入Prompt
agent.run("振幅是多少?")
langchain.schema.OutputParserException: Could not parse tool input: {'name': 'python', 'arguments': "df['Daily Return'] = df['Close'].pct_change()\ndf"} because the `arguments` is not valid JSON.
{'__arg1': "df['Daily Return'] = df['Close'].pct_change()\ndf"}
#将"\python\lib\site-packages\langchain\agents\openai_functions_agent\base.py"中的_parse_ai_message改写为:
def _parse_ai_message(message: BaseMessage) -> Union[AgentAction, AgentFinish]:
"""Parse an AI message."""
if not isinstance(message, AIMessage):
raise TypeError(f"Expected an AI message got {type(message)}")
function_call = message.additional_kwargs.get("function_call", {})
if function_call:
function_call = message.additional_kwargs["function_call"]
function_name = function_call["name"]
try:
#print(function_call["arguments"])
_tool_input = json.loads(function_call["arguments"])
#print(_tool_input)
except JSONDecodeError:
try:
_tool_input = json.dumps({"__arg1": function_call["arguments"]})
_tool_input = json.loads(_tool_input)
#print(_tool_input)
except:
raise OutputParserException(
f"Could not parse tool input: {function_call} because "
f"the `arguments` is not valid JSON."
)
df['Daily Return'] = df['Close'].pct_change()
df['Daily Return']
重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
爬取A股上市公司指定年份年报
机器学习——监督学习入门禁忌魔法解封,击穿专业壁垒:ChatGPT code interpreter暑期来啦~⼀起看⼀看近期的天⽓情况【命令重磅更新】在Stata中深入使用ChatGPT爬虫俱乐部2023第一期编程训练营开始报名啦!
【爬虫基础】Scrapy爬虫框架迈向交互式编程,ChatGPT更新!一个简单又好玩的Python库——MyQR
replace命令的“加强版”!——如何使用ereplace,结合egen
XML 轻松读取:用 Python 发现数据宝藏
爬虫俱乐部重磅推出cnstata.com.cn
Markdown:让数学公式输入更方便!
处理日期的好手:pendulumWhat’ new ? 速通Stata 18
【爬虫实战】Python爬取美食菜谱揭秘网络中心人物,你会是其中之一吗? 关于我们微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。