Nettoyage des données
Filière: Ingénierie logicielle
AU: 2024/2025
Nettoyage des données
Pourquoi faut-il nettoyer les données ?
• Les données brutes peuvent contenir des doublons, des fautes d'orthographe, des
erreurs de typage et des données incohérentes.
• Des données incorrectes ou incohérentes conduisent à des conclusions erronées.
• La qualité des résultats dépend directement de la qualité des données traitées.
Nettoyage des données
Critères de qualité des données
Des données de haute qualité doivent respecter un ensemble de critères de qualité,
notamment :
• Validité
• Précision
• Complétude
• Consistance
• Uniformité
Nettoyage des données
Validité
Conformité aux règles d’entreprise ou aux contraintes définies :
• Contraintes de type de données (booléen, numérique, date, etc.).
• Contraintes de plage (ex. : une échelle de 1 à 5).
• Contraintes de mandat (ex. : des champs obligatoires comme un identifiant unique).
• Contraintes d’unicité (aucun doublon dans un champ).
• Contraintes d’appartenance à un ensemble (ex. : genre = ["Homme", "Femme"].
• Validation inter-champs : certaines conditions qui s'appliquent à plusieurs champs doivent
être respectées (ex. : la date de sortie d'un patient de l'hôpital ne peut pas être antérieure
à la date d'admission).
• Contraintes de clé étrangère (associées à des bases de données relationnelles).
• Modèles d’expression régulière (ex. : numéro de téléphone).
Nettoyage des données
Précision
Mesure à laquelle les données sont proches des valeurs réelles.
Exemple :
un poids ou une taille doit être dans des limites raisonnables.
Nettoyage des données
Complétude
La complétude des données évalue si toutes les informations requises sont disponibles.
Problème d'incomplétude : Si certaines informations n'ont pas été collectées au
moment de l'enregistrement des données, il est très difficile, voire impossible, de les
reconstruire uniquement avec des méthodes de nettoyage de données.
Exemple : Pour des données d'entretien, il est parfois possible de compléter les
informations manquantes en retournant à la source d'origine, par exemple en
réinterrogeant une personne. Cependant, cela peut poser deux problèmes :
– La personne pourrait donner une réponse différente.
– Elle pourrait être difficile à joindre à nouveau.
Nettoyage des données
Consistance
Les données ne doivent pas être contradictoires.
Exemple:
Deux champs avec des valeurs incohérentes pour une même entité.
Nettoyage des données
Uniformité
Les données doivent être exprimées dans les mêmes unités.
Exemple:
Nettoyage des données
Le flux de travail
Le flux de travail pour obtenir des données de haute qualité repose sur trois étapes
principales, en tenant compte de tous les critères évoqués précédemment :
• Inspection : Identifier les données inattendues, incorrectes ou incohérentes.
• Nettoyage : Corriger ou supprimer les anomalies détectées.
• Vérification : Examiner les résultats après nettoyage pour s'assurer de leur
exactitude.
Bien qu'il semble s'agir d'un processus linéaire, en réalité, c'est un cycle itératif et
continu. Il est fréquent de revenir à l'étape d'inspection après la vérification, lorsqu'on
découvre de nouvelles anomalies.
Nettoyage des données
Inspection
L'inspection des données prend du temps et nécessite l'utilisation de nombreuses
méthodes pour explorer les données sous-jacentes et détecter les erreurs, notamment:
• Profilage des données.
• Visualisation.
Nettoyage des données
Profilage des données
Des statistiques récapitulatives sur les données,
appelées profilage des données, sont très utiles
pour obtenir une idée générale de leur qualité.
Par exemple, cela permet de vérifier si une
colonne spécifique respecte certains standards ou
motifs prédéfinis.
Nettoyage des données
Visualisation
En analysant et en visualisant les données à l'aide de méthodes statistiques telles que
la moyenne, l'écart-type, la plage ou les quantiles, il est possible de repérer des valeurs
aberrantes qui sont inattendues et donc probablement erronées.
Nettoyage des données
Nettoyage des données
Le nettoyage des données utilise différentes techniques en fonction du problème
rencontré et du type de données. Chaque méthode présente ses avantages et
inconvénients, et doit être choisie avec soin selon le contexte.
De manière générale, les données incorrectes peuvent être :
• Supprimées : Élimination des données erronées ou inutilisables.
• Corrigées : Modification des valeurs pour les rendre cohérentes et valides.
• Imputées : Remplacement des données manquantes ou incorrectes par des
estimations basées sur les autres informations disponibles.
Nettoyage des données
Gestion des valeurs manquantes
La première étape pour traiter les valeurs manquantes consiste à comprendre
pourquoi elles sont absentes. C'est ici qu'intervient une notion clé en science des
données que l'on pourrait appeler l'intuition des données. Il s'agit de se poser la
question :
Cette valeur est-elle manquante parce qu'elle n'a pas été enregistrée ? Ou est-elle
manquante parce qu'elle n'existe pas ?
Nettoyage des données
Si la valeur n'existe pas :
• Exemple : La taille du premier enfant d'une personne qui n'a pas d'enfants.
• Dans ce cas, il est inutile de tenter de deviner cette valeur. Il est préférable de
la laisser sous forme de NaN pour refléter qu'elle n'existe pas.
Si la valeur n'a pas été enregistrée :
• Exemple : Une mesure manquante dans un ensemble de données.
• Dans ce cas, il est possible d'estimer la valeur manquante en s'appuyant sur
les autres données de la colonne ou de la ligne. Cela peut se faire à l'aide
de techniques comme l'imputation (utilisation de la moyenne, de la
médiane, ou d'autres méthodes).
Nettoyage des données
La fonction [Link]() permet de détecter les valeurs manquantes dans un objet
de type tableau ou scalaire. Elle identifie les valeurs manquantes : NaN dans les
tableaux numériques. None ou NaN dans les tableaux d'objets. NaT pour les types de
données temporelles.
Nettoyage des données
Suppression des valeurs manquantes
Lorsqu'il n'est pas nécessaire de comprendre les raisons des valeurs manquantes ou si
le temps est limité, une solution consiste à supprimer directement les lignes ou
colonnes concernées. Pour éliminer toutes les lignes contenant au moins une valeur
manquante, la méthode suivante peut être utilisée :
Nettoyage des données
Cependant, si chaque ligne du jeu de données contient au moins une valeur
manquante, la suppression des lignes entraînera l'élimination de la totalité des
données. Dans ce cas, il peut être plus judicieux de supprimer les colonnes contenant
des valeurs manquantes plutôt que les lignes, afin de conserver une partie des
données pour l'analyse.
Nettoyage des données
Remplir automatiquement les valeurs manquantes
Une autre option consiste à remplir les valeurs manquantes de manière automatique.
Différentes méthodes pour remplir les valeurs manquantes :
• Moyenne/ Médiane, Mode : Remplir les valeurs manquantes avec la moyenne, la
médiane ou la mode de la colonne ou des données concernées.
• bfill, ffill : Utiliser les méthodes de propagation de valeurs en arrière (bfill) ou en
avant (ffill) pour remplir les valeurs manquantes avec les valeurs voisines.
• Interpolation : Estimer les valeurs manquantes en utilisant une méthode
d'interpolation, qui estime les valeurs en fonction des données environnantes.
• Remplacer : Remplacer directement les valeurs manquantes par une valeur
spécifique définie par l'utilisateur.
Nettoyage des données
On peut utiliser la fonction fillna() de la bibliothèque
Pandas pour remplir automatiquement les valeurs
manquantes dans un DataFrame. Par exemple, dans le
cas où on souhaite remplacer toutes les valeurs NaN
par 0.
Nettoyage des données
Remplissage des valeurs manquantes avec la moyenne, la médiane ou le mode
• Données numériques : Moyenne (Mean) / Médiane (Median)
Moyenne (Mean) : La moyenne est la valeur moyenne des données. Elle est
utilisée lorsque les données n'ont pas de valeurs aberrantes (outliers).
Médiane (Median) : La médiane est la valeur centrale qui divise les données en
deux parties égales. Elle est idéale lorsque les données contiennent des outliers, car
la médiane n'est pas affectée par les valeurs extrêmes.
• Données catégorielles : Mode
Mode : Le mode est la valeur la plus fréquente dans une colonne. Pour les
colonnes contenant des données catégorielles (comme des labels ou des
catégories), la valeur manquante peut être remplacée par le mode, c'est-à-dire la
catégorie la plus courante dans cette colonne.
Nettoyage des données
Exemple:
Nettoyage des données
Remplissage avec bfill et ffill
• bfill (Backward Fill) : consiste à propager la première valeur non nulle observée en
arrière dans la colonne. Cela signifie que les valeurs manquantes seront remplacées
par la valeur non nulle la plus proche située après elles.
Nettoyage des données
• ffill (Forward Fill) : consiste à propager la dernière valeur non nulle observée vers
l'avant dans la colonne. Les valeurs manquantes seront donc remplacées par la
dernière valeur non nulle avant elles.
Nettoyage des données
Interpolation
Au lieu de remplir toutes les lignes manquantes avec la même valeur, on peut utiliser la
méthode d'interpolation. L'interpolation permet de calculer une valeur manquante en
fonction des valeurs voisines, en utilisant une méthode mathématique pour estimer
une valeur située entre deux points connus.
Nettoyage des données
Suppression des doublons
• La suppression des doublons est une étape clé du nettoyage des données. Les
ensembles de données contiennent souvent des lignes ou des valeurs identiques
répétées, ce qui peut fausser les analyses, les modèles de machine learning ou les
rapports. Il est donc essentiel de les détecter et de les éliminer.
• Avec Pandas, cette tâche est simplifiée grâce à la méthode drop_duplicates(), qui
permet de supprimer efficacement les doublons.
Nettoyage des données
Nettoyage des données
Transformer les données en utilisant une fonction ou un mapping
Pour de nombreux ensembles de données, il peut être nécessaire d'appliquer une
transformation basée sur les valeurs d'un tableau, d'une série ou d'une colonne d'un
DataFrame.
COnsidérons les données hypothétiques suivantes collectées sur différents types de
viande.
Nettoyage des données
On veut ajouter une colonne indiquant le type d'animal dont chaque aliment provient.
Pour cela, on peut utiliser:
• la méthode map() sur une série qui accepte une fonction ou un objet similaire à un
dictionnaire contenant un mapping.
• Ou, passer une fonction qui fait tout le travail.
Nettoyage des données
Remplacer des valeurs
La méthode replace() dans pandas permet de remplacer des valeurs spécifiques dans
un DataFrame ou une série par d'autres valeurs. Elle peut être utilisée de manière très
flexible pour effectuer des remplacements conditionnels ou globaux dans vos données.
Syntaxe:
[Link](to_replace, value, inplace=False)
to_replace : la valeur (ou les valeurs) à remplacer.
value : la valeur par laquelle remplacer.
inplace : si True, les modifications sont effectuées directement dans le DataFrame sans
retourner un nouveau DataFrame (par défaut, c'est False).
Nettoyage des données
Exemple:
Nettoyage des données
Discrétisation et regroupement (Binning)
La discrétisation ou le regroupement (aussi appelé binning) est une technique utilisée
pour transformer des données continues en catégories discrètes. Dans le contexte de
l'analyse des données, il est fréquent de diviser des valeurs continues, telles que l'âge,
en groupes ou tranches (bins), afin de faciliter l'analyse et la visualisation.
ages = [23, 45, 34, 67, 12, 19, 50, 70, 16, 30]
Ils peuvent être diviser en quatre groupes
bins = [18, 25, 35, 60, 100]
Cela est fait en utilisant la fonction cut de pandas
Nettoyage des données
Nettoyage des données
L'objet retourné par [Link]() est un objet Categorical contenant deux éléments
principaux :
• categories : Les noms des bins ou des catégories.
• codes : Des indices représentant à quel bin chaque valeur appartient
Nettoyage des données
Détection et filtrage des valeurs aberrantes
Le filtrage ou la transformation des valeurs
aberrantes consiste principalement à appliquer des
opérations sur des tableaux.
Prenons un exemple avec un DataFrame contenant
des données suivant une distribution normale.
Nettoyage des données
Pour identifier toutes les valeurs d'une des colonnes qui dépassent 3 en valeur absolue:
Pour sélectionner toutes les lignes d'un DataFrame où une valeur dépasse 3 ou -3, on
peut utiliser une condition logique associée à la méthode any() sur un masque booléen.
Nettoyage des données
Permutation et échantillonnage aléatoire
On peut réorganiser aléatoirement une Series ou les lignes d’un DataFrame avec la
fonction [Link]. Cette fonction génère un nouvel ordre des
indices sous la forme d’un tableau d'entiers, basé sur une permutation aléatoire.
Nettoyage des données
Le tableau d'échantillons peut ensuite être utilisé dans l'indexation basée sur iloc ou
dans la fonction équivalente take.
Nettoyage des données
Pour sélectionner un sous-ensemble aléatoire sans remplacement, on peut utiliser la
méthode sample sur une Series ou un DataFrame.
Pour générer un échantillon avec remplacement (afin de permettre des choix répétés),
on peut passer replace=True à la méthode sample :
Nettoyage des données
Calcul des variables indicatrices/dummies
Une transformation courante pour la modélisation statistique ou les applications d'apprentissage
automatique consiste à convertir une variable catégorielle en une matrice de « dummy » ou «
indicatrice ». Lorsqu'une colonne dans un DataFrame contient 𝑘 valeurs distinctes, cette
transformation produit un DataFrame avec 𝑘 colonnes, chacune remplie de 1 et de 0. La fonction
pandas.get_dummies permet de réaliser cette opération de manière simple.
Nettoyage des données
Les expressions régulières
Les expressions régulières offrent une manière flexible de rechercher ou de faire
correspondre (souvent des motifs plus complexes) des chaînes dans du texte. Une
expression unique, communément appelée regex, est une chaîne formée selon le
langage des expressions régulières. Le module intégré re de Python est responsable de
l'application des expressions régulières aux chaînes.
Nettoyage des données
Nettoyage des données
La fonction findall
Retourne toutes les correspondances non superposées du motif dans la chaîne, sous forme de
liste de chaînes. La chaîne est scannée de gauche à droite, et les correspondances sont
retournées dans l'ordre dans lequel elles ont été trouvées :
[Link](pattern, string, flags=0)
Les arguments obligatoires sont le motif de l'expression régulière et la chaîne cible.
pattern : le motif de l'expression régulière utilisé pour rechercher dans la chaîne cible.
string : la variable pointant vers la chaîne cible.
flags : par défaut, aucun flag n'est appliqué. Il existe plusieurs flags que l'on peut utiliser, par
exemple, re.I pour effectuer une recherche insensible à la casse.
Nettoyage des données
Exemple:
Nettoyage des données
La fonction search
Cette fonction recherche la première occurrence du motif d'expression régulière (RE)
dans la chaîne, avec des flags optionnels.
[Link](pattern, string, flags=0)
Les arguments obligatoires sont le motif de l'expression régulière et la chaîne cible.
Nettoyage des données
Exemple:
Nettoyage des données
La fonction split
La méthode split permet de diviser la chaîne en fonction des occurrences du motif
d'expression régulière, et retourne une liste contenant les sous-chaînes résultantes.
[Link](pattern, string, maxsplit=0, flags=0)
Les arguments obligatoires sont le motif d'expression régulière et la chaîne cible. Les
arguments maxsplit et flags sont optionnels.
maxsplit : le nombre de divisions qu’on veut effectuer. Si maxsplit est égal à 2, au
maximum deux divisions seront effectuées, et le reste de la chaîne sera retourné
comme dernier élément de la liste.
Nettoyage des données
Exemple:
Nettoyage des données
Fuzzy matching
Le fuzzy matching est une technique qui permet de trouver des chaînes de caractères
similaires, même si elles ne sont pas exactement identiques. Contrairement à la
correspondance exacte, il tolère des erreurs comme des fautes de frappe, des
variations de casse ou des espacements supplémentaires. Ce processus repose souvent
sur la distance de Levenshtein, qui calcule le nombre d'opérations nécessaires pour
transformer une chaîne en une autre. Les opérations autorisées sont :
Insertion : Ajouter un caractère.
Suppression : Enlever un caractère.
Remplacement : Remplacer un caractère par un autre.
Nettoyage des données
Exemple:
Prenons les deux mots : "chat" et "chats".
Pour transformer "chat" en "chats", on doit ajouter la lettre "s" à la fin de "chat".
La distance de Levenshtein est donc 1 (1 opération d'insertion).
Nettoyage des données
Dans la plupart des cas, les bibliothèques nécessaires ne sont pas installées, il faut donc
utiliser pip, l'installateur de paquets Python, pour les installer depuis l'index de paquets
Python (PyPI) et d'autres sources.
Ensuite, nous pouvons importer la bibliothèque fuzzywuzzy.
Nettoyage des données
Exemple:
Nettoyage des données
Mise à l'échelle (Scaling) vs Normalisation
Dans les deux cas, les valeurs des variables numériques sont transformées afin que les
points de données modifiés possèdent des propriétés spécifiques et utiles. Cependant,
la différence réside dans l'objectif de chaque approche :
• Mise à l'échelle (Scaling) : L'étendue (ou l'intervalle) des données est modifiée en
ajustant les valeurs pour les faire correspondre à une plage spécifique. L'objectif est
de rendre les données comparables en termes d'échelle, sans altérer leur forme de
distribution.
• Normalisation (Normalization) : La forme de la distribution des données est
modifiée. L'objectif est souvent d'adapter les données à certains algorithmes qui
supposent une distribution particulière, tels que ceux basés sur la distance (par
exemple, les K plus proches voisins).
Nettoyage des données
Mise à l'échelle (Scaling)
La mise à l'échelle consiste à transformer les données pour qu'elles s'inscrivent dans
une plage spécifique, comme 0-100 ou 0-1.
Exemple:
Supposons que vous analysiez les prix de produits en deux devises : le dollar américain
(USD) et le yen japonais (JPY). Comme 1 USD ≈ 100 JPY, les prix en yens seront bien plus
élevés. Un algorithme de machine learning basé sur les distances (comme KNN ou
SVM) pourrait alors interpréter ces grandes valeurs comme plus importantes, ce qui
serait erroné.
Nettoyage des données
En appliquant une mise à l'échelle, toutes les valeurs seront normalisées dans une
plage cohérente, par exemple 0 à 1 :
Nettoyage des données
La normalisation : une transformation radicale
• La normalisation transforme les données pour qu'elles suivent une distribution
normale, aussi appelée courbe en cloche, où les observations sont réparties
symétriquement autour de la moyenne.
• Elle est utile pour les algorithmes ou techniques statistiques qui supposent des
données normalement distribuées. Une méthode courante pour cela est la
transformation de Box-Cox, qui ajuste les données afin de mieux respecter cette
hypothèse.
Nettoyage des données
Exemple:
Nous remarquons ici que la forme de nos données a changé. Avant la normalisation,
elle avait presque la forme d'un "L". Mais après la normalisation, elle ressemble
davantage à l'outline d'une cloche (d'où l'expression "courbe en cloche").