Как работать со строками в Panda Dataframe? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть DataFrame с некоторыми текстовыми функциями, ie функция, называемая «работа», с некоторыми событиями, такими как «полицейский», «Юрист», «доктор» и др. c. Как и в следующем Python коде:

    import pandas as pd
    dict = {'age' : [19, 35, 47], 'job' : ['policeman', 'lawyer', 'doctor']}
    df = pd.DataFrame(dict)

Я хотел бы знать, как преобразовать строки в заданиях в int, например 0, 1, 2, так что 'Policeman' - это категория 0, «юрист», категория № 1 и т. д. 1010 * ..

В более широком смысле, мой вопрос заключается в том, чтобы найти способ эффективно рассчитывать прогнозы для этого набора данных со стандартными библиотеками (например, Склеарн). Поскольку они не поддерживают строки как функцию, я подумал, что смогу вручную преобразовать их в int. Это действительно хорошая идея?

Ответы [ 3 ]

0 голосов
/ 08 апреля 2020

Если вы хотите использовать их в качестве функций в своем прогнозе, ответ Аллена верен, и вы используете однозначное кодирование.

Но если вы хотите сделать то, что вы просили, этот код может быть полезен

map_dict = {'policeman':0, 'lawyer':1, 'doctor':2}
df.job = df.job.map(map_dict)
0 голосов
/ 08 апреля 2020

Чтобы ответить на ваш фактический вопрос («как мне создать столбец чисел, представляющих категории на основе столбца повторяющихся строк»):

Вы можете создать новый числовой столбец для своих категорий, создав список уникальных строк, а затем спросить каждую строку в столбце, каков его индекс в этом списке:

import pandas as pd 
d = {'age' : [19, 35, 47, 31, 29],
     'job' : ['policeman', 'lawyer', 'doctor', 'lawyer', 'doctor']} 
df = pd.DataFrame(d)

jobs = list(df.job.unique())
df['job_cat'] = df.job.apply(lambda x: jobs.index(x))

# resulting dataframe:
#    age        job  job_cat
# 0   19  policeman        0
# 1   35     lawyer        1
# 2   47     doctor        2
# 3   31     lawyer        1
# 4   29     doctor        2

Хотя, если ваша цель состоит в том, чтобы быстро кодировать ваши категории для машинного обучения, вам действительно следует используя scikit-learn OneHotEncoder .

0 голосов
/ 08 апреля 2020

вы можете использовать LabelEncoder , чтобы сделать это:

from sklearn import preprocessing
le = preprocessing.LabelEncoder()
df['job_code'] = le.fit_transform(df.job)

Это преобразует переменную вашей работы в числовое представление "

    age job         job_code
0   19  policeman   2
1   35  lawyer      1
2   47  doctor      0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...