HOWTO · Pandas

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.

En esta página

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.