Python 从何处以及如何获得股票历史数据(至少涵盖2008年)?

Python 从何处以及如何获得股票历史数据(至少涵盖2008年)?,python,python-3.x,finance,pandas-datareader,Python,Python 3.x,Finance,Pandas Datareader,我可以使用以下代码从Google Finance获取历史数据。但最老的是2016-09-20年。这对于回测来说太短了。我需要2008年的历史数据 import pandas_datareader.data as web start = datetime.datetime(2002, 1, 1) end = datetime.datetime(2017, 1, 27) aapl = DataReader("AAPL", "google", start, end) print(len(aapl)

我可以使用以下代码从Google Finance获取历史数据。但最老的是2016-09-20年。这对于回测来说太短了。我需要2008年的历史数据

import pandas_datareader.data as web

start = datetime.datetime(2002, 1, 1)
end = datetime.datetime(2017, 1, 27)

aapl = DataReader("AAPL", "google", start, end)
print(len(aapl))
print(aapl.head())
产出如下:

             Open   High    Low  Close    Volume
Date                                            
2016-09-20  35.02  35.06  33.91  34.44  21192908
2016-09-21  34.93  37.27  34.47  37.01  37582384
2016-09-22  38.22  38.52  37.73  38.47  22289829
2016-09-23  38.24  38.58  37.90  38.12  18705969
2016-09-26  36.69  36.94  35.63  35.97  23382130

使用
fix yahoo finance
,然后使用
yahoo
而不是Google作为源代码。看起来谷歌最近锁定了很多数据

首先,您需要pip安装

然后:


它起作用了。但奇怪的是,我输出的第一行是‘1999-12-31 3.604911…’,而不是‘2000-01-03…’。也许在2000-01-01市场关闭了?当我使用'2000-01-03'作为开始时,输出的第一行是'2000-01-03…'
from pandas_datareader import data
import fix_yahoo_finance

aapl = data.get_data_yahoo('AAPL', start='2000-01-01')

print(aapl.head())
               Open     High      Low    Close  Adj Close     Volume
Date                                                                
2000-01-03  3.74554  4.01786  3.63170  3.99777    3.59662  133949200
2000-01-04  3.86607  3.95089  3.61384  3.66071    3.29338  128094400
2000-01-05  3.70536  3.94866  3.67857  3.71429    3.34158  194580400
2000-01-06  3.79018  3.82143  3.39286  3.39286    3.05240  191993200
2000-01-07  3.44643  3.60714  3.41071  3.55357    3.19699  115183600