Хотя @thesilkworkm побеждает меня в тисках, полезно знать, почему именно ваш собственный код не работает.
Итак, кроме проблемы с изменением формы, в вашем коде есть еще две ошибки; во-первых, вы ошибочно запрашиваете axis=1
в вашем импутере, тогда как вы должны запрашивать axis=0
(что является значением по умолчанию, и поэтому оно работает, когда полностью опущено, как в ответе @ thesilkworkm'a); из документов :
ось : целое число, необязательно (по умолчанию = 0)
Ось, по которой следует вменять.
- Если ось = 0, то вменять по столбцам.
- Если ось = 1, то вменять по строкам.
Вторая ошибка - ваш missing_values
аргумент, который должен быть 'NaN'
, а не 'nan'
; из документов снова:
отсутствующие значения : целое число или «NaN», необязательно (по умолчанию = «NaN»)
Заполнитель для пропущенных значений. Все вхождения пропущенных_значений будут вменяться. Для пропущенных значений, закодированных как np.nan,
используйте строковое значение «NaN».
Итак, просто для того, чтобы предложить альтернативное, но эквивалентное решение (помимо того, которое уже предоставлено @thesilkworm), вы также можете разместить и преобразовать в одну строку:
imp = Imputer(missing_values ="NaN",strategy = "mean",axis = 0)
x['Age'] = imp.fit_transform(x['Age'].reshape(-1,1))