Obtenez dummies dans Pandas

Suraj Joshi 30 janvier 2023
  1. pandas.get_dummies() Méthode
  2. Créer un DataFrame avec des colonnes de variables factices en utilisant la méthode pandas.get_dummies()
  3. Définissez les colonnes pour créer des variables factices pour les colonnes spécifiées uniquement
  4. Définissez le préfixe pour changer le nom par défaut des colonnes factices
Obtenez dummies dans Pandas

Ce tutoriel explique comment générer des DataFrame avec des variables fictives ou des variables indicatrices à partir de DataFrame avec des colonnes catégorielles.

pandas.get_dummies() Méthode

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

Créer un DataFrame avec des colonnes de variables factices en utilisant la méthode 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)

Production :

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

Il génère un DataFrame avec des noms de colonnes factices formés en concaténant le nom de la colonne originale et chaque valeur unique de la colonne.

Pour la colonne Name, nous avons cinq valeurs uniques, et donc le Name se divise en Name_ plus chaque nom unique dans le DataFrame. Les valeurs des colonnes fictives seront 1 ou 0 en fonction de la valeur dans le DataFrame initial.

La ligne ayant la valeur de la colonne Name Daniel dans le DataFrame students_df aura la valeur 1 pour la colonne Name_Daniel dans le DataFrame students_df_dummies tandis que toutes les autres valeurs de noms auront la valeur 0 pour la colonne Name_Daniel dans le DataFrame students_df_dummies.

Définissez les colonnes pour créer des variables factices pour les colonnes spécifiées uniquement

Par défaut, la méthode get_dummies() créera un DataFrame avec des colonnes factices pour chaque colonne avec des dtypes object ou category. Nous pouvons passer la liste des colonnes en argument columns pour spécifier des colonnes particulières.

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)

Production :

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

Il crée des variables factices pour la colonne Sex uniquement.

Définissez le préfixe pour changer le nom par défaut des colonnes factices

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)

Production :

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

Il définit le préfixe pour les colonnes factices générées à partir de la colonne Sex à Column. Les noms des colonnes factices deviennent alors Column_Female et Column_Male.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Article connexe - Pandas DataFrame Column