【问题标题】:Missing values imputation in pythonpython中的缺失值插补
【发布时间】:2018-05-21 06:01:55
【问题描述】:

在我的数据集上应用Imputer.fit_transform() 后,我丢失了转换后的数据框中的列名。有没有办法在不丢失列名的情况下进行估算?

【问题讨论】:

标签: python pandas scikit-learn data-science


【解决方案1】:

正如我在问题的评论中所说,只需将数据框中的值替换(重新分配)从 Imputer 返回的数据即可。

假设这是您的数据框:

import numpy as np
import pandas as pd

df = pd.DataFrame(data=[[1,2,3], 
                        [3,4,4],
                        [3,5,np.nan], 
                        [6,7,8],
                        [3,np.nan,1]],
                  columns=['A', 'B', 'C'])

当前df

   A    B    C
0  1  2.0  3.0
1  3  4.0  4.0
2  3  5.0  NaN
3  6  7.0  8.0
4  3  NaN  1.0

如果您将整个df 发送到 Imputer,只需使用此:

df[df.columns] = Imputer().fit_transform(df)

如果您只发送一些列,则仅使用这些列来分配结果:

columns_to_impute = ['B', 'C']
df[columns_to_impute] = Imputer().fit_transform(df[columns_to_impute])

输出:

     A    B    C
0  1.0  2.0  3.0
1  3.0  4.0  4.0
2  3.0  5.0  4.0
3  6.0  7.0  8.0
4  3.0  4.5  1.0

【讨论】:

    【解决方案2】:

    最新@Vivek 的回答:

    从 Imputer 导入 sklearn.preprocessing 在 scikit-learn v0.20.4 中已弃用,现在在 v0.22.2 中已完全删除。

    不使用simpleImputer(参考文档here):

    from sklearn.impute import SimpleImputer
    import numpy as np
    
    imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 2013-07-08
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 2017-05-04
      • 2021-05-21
      相关资源
      最近更新 更多