Obtener Dummies en Pandas

Suraj Joshi 30 enero 2023
  1. Método pandas.get_dummies()
  2. Crear un DataFrame con columnas de variables dummy utilizando el método pandas.get_dummies()
  3. Configurar columnas para crear variables ficticias sólo para las columnas especificadas
  4. Establezca prefix para cambiar el nombre por defecto de las columnas ficticias
Obtener Dummies en Pandas

Este tutorial explica cómo podemos generar DataFrame con variables dummy o indicadoras a partir de DataFrame con columnas categóricas.

Método pandas.get_dummies()

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

Crear un DataFrame con columnas de variables dummy utilizando el método pandas.get_dummies()

import pandas as pd

students_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 303],
        "Name": ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
        "Sex": ["Male", "Female", "Male", "Male", "Female"],
    }
)

students_df_dummies = pd.get_dummies(students_df)

print("The original DataFrame is:")
print(students_df, "\n")

print("DataFrame with Dummies:")
print(students_df_dummies)

Producción :

The original DataFrame is:
    Id       Name     Sex
0  302       Mike    Male
1  504  Christine  Female
2  708        Rob    Male
3  103     Daniel    Male
4  303   Jennifer  Female 

DataFrame with Dummies:
    Id  Name_Christine  Name_Daniel  Name_Jennifer  Name_Mike  Name_Rob  Sex_Female  Sex_Male
0  302               0            0              0          1         0           0         1
1  504               1            0              0          0         0           1         0
2  708               0            0              0          0         1           0         1
3  103               0            1              0          0         0           0         1
4  303               0            0              1          0         0           1         0

Genera un DataFrame con nombres de columnas ficticias formado por la concatenación del nombre de la columna original y cada valor único de la columna.

Para la columna Name, tenemos cinco valores únicos, y por lo tanto el Name se divide en Name_ más cada nombre único en el DataFrame. Los valores de las columnas ficticias serán 1 o 0 según el valor del DataFrame inicial.

La fila con el valor de la columna Name Daniel en el DataFrame students_df tendrá el valor 1 para la columna Name_Daniel en el DataFrame students_df_dummies mientras que todos los demás valores de nombres tendrán el valor 0 para la columna Name_Daniel en el DataFrame students_df_dummies.

Configurar columnas para crear variables ficticias sólo para las columnas especificadas

Por defecto, el método get_dummies() creará un DataFrame con columnas ficticias para cada columna con los tipos de datos object o category. Podemos pasar la lista de las columnas como argumento columns para especificar columnas concretas.

import pandas as pd

students_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 303],
        "Name": ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
        "Sex": ["Male", "Female", "Male", "Male", "Female"],
    }
)

students_df_dummies = pd.get_dummies(students_df, columns=["Sex"])

print("The original DataFrame is:")
print(students_df, "\n")

print("DataFrame with Dummies:")
print(students_df_dummies)

Producción :

The original DataFrame is:
    Id       Name     Sex
0  302       Mike    Male
1  504  Christine  Female
2  708        Rob    Male
3  103     Daniel    Male
4  303   Jennifer  Female 

DataFrame with Dummies:
    Id       Name  Sex_Female  Sex_Male
0  302       Mike           0         1
1  504  Christine           1         0
2  708        Rob           0         1
3  103     Daniel           0         1
4  303   Jennifer           1         0

Crea variables ficticias sólo para la columna Sex.

Establezca prefix para cambiar el nombre por defecto de las columnas ficticias

import pandas as pd

students_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 303],
        "Name": ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
        "Sex": ["Male", "Female", "Male", "Male", "Female"],
    }
)

students_df_dummies = pd.get_dummies(students_df, columns=["Sex"], prefix="Column")

print("The original DataFrame is:")
print(students_df, "\n")

print("DataFrame with Dummies:")
print(students_df_dummies)

Producción :

The original DataFrame is:
    Id       Name     Sex
0  302       Mike    Male
1  504  Christine  Female
2  708        Rob    Male
3  103     Daniel    Male
4  303   Jennifer  Female 

DataFrame with Dummies:
    Id       Name  Column_Female  Column_Male
0  302       Mike              0            1
1  504  Christine              1            0
2  708        Rob              0            1
3  103     Daniel              0            1
4  303   Jennifer              1            0

Establece el prefijo para las columnas ficticias generadas a partir de la columna Sex a Column. Ahora los nombres de las columnas ficticias se convierten en Column_Female y Column_Male.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Pandas DataFrame Column