Mise à jour des catégories

Utilisation de données catégorielles dans Python

Kasey Jones

Research Data Scientist

La variable de race

Occurrences 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
...
Utilisation de données catégorielles dans Python

Renommer des catégories

La méthode rename_categories :

Series.cat.rename_categories(new_categories=dict)

Créez un dictionnaire :

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

Renommez la catégorie :

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Utilisation de données catégorielles dans Python

Variable de race mise à jour

Occurrences 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 modifications à la fois :

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Utilisation de données catégorielles dans 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')
Utilisation de données catégorielles dans Python

Problèmes courants de remplacement

  • Il faut utiliser de nouveaux noms de catégories
# 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"
}
Utilisation de données catégorielles dans Python

Préparer la fusion des catégories

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')
...
Utilisation de données catégorielles dans Python

Exemple de fusion de catégories

Créez un dictionnaire et utilisez .replace :

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

Vérifiez le type de la Series :

dogs["main_color"].dtype
dtype('O')
Utilisation de données catégorielles dans 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')
Utilisation de données catégorielles dans Python

Temps de pratique

Utilisation de données catégorielles dans Python

Preparing Video For Download...