pandas.get_dummies()

Функция get_dummies() выполняет one-hot encoding: преобразует категориальные значения в набор бинарных столбцов-индикаторов (0/1). Часто применяется перед обучением моделей машинного обучения.

Сигнатура

pandas.get_dummies(data, prefix=None, prefix_sep='_',
                   dummy_na=False, columns=None,
                   sparse=False, drop_first=False, dtype=None)

Параметры

  • data — Series, DataFrame или массивоподобный объект.

  • prefix — префикс имён новых столбцов.

  • prefix_sep — разделитель между префиксом и значением (по умолчанию '_').

  • dummy_na — добавить отдельный столбец для NaN.

  • columns — конкретные столбцы для кодирования (только для DataFrame).

  • drop_first — удалить первую категорию, чтобы избежать мультиколлинеарности.

  • dtype — тип данных индикаторов (по умолчанию bool с pandas 2.0).

Возвращаемое значение

DataFrame с бинарными столбцами вместо исходных категорий.

Примеры

Пример 1. Простая Series

import pandas as pd

s = pd.Series(["FORWARD", "LEFT", "STOP", "FORWARD"])
print(pd.get_dummies(s))
   FORWARD   LEFT   STOP
0     True  False  False
1    False   True  False
2    False  False   True
3     True  False  False

Пример 2. DataFrame с категориальным столбцом

import pandas as pd

df = pd.DataFrame({
    "id": [1, 2, 3],
    "cmd": ["FORWARD", "LEFT", "STOP"],
})
print(pd.get_dummies(df, columns=["cmd"]))
   id  cmd_FORWARD  cmd_LEFT  cmd_STOP
0   1         True     False     False
1   2        False      True     False
2   3        False     False      True

Пример 3. drop_first для избежания мультиколлинеарности

import pandas as pd

s = pd.Series(["A", "B", "C", "A"])
print(pd.get_dummies(s, drop_first=True))
       B      C
0  False  False
1   True  False
2  False   True
3  False  False

Пример 4. dummy_na для пропусков

import pandas as pd
import numpy as np

s = pd.Series(["RED", "GREEN", np.nan, "RED"])
print(pd.get_dummies(s, dummy_na=True))
   GREEN    RED    NaN
0  False   True  False
1   True  False  False
2  False  False   True
3  False   True  False

Пример 5. Префикс и тип int

import pandas as pd

s = pd.Series(["L", "R", "L"])
print(pd.get_dummies(s, prefix="side", dtype=int))
   side_L  side_R
0       1       0
1       0       1
2       1       0

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.