使用均值数字dtype和模式非数字dtype填充熊猫列中的NaN。

时间:2020-07-03 23:08:49

标签: python pandas dataframe data-science

    # handling missing values
    class handling_missing_data():
    
      # Imputation
      # Handling columns which have null values
      
      for col in df[:]:
        if ():
    
          if (pd.df[:].astype(pd.Series([np.integer]))):
    
            df = df.select_dtypes(include=[np.integer]).fillna(df.select_dtypes(include=[np.integer]).mean().iloc[0], inplace=True)
      
          elif (pd.df[:].astype(pd.Series([object, str]))):
            
            df = df.select_dtypes(include=['object', 'str']).fillna(df.select_dtypes(include=['object', 'str']).mode().iloc[0], inplace=True)
      
      print(df.head())

为什么此代码不起作用,因为我试图在特定列中识别数据集中的缺失值,并通过使用循环基于列数据类型的均值,模式填充缺失的列值。我正在寻找一些通用方法。

1 个答案:

答案 0 :(得分:1)

您的代码有太多错误,无法合理地回答,所以让我向您展示我将如何做。

# Select numeric columns.
a = df.select_dtypes('number')
# Select string and object columns.
b = df.select_dtypes('object')

# Fill numeric columns with mean.
df[a.columns] = a.fillna(a.mean())
# Fill object columns with mode.
df[b.columns] = b.fillna(b.agg(lambda x: x.mode().values[0])