使用pandas web.DataReader抓取整个指数的数据(例如:道琼斯指数)

3 投票
1 回答
8767 浏览
提问于 2025-04-18 04:10

我知道怎么获取单个股票的数据。那么我该怎么获取整个指数的数据,比如道琼斯指数(DJI)呢?https://www.google.com/finance?q=INDEXDJX%3A.DJI&ei=zsVZU4iADYKI6AGoXA

我想尽可能早地分析整个股市的数据。

start, end = dt.datetime(1950, 1, 1), dt.datetime(2013, 12, 31)

data = web.DataReader('.DJI', 'yahoo', start, end)

1 个回答

7

谷歌财经和雅虎财经对指数的符号处理方式不一样。谷歌用“.DJI”来表示道琼斯指数,而雅虎则用“^DJI”。

不知为什么,当我运行代码时,Pandas在雅虎找不到道琼斯的数据,但它能找到标准普尔和纳斯达克的数据。

# this works
web.DataReader('^GSPC','yahoo')  # S&P 500
web.DataReader('^IXIC','yahoo')  # NASDAQ

# this doesn't
web.DataReader('^DJI','yahoo')   # Dow

如果你特别想要道琼斯的数据,Pandas还可以让你使用FRED的数据,这样你可以选择这个方法,不过它只会提供收盘价,而不是所有的价格数据。

web.DataReader('DJIA','fred')

另一个选择是使用Quandl。他们有很多数据集(金融、经济、人口等),可能对市场分析有帮助。虽然它也只获取收盘价,并且需要知道他们有时比较复杂的“代码”,这里有个示例:

import Quandl
dow_code = 'BCB/UDJIAD1'
Quandl.get(dow_code)

你可能需要创建一个Quandl账户(是免费的),以获取授权令牌,这样才能访问他们的数据库,但这也是一个可行的解决办法 :)

希望这对你有帮助。

撰写回答