【问题标题】:Imputing Missing Values in Python在 Python 中输入缺失值
【发布时间】:2021-10-15 13:39:04
【问题描述】:

我想使用 Scikit-Learn SimpleImputer 在我的数据框中估算几列。我试过这样做,但没有运气。我应该如何修改我的代码? a、b、e 是我要估算​​的数据框中的列。

我的数据框:

    a   b   c   d      e
    NA  39  cat gray   20
    5   NA  dog brown  NA
    7   53  cat tan    33
    NA  NA  cat black  41
    4   24  dog tan    NA

我的代码:

from sklearn.impute import SimpleImputer

miss_mean_imputer = SimpleImputer(missing_values='NaN', strategy='mean', axis=0)

miss_mean_imputer = miss_mean_imputer.fit(df["a", "b", "e"])

imputed_df = miss_mean_imputer.transform(df.values)

print(imputed_df)

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    在实例化 imputer 时,您应该将 missing_values='NaN' 替换为 missing_values=np.nan,并且您还应该确保 imputer 用于转换已安装的相同数据,请参见下面的代码。

    import pandas as pd
    import numpy as np
    from sklearn.impute import SimpleImputer
    
    df = pd.DataFrame({
     'a': [np.nan, 5.0, 7.0, np.nan, 4.0],
     'b': [39.0, np.nan, 53.0, np.nan, 24.0],
     'c': ['cat', 'dog', 'cat', 'cat', 'dog'],
     'd': ['gray', 'brown', 'tan', 'black', 'tan'],
     'e': [20.0, np.nan, 33.0, 41.0, np.nan]
    })
    
    imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
    imputer = imputer.fit(df[['a', 'b', 'e']])
    
    imputed_df = df.copy()
    imputed_df[['a', 'b', 'e']] = imputer.transform(df[['a', 'b', 'e']])
    
    print(imputed_df)
    #           a          b    c      d          e
    # 0  5.333333  39.000000  cat   gray  20.000000
    # 1  5.000000  38.666667  dog  brown  31.333333
    # 2  7.000000  53.000000  cat    tan  33.000000
    # 3  5.333333  38.666667  cat  black  41.000000
    # 4  4.000000  24.000000  dog    tan  31.333333
    

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 2020-06-17
      • 2021-10-03
      • 2013-07-31
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 2020-08-22
      相关资源
      最近更新 更多