m0_58296881 2022-06-07 17:01 采纳率: 100%
浏览 598
已结题

Python报错:name ’get_price’ is not defined ,请问要怎么解决呀,前面已经对get_price定义了呀

我进行月份效应的检验,输入代码如下:

月份效应

获取数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False

def get_daily_ret(security,start_date,end_date):
df=get_price(security, start_date,end_date, frequency='daily', fields=['open','close','high','low','volume','money'])
df.index=pd.to_datetime(df.index)

计算收益率

daily_ret=df['close'].pct_change()

删除缺失值

daily_ret=daily_ret.dropna()
return daily_ret

月度收益情况

def plot_monthly_ret(security,title):
daily_ret=get_daily_ret(security,start_date,end_date)
monthly_ret=daily_ret.resample('M').apply(lambda x:((1+x).prod()-1))
plt.rcParams['figure.figsize']=[20,5]
monthly_ret.plot()
start=monthly_ret.index[0]
end=monthly_ret.index[-1]

#显示月收益率大于3/4分位数的点
dates=monthly_ret[monthly_ret>monthly_ret.quantile(0.75)].index
for i in range(0,len(dates)):
plt.scatter(dates[i], monthly_ret[dates[i]],color='r')
labs = mpatches.Patch(color='red',alpha=.5, label="月收益率高于3/4分位")
plt.title(title+'月度收益率',size=15)
plt.legend(handles=[labs])
plt.xlabel('时间')
plt.ylabel('收益率')
plt.show()

security='000300.XSHG'
start_date='2012-01-01'
end_date='2022-04-01'
plot_monthly_ret(security,'沪深300指数')
最后Python报错:name ’get_price’ is not defined
,请问要怎么解决呀,前面已经对get_price定义了呀

  • 写回答

4条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-07 17:23
    关注

    你的代码里 df = get_price()并不是对get_price进行定义了,恰恰相反,这句代码是要使用它,但是它之前没有被定义,所以报错了。
    你检查一下是不是在代码的其他地方有类似于 def get_price() 这样的定义方法,或者是复制黏贴时漏掉了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 一切因为有你 2022-06-07 17:07
    关注

    你发的代码里并没有看见哪里定义了

    评论
  • 於黾 2022-06-07 17:08
    关注

    在哪定义的,为什么我搜不到

    评论
  • 溪风沐雪 2022-06-07 17:43
    关注

    你这是自己写的还是抄别人的啊,get_price()是因为没有定义这个函数,无法调用,另外在plot_monthly_ret(security,title)函数中还有两个参数start_date,end_date没有传进去,后续肯定也会报错,还有一个问题就是没看到你的数据来源
    daily_ret=get_daily_ret(security,start_date,end_date)

    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥15 Qt 不小心删除了自带的类,该怎么办
  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗
  • ¥15 设计一个成绩管理系统
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!