更新日期:2021-01-19
tickers = ['msft', 'aapl', 'twtr', 'intc', 'tsm', 'goog', 'amzn', 'fb', 'nvda']
df = pdr.DataReader(tickers, data_source='yahoo', start='2017-01-01', end='2020-09-28')
原始答案
如果你通读Pandas DataReader的documentation,他们会立即对多个数据源API进行折旧,其中一个是Yahoo!资金
100
立即弃用Yahoo!、Google Options、Quotes和EDGAR.
这可能是你得到IndexError
分(或任何其他通常不存在的错误)的罪魁祸首.
然而,还有另一个Python包,其目标是修复对Yahoo!的支持!Pandas DataReader的财务,您可以在这里找到该软件包:
https://pypi.python.org/pypi/fix-yahoo-finance
根据他们的文件:
Yahoo! finance已经停用了他们的历史数据API,导致许多依赖它的程序停止工作.
fix-yahoo-finance提供了一个临时解决方案,它使用Pandas从Yahoo! finance中删除数据并返回数据
基本上是"劫持"pandas_datareader.data.get_data_yahoo()
您只需添加以下内容:
from pandas_datareader import data as pdr
import fix_yahoo_finance as yf
yf.pdr_override()
stocks = ["stock1","stock2", ...]
start = datetime.datetime(2012,5,31)
end = datetime.datetime(2018,3,1)
f = pdr.get_data_yahoo(stocks, start=start, end=end)
甚至不需要数据阅读器:
import fix_yahoo_finance as yf
stocks = ["stock1","stock2", ...]
start = datetime.datetime(2012,5,31)
end = datetime.datetime(2018,3,1)
data = yf.download(stocks, start=start, end=end)