Ottenere Dummies in Pandas

Suraj Joshi 30 gennaio 2023
  1. Metodo pandas.get_dummies()
  2. Crea DataFrame con colonne di variabili fittizie utilizzando il metodo pandas.get_dummies()
  3. Imposta columns per creare variabili fittizie solo per le colonne specificate
  4. Imposta prefisso per modificare il nome predefinito delle colonne fittizie
Ottenere Dummies in Pandas

Questo tutorial spiega come generare DataFrame con variabili fittizie o indicatore da DataFrame con colonne categoriali.

Metodo pandas.get_dummies()

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

Crea DataFrame con colonne di variabili fittizie utilizzando il metodo 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)

Produzione:

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 nomi di colonna fittizi formati concatenando il nome di colonna originale e ogni valore univoco per la colonna.

Per la colonna Name, abbiamo cinque valori univoci, e quindi il Name si divide in Nome_ più ogni nome univoco nel DataFrame. I valori delle colonne fittizie saranno 1 o 0 in base al valore nel DataFrame iniziale.

La riga con il valore della colonna Name Daniel in students_df DataFrame avrà valore 1 per la colonna Name_Daniel in students_df_dummies DataFrame mentre tutti gli altri valori di nome avranno valore 0 per la colonna Name_Daniel in il DataFrame students_df_dummies.

Imposta columns per creare variabili fittizie solo per le colonne specificate

Per impostazione predefinita, il metodo get_dummies() creerà DataFrame con colonne fittizie per ogni colonna con dtypes object o category. Possiamo impostare il passaggio dell’lista delle colonne come argomento columns per specificare colonne particolari.

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)

Produzione:

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 variabili fittizie solo per la colonna Sex.

Imposta prefisso per modificare il nome predefinito delle colonne fittizie

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)

Produzione:

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

Imposta il prefisso per le colonne fittizie generate dalla colonna Sex su Column. Ora i nomi fittizi delle colonne diventano Column_Female e Column_Male.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Pandas DataFrame Column