У меня есть большая слава данных панд 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))
Выходные данные представляют собой фрейм данных с пропущенными метками столбцов. Есть ли способ получить ярлыки?