蒙特卡洛模拟脚本出现“data_source is not implemented error”报错
解决pandas_datareader的"data_source is not implemented error"问题
嘿,这个报错我之前踩过坑,问题根源就在这行代码里:
prices = web.DataReader('AAPL', 'Googl', start, end)['close']
核心问题拆解
- 首先是拼写错误:你把谷歌财经的数据源名称写成了
'Googl',正确拼写应该是'google'。但这里有个关键提醒:pandas_datareader已经移除了对谷歌财经数据源的支持——因为谷歌调整了财经API的接口规则,所以哪怕改对拼写,大概率还是会报错。
可行的解决方案
推荐换成雅虎财经数据源('yahoo'),不过需要先安装配套依赖库,现在pandas_datareader对接雅虎API需要借助yfinance。
步骤1:安装依赖
在终端里运行:
pip install yfinance pandas-datareader
步骤2:修改代码
把数据源参数改成'yahoo',同时注意雅虎返回的列名是大写的'Close'(不是小写的'close'),调整后的完整代码如下:
import pandas_datareader.data as web import pandas as pd import datetime as dt import numpy as np import matplotlib.pyplot as plt from matplotlib import style style.use('ggplot') start = dt.datetime(2018, 1, 3) end = dt.datetime(2018, 3, 3) # 改用雅虎财经数据源,列名对应大写的Close prices = web.DataReader('AAPL', 'yahoo', start, end)['Close'] returns = prices.pct_change() last_price = prices[-1] # 继续你的蒙特卡洛模拟代码...
额外小贴士
如果之后雅虎数据源也出现访问问题,还可以考虑用'fred'(美联储经济数据)或者'stooq'这类稳定的数据源,不过它们覆盖的股票范围略有不同,按需选择即可。
内容的提问来源于stack exchange,提问作者Amateur Python Learner
相关产品推荐
相关产品推荐

