如何使用Pandas DataReader获取纳斯达克综合指数数据?
如何用Pandas DataReader获取纳斯达克综合指数数据?
当然可以!用Pandas DataReader获取纳斯达克综合指数的整体数据和你抓取单只股票的思路几乎一致,只需要调整一下指数代码和对应的数据源参数就行。下面给你两种靠谱的实现方式:
方式1:用Yahoo Finance数据源(推荐)
Yahoo Finance对美股指数的支持很直接,纳斯达克综合指数的代码是^IXIC,直接替换掉你原来代码里的股票代码,再把数据源改成yahoo就搞定了:
import pandas_datareader.data as web import datetime as dt start = dt.datetime(2015, 1, 1) end = dt.datetime.now() # 获取纳斯达克综合指数行情数据 nasdaq_df = web.DataReader("^IXIC", 'yahoo', start, end) # 打印前5行查看数据结构 print(nasdaq_df.head())
返回的DataFrame结构和你之前抓TSLA的完全一致,包含开盘价、最高价、最低价、收盘价、成交量、复权收盘价这些字段,直接就能用来做后续分析。
方式2:用Morningstar数据源(若偏好该数据源)
要是你想继续用Morningstar,纳斯达克综合指数对应的代码是NASDAQCOM,不过需要注意Morningstar返回的数据会多一层资产名称索引,得稍微调整下结构:
import pandas_datareader.data as web import datetime as dt start = dt.datetime(2015, 1, 1) end = dt.datetime.now() nasdaq_df = web.DataReader("NASDAQCOM", 'morningstar', start, end) # 去掉多余的资产名称索引层级,让数据结构和单只股票一致 nasdaq_df = nasdaq_df.reset_index(level=0, drop=True) print(nasdaq_df.head())
小提示
- 不同数据源的指数代码可能不一样,使用前最好确认对应数据源支持的标识(比如Yahoo用
^IXIC,Morningstar用NASDAQCOM) - 如果遇到Yahoo Finance接口报错的情况,可能是版本兼容问题,可以尝试升级
pandas_datareader到最新版本
内容的提问来源于stack exchange,提问作者yalpsid eman




