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

yfinance在线获取与雅虎下载BTC-USD数据isna()返回缺失值结果不同

缺失值不一致的原因及排查方案
  • yfinance内置自动补全逻辑:yfinance拉取加密货币类资产数据时,会对源接口返回的少量缺失记录自动执行前值填充/线性插值处理,不会保留空值。而雅虎金融网页端下载的CSV为原始未处理数据,会直接保留平台未补录的空值记录,这是该问题最常见的诱因。
  • 拉取范围对齐误差:yfinance的download方法的end参数为左闭右开规则,即不会返回end参数指定的当日数据。如果手动下载CSV时选择的时间范围包含了end参数对应的日期,且该日期前后刚好存在4条未补录的空值记录,也会导致统计结果不一致。
  • 数据源更新节奏差异:雅虎金融网页端下载服务和API接口服务的数据源缓存更新频率不同,你下载CSV时网页端的缓存尚未补录那4条缺失数据,但API端已经完成了数据补录,也会出现二者的空值数量差。
验证步骤
  • 首先校验两个数据集的长度:执行print(len(df_b), len(df)),如果二者长度差为4,说明是本地CSV包含了yfinance未拉取的日期范围,调整本地CSV的筛选范围和yfinance拉取范围严格对齐后重新统计即可。
  • 如果二者长度一致,筛出本地数据的空值行匹配yfinance的数据:执行print(df[df['Open'].isna()]['Date'])拿到空值对应的日期,再到df_b中查询对应日期的数值,可确认该部分数据为yfinance的填充值。
数据对齐方案

如果需要让本地CSV数据和yfinance拉取的数据保持一致,可执行以下操作:

  1. 先筛选时间范围和yfinance拉取规则对齐:df = df[(df['Date'] >= '2018-06-19') & (df['Date'] < '2021-06-19')]
  2. 执行和yfinance逻辑一致的补全:df = df.ffill()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:54:06