Nettoyer et accéder aux données

Utilisation de données catégorielles dans Python

Kasey Jones

Research Data Scientist

Problèmes possibles avec les données catégorielles

1) Valeurs incohérentes : "Ham", "ham", " Ham"

2) Fautes d’orthographe : "Ham", "Hma"

3) Mauvais dtype : df['Our Column'].dtype

dtype('O')
Utilisation de données catégorielles dans Python

Identifier les problèmes

Utiliser au choix :

  • Series.cat.categories
  • Series.value_counts()
dogs["get_along_cats"].value_counts()
No     2503
yes     275
no      156
Noo       2
 NO       1
Utilisation de données catégorielles dans Python

Corriger : espaces

Supprimer les espaces : .strip()

dogs["get_along_cats"] = dogs["get_along_cats"].str.strip()

Vérifier les fréquences :

dogs["get_along_cats"].value_counts()
No     2503
yes     275
no      156
Noo       2
NO        1   # < ---- plus d’espaces
Utilisation de données catégorielles dans Python

Corriger : casse

Casse : .title(), .upper(), .lower()

dogs["get_along_cats"] = dogs["get_along_cats"].str.title()

Vérifier les fréquences :

dogs["get_along_cats"].value_counts()
No     2660 
Yes     275
Noo       2
Utilisation de données catégorielles dans Python

Corriger : mots mal orthographiés

Corriger une faute avec .replace()

replace_map = {"Noo": "No"}
dogs["get_along_cats"].replace(replace_map, inplace=True)

Vérifier les fréquences :

dogs["get_along_cats"].value_counts()
No     2662
Yes     275
Utilisation de données catégorielles dans Python

Vérifier le type de données

Vérifier le dtype

dogs["get_along_cats"].dtype
dtype('O')

Revenir à une catégorie

dogs["get_along_cats"] = dogs["get_along_cats"].astype("category")
Utilisation de données catégorielles dans Python

Utiliser l’accesseur str

Rechercher une chaîne

dogs["breed"].str.contains("Shepherd", regex=False)
0        False
1        False
2        False
...
2935     False
2936     True
Utilisation de données catégorielles dans Python

Accéder aux données avec loc

Accéder aux valeurs d’une Series par catégorie

dogs.loc[dogs["get_along_cats"] == "Yes", "size"]

Comptage des valeurs de la Series :

dogs.loc[dogs["get_along_cats"] == "Yes", "size"].value_counts(sort=False)
small      69
medium    169
large      37
Utilisation de données catégorielles dans Python

Exercice : nettoyer et accéder

Utilisation de données catégorielles dans Python

Preparing Video For Download...