Obter dummies em Pandas

Suraj Joshi 30 janeiro 2023
  1. pandas.get_dummies() Método
  2. Criar DataFrame com colunas Dummy Variable Columns Utilizando pandas.get_dummies() Método
  3. Definir colunas para Criar Variáveis Dummy apenas para colunas especificadas
  4. Defina prefix para alterar o nome padrão das colunas dummy
Obter dummies em Pandas

Este tutorial explica como podemos gerar DataFrame com variáveis dummy ou variáveis indicadoras a partir de DataFrame com colunas categóricas.

pandas.get_dummies() Método

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

Criar DataFrame com colunas Dummy Variable Columns Utilizando pandas.get_dummies() Método

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)

Resultado:

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

Gera uma DataFrame com nomes de colunas dummy formados pela concatenação do nome original da coluna e cada valor único para a coluna.

Para a coluna Name, temos cinco valores únicos, e por isso o Name divide-se em Name_ mais cada nome único no DataFrame. Os valores das colunas fictícias serão 1 ou 0, com base no valor no DataFrame inicial.

A linha com o valor da coluna Name na coluna students_df DataFrame terá o valor 1 para a coluna Name_Daniel na coluna students_df_dummies DataFrame enquanto todos os outros valores de nomes terão o valor 0 para a coluna Name_Daniel na coluna students_df_dummies DataFrame.

Definir colunas para Criar Variáveis Dummy apenas para colunas especificadas

Por defeito, o método get_dummies() criará DataFrame com colunas fictícias para cada coluna com dtypes objecto ou categoria. Podemos definir passar a lista das colunas como argumento colunas para especificar colunas específicas.

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)

Resultado:

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

Cria variáveis fictícias apenas para a coluna Sex

Defina prefix para alterar o nome padrão das colunas dummy

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)

Resultado:

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

Define o prefixo para as colunas fictícias geradas da coluna Sex para Coluna. Agora os nomes das colunas fictícias tornam-se Column_Female e Column_Male.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Pandas DataFrame Column