Encodage d’étiquettes

Utilisation de données catégorielles dans Python

Kasey Jones

Research Data Scientist

Qu’est-ce que l’encodage d’étiquettes ?

Les bases :

  • Code chaque catégorie par un entier de 0 à n - 1, où n est le nombre de catégories
  • Le code -1 est réservé aux valeurs manquantes
  • Peut économiser de la mémoire
  • Souvent utilisé dans les enquêtes

Limite :

  • Pas idéal pour le machine learning (voir prochaine leçon)
Utilisation de données catégorielles dans Python

Créer des codes

Convertir en catégoriel et trier par constructeur

used_cars['manufacturer_name'] = used_cars['manufacturer_name'].astype("category")

Utiliser .cat.codes

used_cars['manufacturer_code'] = used_cars['manufacturer_name'].cat.codes
Utilisation de données catégorielles dans Python

Vérifier la sortie

print(used_cars[['manufacturer_name', 'manufacturer_code']])
      manufacturer_name  manufacturer_code
0                Subaru                 45
1                Subaru                 45
2                Subaru                 45
...                 ...                ...
38526          Chrysler                  8
38527          Chrysler                  8
Utilisation de données catégorielles dans Python

Codebooks / dictionnaires de données

Exemple de codebook de l’American Housing Survey.

1 https://www.census.gov/data-tools/demo/codebook/ahs/ahsdict.html
Utilisation de données catégorielles dans Python

Créer un codebook

codes = used_cars['manufacturer_name'].cat.codes
categories = used_cars['manufacturer_name']
name_map = dict(zip(codes, categories))

print(name_map)
{45: 'Subaru',
 24: 'LADA',
 12: 'Dodge',
 ...
}
Utilisation de données catégorielles dans Python

Utiliser un codebook

Créer les codes :

used_cars['manufacturer_code'] = used_cars['manufacturer_name'].cat.codes

Revenir aux valeurs d’origine :

used_cars['manufacturer_code'].map(name_map)
0        Acura
1        Acura
2        Acura
...
1 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html
Utilisation de données catégorielles dans Python

Codage booléen

Trouver tous les types de carrosserie contenant « van » :

# Code de la leçon précédente :
used_cars["body_type"].str.contains("van", regex=False)

Créer un codage booléen :

used_cars["van_code"] = np.where(
  used_cars["body_type"].str.contains("van", regex=False), 1, 0)

used_cars["van_code"].value_counts()
0    34115
1     4416
Name: van_code, dtype: int64
Utilisation de données catégorielles dans Python

Exercice d’encodage

Utilisation de données catégorielles dans Python

Preparing Video For Download...