You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取股票数据触发pandas无DataReader属性报错如何解决

问题原因定位
  • 命名空间调用错误:DataReader是pandas_datareader模块提供的方法,pandas本身不包含该能力。你报错堆栈显示执行的代码为pfizer = pd.DataReader("PFE", "yahoo", start, end),使用了pandas的别名pd调用该方法,直接触发属性不存在的报错。你贴出的参考代码中用的是pdr.DataReader,说明你实际运行的本地文件和你贴出的代码不一致,优先检查本地stock analysis.py文件第7行的写法。
  • 额外兼容问题:当前pandas-datareader官方的雅虎财经数据源接口已经停止维护,就算修正命名空间问题,也大概率会触发接口请求失败的报错,需要额外做数据源兼容处理。
解决方案

1. 修正命名空间调用

调整本地代码的调用逻辑,确保使用pandas_datareader的别名调用DataReader,参考代码如下:

import pandas_datareader.data as pdr
import datetime
start = datetime.datetime(2020,1,1)
end = datetime.datetime(2020,4,17)
# 确保用pdr而非pd调用DataReader
pfizer = pdr.DataReader("PFE","yahoo",start,end)
pfizer.head()

2. 修复雅虎财经接口兼容问题

如果修正命名空间后出现接口请求报错,安装yfinance作为兼容层即可正常拉取雅虎的股票数据,操作如下:
首先执行安装命令:

pip install yfinance

再调整代码添加兼容配置:

import yfinance as yf
# 用yfinance的实现覆盖pandas_datareader的原生雅虎接口
yf.pdr_override()

import pandas_datareader.data as pdr
import datetime
start = datetime.datetime(2020,1,1)
end = datetime.datetime(2020,4,17)
pfizer = pdr.get_data_yahoo("PFE", start, end)
pfizer.head()

内容的提问来源于stack exchange,提问作者Vu Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:45:01