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

如何用其他列回归预测填充DataFrame中stock_2021列的缺失值?

解决方法

核心问题分析

你的代码存在两个关键疏漏:

  1. 未完成模型训练的核心步骤(model01既未定义也未拟合有效数据)
  2. 未区分「用于训练的完整样本」和「需要填充的缺失样本」,直接用全量数据预测必然返回异常结果

完整解决步骤与代码

步骤1:拆分数据集

从原DataFrame中分离出两类数据:

  • 训练集:stock_2021无缺失的行,用来训练回归模型
  • 待填充集:stock_2021为NaN的行,需要模型预测填充

步骤2:训练回归模型

用训练集的stock_2020作为特征,stock_2021作为目标变量,拟合线性回归模型。

步骤3:预测并填充缺失值

用训练好的模型对待填充集的stock_2020数据做预测,将结果替换回原DataFrame的缺失位置。

import pandas as pd
import statsmodels.api as sm

# 1. 拆分训练集与待填充数据
train_data = df_atom.dropna(subset=['stock_2021'])
fill_data = df_atom[df_atom['stock_2021'].isna()]

# 2. 准备训练数据并拟合模型
X_train = sm.add_constant(train_data[['stock_2020']])  # 添加截距项
y_train = train_data['stock_2021']

model01 = sm.OLS(y_train, X_train).fit()  # 拟合普通最小二乘回归模型

# 3. 预测待填充数据的stock_2021值
X_fill = sm.add_constant(fill_data[['stock_2020']])
fill_preds = model01.predict(X_fill)

# 4. 将预测值填充回原DataFrame
df_atom.loc[df_atom['stock_2021'].isna(), 'stock_2021'] = fill_preds

额外注意事项

  • 如果stock_2020本身存在缺失值,需先处理(如删除行或用均值填充),否则训练和预测会出现NaN
  • 可通过model01.summary()查看模型拟合效果,判断用stock_2020预测stock_2021的合理性
  • 若需多特征预测,只需将['stock_2020']改为多特征列表,如['stock_2020', 'stock_2019']

内容的提问来源于stack exchange,提问作者Revolucion for Monica

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:30:47