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

如何使用yfinance和pandas datareader导入读取雅虎财经外汇数据

问题根因

旧版pandas-datareader原生的雅虎财经接口没有适配非股票类标的的返回规则,直接传入EURUSD=X这类外汇报价代码时,会出现接口返回空值、字段匹配失败的问题。目前雅虎财经类数据拉取的通用方案是用yfinance做兼容层,替代原生接口的请求逻辑。

操作步骤
  • 先安装/升级依赖到最新版本,避免版本兼容问题:
    pip install --upgrade pandas pandas-datareader yfinance
  • 调用yfinance提供的补丁方法,覆盖pandas-datareader原有的雅虎数据请求逻辑,不需要修改你原有代码的参数习惯
  • 外汇报价直接使用雅虎财经标准代码即可,比如欧元兑美元为EURUSD=X、美元兑日元为USDJPY=X,代码格式为{基准货币}{报价货币}=X
可直接复用的代码
import pandas as pd
import pandas_datareader.data as pdr
import yfinance as yf

# 加载yfinance兼容补丁,必须在调用get_data_yahoo之前执行
yf.pdr_override()

# 资产列表可同时放入股票、外汇代码,不需要分开处理
asset_list = ['EURUSD=X', 'AAPL']
start_date = '2016-1-1'
data = {}

for asset in asset_list:
    data[asset] = pdr.get_data_yahoo(asset, start=start_date)
注意事项
  • 你原有代码里存在变量名大小写不一致的问题:定义列表时用的是Stocklist,循环时写的是StockList,运行时会直接触发变量不存在的报错,需要统一变量名
  • 外汇数据返回的字段结构和股票完全一致,包含开盘价、最高价、最低价、收盘价、成交量字段,其中外汇品种的成交量字段大多返回0,属于正常情况,你之前写的Renko砖形图绘制、K线柱统计逻辑可以直接复用,不需要额外调整
  • 如果拉取数据时出现超时,可以在get_data_yahoo里加threads=False参数关闭多线程请求,提升稳定性

内容的提问来源于stack exchange,提问作者Nidal Zd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:45:51