Метод get_dummies
Метод get_dummies применяется к строковой колонке Series
и возвращает таблицу DataFrame с бинарными индикаторами для каждого уникального значения.
Каждое уникальное значение строки становится отдельной колонкой, где 1 указывает на присутствие данного значения в строке.
Метод полезен для преобразования категориальных строковых данных в числовой формат для машинного обучения.
Синтаксис
ser.str.get_dummies(sep)
Параметр sep необязательный - разделитель для разделения строк на части.
По умолчанию разделитель не задан, и каждая строка рассматривается как единое значение.
Пример
Преобразуем строковую колонку с категориями в бинарные индикаторы:
import pandas as pd
ser = pd.Series(['a', 'b', 'c', 'a', 'b'])
res = ser.str.get_dummies()
print(res)
Результат выполнения кода:
a b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
4 0 1 0
Пример
Используем разделитель для разбиения строк на части:
import pandas as pd
ser = pd.Series(['a,b', 'b,c', 'c,a', 'a,b,c'])
res = ser.str.get_dummies(sep=',')
print(res)
Результат выполнения кода:
a b c
0 1 1 0
1 0 1 1
2 1 0 1
3 1 1 1
Пример
Применим метод к строковой колонке в таблице:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': ['x', 'y', 'x', 'z', 'y']
})
res = df['b'].str.get_dummies()
print(res)
Результат выполнения кода:
x y z
0 1 0 0
1 0 1 0
2 1 0 0
3 0 0 1
4 0 1 0
Пример
Вернём результат в виде таблицы с добавлением префикса:
import pandas as pd
ser = pd.Series(['user', 'article', 'user', 'data.csv'])
res = ser.str.get_dummies()
res.columns = 'col_' + res.columns
print(res)
Результат выполнения кода:
col_article col_data.csv col_user
0 0 0 1
1 1 0 0
2 0 0 1
3 0 1 0