我有一个关于使用熊猫数据阅读器的雅虎财务功能的问题。我已经用了几个月的股票行情表,并按以下行执行:
import pandas_datareader as pdr
import datetime
stocks = ["stock1","stock2",....]
start = datetime.datetime(2012,5,31)
end = datetime.datetime(2018,3,1)
f = pdr.DataReader(stocks, 'yahoo',start,end)
从昨天开始,我得到错误“index error:list index out of range”(索引错误:列表索引超出范围),只有当我尝试获得多个股票时才会出现这个错误。
最近几天我有什么需要考虑的变化吗?或者你对我的问题有更好的解决方案吗?
最佳答案
如果您仔细阅读pandas datareader的documentation,他们会立即对多个数据源api进行折旧,其中一个是yahoo!财务。
v0.6.0(2018年1月24日)
立即贬低雅虎!,谷歌选项和报价和埃德加。
这些API背后的端点已经发生了根本性的变化,
现有的读卡器需要完全重写。就大多数雅虎而言!
已删除终结点的数据。PDR要还原这些
欢迎使用功能和拉取请求。
这可能是导致您出现IndexError
错误(或任何其他通常不存在的错误)的原因。
然而,还有另一个python包,其目标是修复对雅虎的支持!为熊猫数据阅读器融资,您可以在这里找到该包:
https://pypi.python.org/pypi/fix-yahoo-finance
根据他们的文件:
Yahoo! finance已经停用了他们的历史数据API,导致许多依赖它的程序停止工作。
修复雅虎财务提供了一个临时的解决方案,从雅虎抓取数据!资助使用和归还熊猫
数据帧/面板的格式与熊猫数据阅读器的相同get_data_yahoo()
基本上是“劫持”pandas_datareader.data.get_data_yahoo()
方法,修复雅虎财务的植入很简单,只需要
将fix_yahoo_finance
导入代码。
您只需添加以下内容:
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)
关于python - 从雅虎财务python一次下载多个股票,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49705047/