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.