Вменение недостающего значения с медианой

1

Я хочу приписать столбцу фрейма данных Bare Nuclei с медианой, и я получил эту ошибку ("должен быть str, а не int", "произошел в индексе Bare Nuclei"), следующий код представляет уникальное значение данных столбца [ 'Bare Nuclei'

data['Bare Nuclei'].unique()
array(['1', '10', '2', '4', '3', '9', '7', '?', '5', '8', '6'],
      dtype=object)

Тогда я попытался заменить ? с nan а затем приложить nan с медианным, но я получил вышеупомянутую ошибку

data['Bare Nuclei'] = data['Bare Nuclei'].replace('?',np.nan)
#data['Bare Nuclei'].fillna()
data.apply(lambda x: x.fillna(x.mean()),axis=0)

Чтобы проверить данные, можно найти по этой ссылке https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

Теги:

2 ответа

0

это Коррекция, и она работает

data['Bare Nuclei'] = data['Bare Nuclei'].replace('?',np.nan).astype(float)
data['Bare Nuclei'] = data['Bare Nuclei'].fillna((data['Bare Nuclei'].median()))
0

Вы получили ошибку, потому что значения, хранящиеся в столбце 'Bare Nuclei', сохраняются как строки, но для функции mean() требуются номера. Вы можете видеть, что они являются строками в результате вашего вызова .unique().

После замены '?' символов, вы можете преобразовать серию в числа, используя .astype(float):

data['Bare Nuclei'] = data['Bare Nuclei'].replace('?',np.nan)
data['Bare Nuclei'] = data['Bare Nuclei'].astype(float).apply(lambda x: x.fillna(x.mean()))
  • 0
    Я попытался, и я получил ошибку 'float' объект не имеет атрибута 'fillna'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню