Comment créer des variables catégorielles dans Pandas (avec exemples)
Vous pouvez utiliser l’une des méthodes suivantes pour créer une variable catégorielle dans pandas :
Méthode 1 : créer une variable catégorielle à partir de zéro
df['cat_variable'] = ['A', 'B', 'C', 'D']
Méthode 2 : créer une variable catégorielle à partir d’une variable numérique existante
df['cat_variable'] = pd.cut(df['numeric_variable'], bins=[0, 15, 25, float('Inf')], labels=['Bad', 'OK', 'Good'])
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple 1 : Créer une variable catégorielle à partir de zéro
Le code suivant montre comment créer un DataFrame pandas avec une variable catégorielle appelée team et une variable numérique appelée points :
import pandas as pd
#create DataFrame with one categorical variable and one numeric variable
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
'points': [12, 15, 19, 22, 24, 25, 26, 30]})
#view DataFrame
print(df)
team points
0 A 12
1 B 15
2 C 19
3 D 22
4 E 24
5 F 25
6 G 26
7 H 30
#view data type of each column in DataFrame
print(df.dtypes)
team object
points int64
dtype: object
En utilisant df.dtypes , nous pouvons voir le type de données de chaque variable dans le DataFrame.
Nous pouvons voir:
- La variable team est un objet .
- La variable points est un entier .
En Python, un objet équivaut à un caractère ou à une variable « catégorielle ». Ainsi, la variable d’équipe est une variable catégorielle.
Exemple 2 : Créer une variable catégorielle à partir d’une variable numérique existante
Le code suivant montre comment créer une variable catégorielle appelée status à partir de la variable numérique existante appelée points dans le DataFrame :
import pandas as pd
#create DataFrame with one categorical variable and one numeric variable
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
'points': [12, 15, 19, 22, 24, 25, 26, 30]})
#create categorical variable 'status' based on existing numerical 'points' variable
df['status'] = pd.cut(df['points'],
bins=[0, 15, 25, float('Inf')],
labels=['Bad', 'OK', 'Good'])
#view updated DataFrame
print(df)
team points status
0 A 12 Bad
1 B 15 Bad
2 C 19 OK
3 D 22 OK
4 E 24 OK
5 F 25 OK
6 G 26 Good
7 H 30 Good
À l’aide de la fonction cut() , nous avons créé une nouvelle variable catégorielle appelée status qui prend les valeurs suivantes :
- ‘ Mauvais ‘ si la valeur dans la colonne des points est inférieure ou égale à 15.
- Sinon, ‘ OK ‘ si la valeur dans la colonne des points est inférieure ou égale à 25.
- Sinon, « Bien ».
Notez que lors de l’utilisation de la fonction cut() , le nombre d’ étiquettes doit être inférieur d’une unité au nombre de bacs .
Dans notre exemple, nous avons utilisé quatre valeurs pour les cases pour définir les bords des cases et trois valeurs pour les étiquettes pour spécifier les étiquettes à utiliser pour la variable catégorielle.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes chez les pandas :
Comment créer des variables factices dans Pandas
Comment convertir une variable catégorielle en numérique dans Pandas
Comment convertir des valeurs booléennes en valeurs entières dans Pandas