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

如何用回归模型预测值替换DataFrame中pkg_yld等列的NaN值

解决方案
  • 前提假设:你的DataFrame包含month日期列(格式为datetime64),已完成2020.7-2021.6区间的OLS模型拟合

步骤1:筛选2021年7-12月的待填充行

首先构造行筛选掩码:

import pandas as pd
# 构造2021年7-12月的行筛选条件
fill_mask = (df['month'] >= '2021-07-01') & (df['month'] <= '2021-12-31')

步骤2:填充pkg_yld列的NaN值

两种方式二选一即可:

方式1:直接用已拟合的OLS模型预测(精度更高,避免手动抄系数误差)

# 给待预测的adv列添加常数项,匹配模型输入格式
X_pred = sm.add_constant(df.loc[fill_mask, 'adv'])
# 预测值直接覆盖对应行的NaN
df.loc[fill_mask, 'pkg_yld'] = model.predict(X_pred)

方式2:用你已得到的回归公式直接计算

df.loc[fill_mask, 'pkg_yld'] = 93.3 - 0.68 * df.loc[fill_mask, 'adv']

步骤3:计算并填充yoy_pkg_yld列的NaN值

通过偏移12个月匹配去年同期的pkg_yld值计算同比:

# 构造辅助列:当前行对应去年同期的月份
df['last_year_month'] = df['month'] - pd.DateOffset(years=1)
# 构造月份到pkg_yld的映射字典,用来匹配去年同期值
month_pkg_map = df.set_index('month')['pkg_yld'].to_dict()
# 匹配去年同期值后计算同比
df.loc[fill_mask, 'yoy_pkg_yld'] = (
    df.loc[fill_mask, 'pkg_yld'] / df.loc[fill_mask, 'last_year_month'].map(month_pkg_map) - 1
) * 100
# 删除不需要的辅助列
df.drop(columns='last_year_month', inplace=True)
  • 验证:以你给出的2021年7月数据为例,adv=9.0、去年同期pkg_yld=97.5,计算得到的结果和你示例的-10.6%完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:57:02