#python #scikit-learn #imputation
Вопрос:
У меня есть следующий фрейм данных:
|1|2|3|
------
|4|-999|6|
------
|7|8|9|
Я хочу заменить единственное значение -999 значением из предыдущей строки в том же столбце. В этом случае значение равно 2, и фрейм данных будет выглядеть следующим образом:
|1|2|3|
-
|4|2|6|
-
|7|8|9|
-
Я могу сделать это, используя итеративную структуру, но я думаю, что один из классов вменения лучше. Моим первым выбором было бы KNNImputer
, но, хотя в нем говорится, что он использует значения из источника k-ближайших соседей, я не знаю, может ли он получить значение от этого соседа.
Итак, как я могу решить эту проблему? Является ли класс вменения хорошей идеей? Или есть что-то получше?
Комментарии:
1. Всегда ли вы хотите заменить значение -999?
2. ДА. Я отредактировал свой вопрос.
Ответ №1:
Я бы предложил установить значение (-999) np.nan
равным, а затем использовать fillna() с method='ffill'
. Он распространяет последнее допустимое значение на значения NA.
Обратите внимание, что если первый элемент в каждом столбце np.nan
, он не заполнен (так как перед ним нет значения для распространения).
Комментарии:
1. Большое спасибо!