У меня есть фрейм данных, заполненный NA, и я использую sh, чтобы заполнить их, используя технику MICE из sklearn
или fancyimpute
, но для каждой группы данных я группирую данные с помощью переменной категории, это единственная категориальная переменная
from fancyimpute import IterativeImputer
def mice_impute(df):
df_numeric = df.select_dtypes(include=[np.float])
#numeric_vals = df_numeric.as_matrix()
MICE_imputer = IterativeImputer()
df_grp = df.groupby("category").transform(lambda x: MICE_imputer.fit_transform(x))
return df_grp
mice_impute(df_train_1)
Проблема с этим кодом в том, что fit_transform
функция исключает 2D-массив, но x - это серия (но группа должна быть 2-м массивом, не так ли)?
Итак, как я могу заполнить na в моем фрейме данных, применив технику MICE к каждой группе и вернуть полный фрейм данных?