Проблема
Я использую класс sklearn.preprocessing.Imputer для вменения значений NaN, используя стратегию mean по столбцам, т.е. ось = 0.Моя проблема в том, что некоторые данные, которые должны быть вменены только , имеют значения NaN в своем столбце, например, когда есть только одна запись.
import numpy as np
import sklearn.preprocessing import Imputer
data = np.array([[1, 2, np.NaN]])
data = Imputer().fit_transform(data)
Это дает вывод array([[1., 2.]])
Достаточно справедливо, очевидно, что Imputer не может вычислить среднее значение для набора значений, которые все являются NaN.Однако вместо удаления значения я хотел бы вернуться к значению по умолчанию, в моем случае 0.
Текущий подход
Чтобы решить эту проблему, я сначала проверяю, содержит ли весь столбец толькоЗначения NaN и, если да, замените их на мое значение по умолчанию 0:
# Loop over all columns in data
for column in data.T:
# Check if all values in column are NaN
if all(np.isnan(value) for value in column):
# Fill the column with default value 0
column.fill(0)
Вопрос
Существует ли более элегантный способ вменения значения по умолчанию, если вся ось содержит только NaNзначения?