Mettre à jour les catégories

Travailler avec des données catégorielles en Python

Kasey Jones

Research Data Scientist

La variable « breed »

Décomptes par race :

dogs["breed"] = dogs["breed"].astype("category")
dogs["breed"].value_counts()
Unknown Mix                 1524
German Shepherd Dog Mix     190
Dachshund Mix               147
Labrador Retriever Mix      83
Staffordshire Terrier Mix   62
...
Travailler avec des données catégorielles en Python

Renommer des catégories

La méthode rename_categories :

Series.cat.rename_categories(new_categories=dict)

Créer un dictionnaire :

my_changes = {"Unknown Mix": "Unknown"}

Renommer la catégorie :

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Travailler avec des données catégorielles en Python

Variable « breed » mise à jour

Décomptes par race :

dogs["breed"].value_counts()
Unknown                     1524
German Shepherd Dog Mix     190
Dachshund Mix               147
Labrador Retriever Mix      83
Staffordshire Terrier Mix   62
...

Plusieurs changements à la fois :

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Travailler avec des données catégorielles en Python

Renommer avec une fonction

Mettre à jour plusieurs catégories :

dogs['sex'] = dogs['sex'].cat.rename_categories(lambda c: c.title())

dogs['sex'].cat.categories
Index(['Female', 'Male'], dtype='object')
Travailler avec des données catégorielles en Python

Problèmes courants de remplacement

  • Doit utiliser de nouveaux noms de catégorie
# Ne fonctionne pas ! « Unknown » existe déjà
use_new_categories = {"Unknown Mix": "Unknown"}
  • Impossible de fusionner deux catégories en une seule
# Ne fonctionne pas ! Les nouveaux noms doivent être uniques
cannot_repeat_categories = {
    "Unknown Mix": "Unknown",
    "Mixed Breed": "Unknown"
}
Travailler avec des données catégorielles en Python

Préparer la fusion de catégories

La couleur d'un chien :

dogs["color"] = dogs["color"].astype("category")
print(dogs["color"].cat.categories)
Index(['apricot', 'black', 'black and brown', 'black and tan',
       'black and white', 'brown', 'brown and white', 'dotted', 'golden',
       'gray', 'gray and black', 'gray and white', 'red', 'red and white',
       'sable', 'saddle back', 'spotty', 'striped', 'tricolor', 'white',
       'wild boar', 'yellow', 'yellow-brown'],
      dtype='object')
...
Travailler avec des données catégorielles en Python

Exemple de fusion de catégories

Créer un dictionnaire et utiliser .replace :

update_colors = {
    "black and brown": "black",
    "black and tan": "black",
    "black and white": "black",
}
dogs["main_color"] = dogs["color"].replace(update_colors)

Vérifier le type de la Series :

dogs["main_color"].dtype
dtype('O')
Travailler avec des données catégorielles en Python

Reconvertir en catégorielle

dogs["main_color"] = dogs["main_color"].astype("category")
dogs["main_color"].cat.categories
Index(['apricot', 'black', 'brown', 'brown and white', 'dotted', 'golden',
       'gray', 'gray and black', 'gray and white', 'red', 'red and white',
       'sable', 'saddle back', 'spotty', 'striped', 'tricolor', 'white',
       'wild boar', 'yellow', 'yellow-brown'],
      dtype='object')
Travailler avec des données catégorielles en Python

Passons à la pratique !

Travailler avec des données catégorielles en Python

Preparing Video For Download...