【发布时间】:2019-11-07 21:10:32
【问题描述】:
我正在尝试使用 scikit-learn IterativeImputer() 在数据框中估算一些缺失值。问题是 imputer 将 pandas 数据帧作为输入,但将返回 numpy 数组而不是原始数据帧。这是取自 post 的一个简单示例。
# Create an empty dataset
df = pd.DataFrame()
# Create two variables called x0 and x1. Make the first value of x1 a missing value
df['x0'] = [0.3051,0.4949,0.6974,0.3769,0.2231,0.341,0.4436,0.5897,0.6308,0.5]
df['x1'] = [np.nan,0.2654,0.2615,0.5846,0.4615,0.8308,0.4962,0.3269,0.5346,0.6731]
imputer = IterativeImputer(max_iter=10, random_state=42)
imputer.fit(df)
imputed_df = imputer.transform(df)
imputed_df
问题是当numpy数组返回时,列名和其他元数据都被删除了。我当然可以手动从原始数据帧中提取元数据,然后重新应用它,但这似乎有点 hacky。 Pandas 在 Dataframe.fillna() 方面有自己的估算器,但算法不如 scikit 复杂。
那么有没有办法让 imputer 适合数据帧并从结果中返回数据帧。
【问题讨论】:
标签: python pandas numpy dataframe scikit-learn