如何用Python从Morningstar获取调整后收盘价?及无法获取该数据的求助
嘿,我来帮你搞定这两个和Python获取Morningstar股票数据相关的问题!
一、如何用Python从Morningstar获取调整后收盘价?
如果你用的是pandas_datareader库,其实步骤很直接——只要指定数据源为morningstar,然后从返回的数据集里提取对应的调整后收盘价字段就行。我给你写个完整的可运行示例:
import pandas as pd from datetime import datetime import pandas_datareader.data as web # 设定你需要的时间范围 start = datetime(2015, 2, 9) end = datetime(2017, 5, 24) # 获取单只股票数据,这里以苹果(AAPL)为例 stock_data = web.DataReader('AAPL', 'morningstar', start, end) # 提取调整后收盘价,注意字段名是`Adj Close` adjusted_close = stock_data['Adj Close'] # 打印前几行看看结果 print(adjusted_close.head())
Morningstar返回的数据集一般包含Open、High、Low、Close、Volume、Adj Close这些字段,所以直接提取Adj Close列就能拿到调整后收盘价了。
二、排查无法获取调整后收盘价的原因
结合你给出的代码片段,我梳理了几个最可能的原因,你可以逐一排查:
字段名称拼写/格式错误:你可能在提取数据时用了错误的字段名,比如写成
Adjusted Close而不是Adj Close,或者大小写没匹配上。先运行下面的代码确认所有可用字段:print(stock_data.columns)看看输出里有没有
Adj Close这个字段。pandas_datareader版本过旧:旧版本的
pandas_datareader对Morningstar数据源的支持可能有问题,字段名或者接口逻辑可能有变化。建议先升级到最新版本:pip install --upgrade pandas-datareader股票代码格式不正确:Morningstar的股票代码有时候需要加上交易所后缀才能正常返回完整数据,比如美股的纳斯达克股票要加
.XNAS,纽交所股票加.XNYS。你可以试试调整代码里的股票代码:stock_data = web.DataReader('AAPL.XNAS', 'morningstar', start, end)数据源本身的限制:部分股票或者特定时间范围内,Morningstar的公开API可能不提供调整后收盘价数据,或者需要认证权限。你可以换一只知名股票(比如MSFT)或者调整时间范围测试一下,排除这个可能性。
内容的提问来源于stack exchange,提问作者Thanaa Makdsi

