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

Python的yfinance获取月度数据时出现异常日期与NaN值问题

问题原因与解决方法

这不是你的操作错误,是yfinance库处理月度数据时的常见问题——它的1mo区间数据默认返回每月最后一个交易日的记录,但在部分日期范围下,会混入一些非交易日的无效日期(比如你提到的2020-02-07、2020-05-08),这些日期没有对应交易数据,所以显示为NaN。

解决方法

  • 直接清理无效数据:用dropna()去掉所有NaN值,剩下的就是每个月有效的月度交易数据:
    data_cleaned = data.dropna()
    
  • 统一索引为月初日期:如果需要将索引固定为每月第一天,可以用重采样方法提取每月最后一个有效值:
    # MS代表每月第一天作为周期起点,last()取该月最后一个非NaN值
    data_resampled = data.resample('MS').last()
    
  • 简化复权数据获取:下载时添加auto_adjust=True参数,无需手动提取Adj Close,代码更简洁:
    y_params = {
        'tickers': 'AAPL',
        'start': '2020-01-01',
        'end': '2022-11-01',
        'interval': '1mo',
        'auto_adjust': True
    }
    data = yf.download(**y_params)['Close']  # 此处Close已为复权后价格
    

这类无效日期是yfinance在数据源拼接、日期范围处理时的小bug,清理后完全不影响后续分析使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:50:28