使用pandas_datareader从Yahoo Finance获取股票数据时出现属性错误
问题分析与解决办法
你遇到的属性错误,核心原因是pandas_datareader已经不再原生支持Yahoo Finance数据源——Yahoo几年前调整了API结构,pandas_datareader官方后续移除了对它的内置支持,所以你用data_source='yahoo'会触发找不到对应属性的报错。
解决步骤:改用yfinance库
现在获取Yahoo Finance数据的标准工具是yfinance,这是专门适配Yahoo API的第三方库,稳定且功能完整。
- 先安装yfinance(未安装的话执行):
pip install yfinance
- 替换代码为以下内容:
import yfinance as yf # 单只股票数据获取 ABEV = yf.Ticker("ABEV").history(start="2024-07-01") # 或者用更贴近原代码的批量下载方式 # ABEV = yf.download("ABEV", start="2024-07-01") print(ABEV)
补充:若坚持使用pandas_datareader
虽然不推荐,但可以通过yfinance作为后端实现兼容:
from pandas_datareader import data as wb import yfinance as yf yf.pdr_override() # 启用pandas_datareader兼容模式 ABEV = wb.get_data_yahoo('ABEV', start='2024-07-01') print(ABEV)
不过直接使用yfinance的API会更直观,也更少出现兼容性问题。
内容的提问来源于stack exchange,提问作者Maham Asim
相关产品推荐
相关产品推荐

