Как преобразовать категориальную переменную dtype в числовую?

1

Я создал agebin колонку из столбца age. Я создал agebin, используя pd.cut() проверить ниже:

traindata = data.assign(age_bins =  pd.cut(data.age, 4, retbins=False,labels=range(1, 5), include_lowest=True))

data['agebin'] = traindata['age_bins']

Теперь, когда я вижу data.info, у agebin есть category dtype, и я хочу, чтобы это были числовые данные, потому что я получаю ошибку Value во время учебной модели. Как преобразовать dtype: category в числовую. Я смущен, как dtype категоричен, потому что, когда я вижу data['agebin'].head() все значения равны 1,2,3 или 4, но в data.info он показывает agebin категорию как категориальную.

Я хочу изменить agebin от категоричного до числового.

Изображение 174551

Изображение 174551

Теги:
pandas

2 ответа

3
Лучший ответ

использовать pd.to_numeric

data.agebin= pd.to_numeric(data.agebin, errors='coerce')
  • 0
    Спасибо, получил его. Это именно то, что я искал :)
4

@nimrodz отлично отвечает на вопрос.

Я просто хочу добавить, что причина, по которой вы получаете category dtype для age_bins, связана с поведением pd.cut.

out: pandas.Categorical, Series или ndarray

  • Массивный объект, представляющий соответствующий бит для каждого значения x. Тип зависит от значения меток.

    • последовательность скаляров: возвращает серию для серии x или pandas. Категорически подходит для всех других входов. Значения, хранящиеся внутри, независимо от типа в последовательности.
    • False: возвращает ndarray целых чисел.

Если вы установите labels=False он вернет целое число по умолчанию для age_bins, однако оно начнет нумерацию в 0. Вы можете просто добавить один, если хотите.

traindata = data.assign(age_bins =  pd.cut(data.age, 4, retbins=False, labels=False, include_lowest=True))
traindata['age_bins'] = traindata.age_bins+1
  • 0
    Спасибо, получил его :)
  • 1
    Это определенно лучший способ решения проблемы.

Ещё вопросы

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