所以我正在学习金融和matplotlib,我想下载20个.csv文件,每个文件都有一些数据。问题是,当我执行代码时,终端打印出一个巨大的错误。
到目前为止,我已经尝试更改代码,尝试从.pickle文件中删除MSTAR,即使MSTAR甚至不在.pickle文件中,我也尝试在Github上四处询问,仍然一无所获,我甚至在堆栈溢出时查找它,也没有起作用
当我运行以下命令时,似乎发生了错误
def get_data_from_yahoo(reload_sp500=False):
if reload_sp500:
tickers = save_sp500_tickers()
else:
with open("sp500tickers.pickle", "rb") as f:
tickers = pickle.load(f)
if not os.path.exists('stock_dfs'):
os.makedirs('stock_dfs')
start = dt.datetime(2010, 1, 1)
end = dt.datetime.now()
for ticker in tickers[:20]:
if not os.path.exists('stock_dfs/{}.csv'.format(ticker)):
df = web.DataReader(ticker, 'morningstar', start, end)
df.reset_index(inplace=True)
df.set_index("Date", inplace=True)
df = df.drop("Symbol", axis=1)
df.to_csv('stock_dfs/{}.csv'.format(ticker))
else:
print('Already have {}'.format(ticker))
get_data_from_yahoo()我本以为会有一个装满.csv文件的文件夹,每个文件都有自己的数据,但我得到了一个错误,告诉我以下内容:
Traceback (most recent call last):
File "C:\Users\chedl\Documents\Programs\Python\financing\python-for-financing.py", line 46, in <module>
get_data_from_yahoo()
File "C:\Users\chedl\Documents\Programs\Python\financing\python-for-financing.py", line 37, in get_data_from_yahoo
df = web.DataReader(ticker, 'morningstar', start, end)
File "C:\Users\chedl\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pandas_datareader\data.py", line 387, in DataReader
session=session, interval="d").read()
File "C:\Users\chedl\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pandas_datareader\mstar\daily.py", line 57, in __init__
raise ImmediateDeprecationError(DEP_ERROR_MSG.format("Morningstar"))
pandas_datareader.exceptions.ImmediateDeprecationError:
Morningstar has been immediately deprecated due to large breaks in the API without the
introduction of a stable replacement. Pull Requests to re-enable these data
connectors are welcome.如果你不理解这个错误,它要求一个特定的数据集,即使我不需要它,它试图下载那个数据集,然后它抱怨应用程序接口中的一些中断,即使我从来不需要这个文件,而且它从.pickle文件中获取名称,好吧,它没有写在那个.pickle文件中的morningstar或MSTAR。
发布于 2019-08-28 06:40:50
看起来您在代码中专门请求来自Morningstar的数据:
df = web.DataReader(ticker, 'morningstar', start, end)
雅虎财经有时很难与之合作。我发现Quandl更容易使用,也更可靠。您可以注册免费的here,这将允许您访问API密钥。他们还有一个python库,你可以通过pip安装,然后导入到你的文件中。从那里,只需将对Yahoo Finance的调用替换为对Quandl的调用。
if not os.path.exists('stock_dfs/{}.csv'.format(ticker)):
quandl.ApiConfig.api_key = "YOUR API KEY"
df = quandl.get(ticker, start_date=start, end_date=end)
df.reset_index(inplace=True)
df.set_index("Date", inplace=True)
df = df.drop("Symbol", axis=1)
df.to_csv('stock_dfs/{}.csv'.format(ticker))
else:
print('Already have {}'.format(ticker))Quandl here文档
https://stackoverflow.com/questions/57682204
复制相似问题