HOWTO · Pandas

Ottenere Dummies in Pandas

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

In questa pagina

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.