Как использовать Pandas Get Dummies — pd.get_dummies


Часто в статистике наборы данных, с которыми мы работаем, включают категориальные переменные .

Это переменные, которые принимают имена или метки. Примеры включают:

  • Семейное положение («замужем», «холост», «разведен»).
  • Статус курения («курящий», «некурящий»)
  • Цвет глаз («голубой», «зеленый», «ореховый»)
  • Уровень образования (например, «средняя школа», «бакалавр», «магистр»)

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

Например, предположим, что у нас есть набор данных, содержащий категориальную переменную Gender.Чтобы использовать эту переменную в качестве предиктора в регрессионной модели, нам сначала нужно преобразовать ее в фиктивную переменную.

Чтобы создать эту фиктивную переменную, мы можем выбрать одно из значений («Мужской») для представления 0, а другое значение («Женский») для представления 1:

Как создать фиктивные переменные в Pandas

Чтобы создать фиктивные переменные для переменной в кадре данных pandas, мы можем использовать функцию pandas.get_dummies() , которая использует следующий базовый синтаксис:

pandas.get_dummies (данные, префикс = нет, столбцы = нет, drop_first = ложь)

куда:

  • data : имя Pandas DataFrame
  • prefix : строка, которая добавляется в начало нового столбца фиктивной переменной.
  • columns : Имя столбца (столбцов) для преобразования в фиктивную переменную.
  • drop_first : Отбрасывать или нет первый столбец фиктивной переменной.

В следующих примерах показано, как использовать эту функцию на практике.

Пример 1. Создание одной фиктивной переменной

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'income': [45, 48, 54, 57, 65, 69, 78],
 'age': [23, 25, 24, 29, 38, 36, 40],
 'gender': ['M', 'F', 'M', 'F', 'F', 'F', 'M']})

#view DataFrame
df

 income age gender
0 45 23 M
1 48 25 F
2 54 24 M
3 57 29 F
4 65 38 F
5 69 36 F
6 78 40 M

Мы можем использовать функцию pd.get_dummies() , чтобы превратить пол в фиктивную переменную:

#convert gender to dummy variable
pd.get_dummies (df, columns=['gender'], drop_first= True )

 income age gender_M
0 45 23 1
1 48 25 0
2 54 24 1
3 57 29 0
4 65 38 0
5 69 36 0
6 78 40 1

Половая колонка теперь является фиктивной переменной, где:

  • Значение 0 представляет «женщину».
  • Значение 1 представляет «Мужской».

Пример 2. Создание нескольких фиктивных переменных

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'income': [45, 48, 54, 57, 65, 69, 78],
 'age': [23, 25, 24, 29, 38, 36, 40],
 'gender': ['M', 'F', 'M', 'F', 'F', 'F', 'M'],
 'college': ['Y', 'N', 'N', 'N', 'Y', 'Y', 'Y']})

#view DataFrame
df

 income age gender college
0 45 23 M Y
1 48 25 F N
2 54 24 M N
3 57 29 F N
4 65 38 F Y
5 69 36 F Y
6 78 40 M Y

Мы можем использовать функцию pd.get_dummies() для преобразования пола и колледжа в фиктивные переменные:

#convert gender to dummy variable
pd.get_dummies (df, columns=['gender', 'college'], drop_first= True )


 income age gender_M college_Y
0 45 23 1 1
1 48 25 0 0
2 54 24 1 0
3 57 29 0 0
4 65 38 0 1
5 69 36 0 1
6 78 40 1 1

Половая колонка теперь является фиктивной переменной, где:

  • Значение 0 представляет «женщину».
  • Значение 1 представляет «Мужской».

А столбец колледжа теперь является фиктивной переменной, где:

  • Значение 0 представляет колледж «Нет».
  • Значение 1 представляет колледж «Да».

Дополнительные ресурсы

Как использовать фиктивные переменные в регрессионном анализе
Что такое ловушка с фиктивной переменной?