У меня есть большая слава данных панд df. У него немало промахов. Сброс строки/или по кол-ву не вариант. Вменение медиан, средств или наиболее частых значений также не вариант (следовательно, вменение с помощью pandas и/или scikit к сожалению, не scikit).
Я наткнулся на то, что кажется аккуратным пакетом под названием fancyimpute (вы можете найти его здесь). Но у меня есть некоторые проблемы с этим.
Вот что я делаю:
#the neccesary imports
import pandas as pd
import numpy as np
from fancyimpute import KNN
# df is my data frame with the missings. I keep only floats
df_numeric = = df.select_dtypes(include=[np.float])
# I now run fancyimpute KNN,
# it returns a np.array which I store as a pandas dataframe
df_filled = pd.DataFrame(KNN(3).complete(df_numeric))
Однако df_filled каким-то образом представляет собой один вектор вместо заполненного фрейма данных. Как мне получить фрейм данных с вменениями?
Обновить
Я понял, что fancyimpute нуждается в numpay array. Поэтому я преобразовал df_numeric в массив с помощью as_matrix().
# df is my data frame with the missings. I keep only floats
df_numeric = df.select_dtypes(include=[np.float]).as_matrix()
# I now run fancyimpute KNN,
# it returns a np.array which I store as a pandas dataframe
df_filled = pd.DataFrame(KNN(3).complete(df_numeric))
Выходные данные представляют собой фрейм данных с пропущенными метками столбцов. Есть ли способ получить ярлыки?