我刚刚使用pandas datareader来获取过去两周左右的库存数据,并且工作正常。从昨天开始突然提供的日期不再有效。它只是给我过去一年的数据,我不能改变日期。用于处理注释掉的那个,但现在不是。我甚至改变它使用datetime对象,但仍然无法正常工作。任何的想法?我更新了熊猫和pandas_datareader仍然没有运气。使用另一台计算机仍然没有工作。他们刚刚更改了API吗?
from pandas_datareader import data
import datetime
#start = '2010-01-01'
#end = '2017-7-31'
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2017,7, 31)
f = data.DataReader('AAPL', 'google', start, end)
print(f.head())
输出:
Open High Low Close Volume
Date
2016-09-19 115.19 116.18 113.25 113.58 47023046
2016-09-20 113.05 114.12 112.51 113.57 34514269
2016-09-21 113.85 113.99 112.44 113.55 36003185
2016-09-22 114.35 114.94 114.00 114.62 31073984
2016-09-23 114.42 114.79 111.55 112.71 52481151
答案 0 :(得分:5)
Google已将Google财经网址更改为finance.google.com/finance/historical而非www.google.com/finance/historical,后者用作pandas_datareader中的网址。
服务器在从旧URL获取数据并重定向到新URL时返回HTTP 302。但是,HTTP重定向期间缺少参数startdate / enddate。
在源代码中设置了url: https://github.com/pydata/pandas-datareader/blob/master/pandas_datareader/google/daily.py
也许您可以修改网址并使用自己的pandas_datareader版本。
答案 1 :(得分:0)
网址现已更新,因此升级datareader可解决问题:
sudo pip install pandas_datareader --upgrade
答案 2 :(得分:0)
根据数据读取器文档,由于它们的API发生了很大的变化并且没有稳定的替代品,因此Yahoo!,Google Options,Google Quotes和EDGAR已被立即弃用。改用“ iex”
import pandas_datareader.data as web
import datetime as dt
start = dt.datetime(2018,1,1)
end = dt.datetime(2019,1,1)
aapl = web.DataReader('AAPL', 'iex', start, end)
aapl.shape
(251, 5)
aapl.head()
open high low close volume
date
2018-01-02 167.6431 169.7514 166.7564 169.7120 25555934
2018-01-03 169.9780 171.9682 169.4165 169.6825 29517899
2018-01-04 169.9879 170.9041 169.5347 170.4707 22434597
2018-01-05 170.8746 172.7760 170.4904 172.4115 23660018
2018-01-08 171.7711 173.0125 171.3573 171.7711 20567766