【问题标题】:Scikit: Problem returning Dataframe from imputer instead of Numpy ArrayScikit:从 imputer 而不是 Numpy Array 返回 Dataframe 的问题
【发布时间】: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。 PandasDataframe.fillna() 方面有自己的估算器,但算法不如 scikit 复杂。

那么有没有办法让 imputer 适合数据帧并从结果中返回数据帧。

【问题讨论】:

    标签: python pandas numpy dataframe scikit-learn


    【解决方案1】:

    是的,你可以,只需将值重新赋值

    df[:]= imputer.transform(df)
    

    【讨论】:

    • 哦,有道理。我想知道scikit 文档中没有包含如此简单的东西,但这非常有帮助。非常感谢。
    猜你喜欢
    • 2020-06-22
    • 2022-11-01
    • 2020-07-01
    • 2021-10-04
    • 2019-12-02
    • 2021-08-16
    • 1970-01-01
    • 2013-06-04
    • 2018-08-24
    相关资源
    最近更新 更多