Как классифицировать строковые данные в целые числа? - PullRequest
0 голосов
/ 08 мая 2019

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

Как мне конвертировать?

Я нашел это решение, но здесь я должен вручную ввести код для каждого уникального значения функции. Для 2-3 уникальных значений это нормально, но у меня есть функция с более чем 50 уникальными значениями стран, я не могу написать код для каждой страны.

def sex_class(x):
    if x == 'male':
        return 1
    else:
        return 0

Это меняет мужские значения на 1, а женские значения на 0 в признаке - пол.

Ответы [ 3 ]

2 голосов
/ 08 мая 2019

Вы можете использовать scikit-learn LabelEncoder

#given a list containing all possible labels sex_classes = ['male', 'female'] from sklearn import preprocessing le = preprocessing.LabelEncoder() le.fit(sex_classes)

Это назначит метки всем уникальным значениям в данном списке.Вы можете сохранить этот объект кодировщика меток как файл рассылки для последующего использования.

0 голосов
/ 08 мая 2019

rank или pd.factorize

df['ID_int'] = df['id'].rank(method='dense').astype(int)
df['ID_int2'] = pd.factorize(df['id'])[0]

Вывод:

  id  ID_int  ID_int2
0  a       2        0
1  b       3        1
2  c       4        2
3  a       2        0
4  b       3        1
5  c       4        2
6  A       1        3
7  b       3        1

Ярлыки разные, но согласованные.

0 голосов
/ 08 мая 2019

Вместо этого вы можете использовать словарь.

sex_class = {'male': 1, 'female': 0}
...