Nettoyage et Gestion des Valeurs Incohérentes

La gestion des valeurs incohérentes
Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Maîtrisez Python : Analyse et visualisations des données
Revoir le teaser Je m'abonne
3,5
Transcription

Description Programme Avis
3,5

L'objectif de cette vidéo est de montrer comment détecter et gérer les valeurs incohérentes dans un jeu de données.

Découvrez les meilleures pratiques pour gérer les valeurs incohérentes dans un jeu de données et optimiser vos analyses statistiques.

Maintenant que nous avons supprimé les valeurs manquantes de notre jeu de données, le travail de nettoyage peut continuer ou plus ou moins commencer. Car s'il y a des erreurs de saisie qui peuvent se conclure par des valeurs nulles, l'essentiel du temps, votre jeu de données va contenir des valeurs complètement assurées. Pour qu'une analyse de données soit faite de façon rigoureuse, il vous faudra évaluer et détecter un maximum de ces valeurs incohérentes et à ce moment-là, comme nous l'avions fait pour les valeurs nulles, décider quelles actions mener.

Les supprimer ou les modifier ? Vous utiliserez à nouveau le jeu de données fourni pour pratiquer, encore une fois, votre esprit critique. Nous importons à nouveau les opérations du Superstore et nous passons sur la section ‘Considérer la suppression’.

Supprimer des valeurs incohérentes, ça reste l'option de facilité. Mais encore une fois, avant de considérer la suppression, il va falloir se poser quelques questions. Déjà, comme pour les valeurs manquantes, quelle est la proportion de ces valeurs incohérentes ? Est-ce que c'est 0.1%, 1%, 10% ? Plus il va y avoir d'erreurs incohérentes, moins il sera possible de les supprimer. Ensuite, il va falloir considérer à nouveau, avant et après suppression, est-ce que cela change drastiquement les indices statistiques classiques ? La moyenne, la médiane, la déviation standard ?

Pour évaluer le nombre de valeurs incohérentes dans un data frame, vous réutiliserez la fonction describe. Non pas le count, mais la moyenne, la déviation standard, les valeurs minimum, les valeurs maximum, les 25%, c'est-à-dire le premier percentile, etc. Et ici, on a une colonne qui pose question. C'est la colonne, ou plutôt la variable numberOfRecords, qui doit vous interroger, normalement. Alors pourquoi elle doit vous interroger ? Pour plein de raisons.

Voir plus
Questions réponses
Pourquoi est-il important de détecter les valeurs incohérentes dans un jeu de données ?
Détecter les valeurs incohérentes est crucial pour garantir la précision et la fiabilité des analyses statistiques et des modèles prédictifs.
Que faire si la proportion de valeurs incohérentes est élevée dans un jeu de données ?
Si la proportion de valeurs incohérentes est élevée, il est souvent préférable de chercher à comprendre et corriger les incohérences plutôt que de les supprimer.
Quelles métriques statistiques sont importantes à vérifier avant de supprimer des valeurs incohérentes ?
Il est important de vérifier la moyenne, la médiane et la déviation standard avant et après la suppression des valeurs incohérentes.
Maintenant que nous avons supprimé les valeurs manquantes de notre jeu de données, le travail de nettoyage peut continuer ou plus ou moins commencer. Car s'il y a des erreurs de saisie qui peuvent se conclure par des valeurs nulles, l'essentiel du temps, votre jeu de données va contenir des valeurs complètement assurées. Pour qu'une analyse de données soit faite de façon rigoureuse, il vous faudra évaluer et détecter un maximum de ces valeurs incohérentes et à ce moment-là, comme nous l'avions fait pour les valeurs nulles, décider quelles actions mener. Les supprimer ou les modifier ? Vous utiliserez à nouveau le jeu de données fourni pour pratiquer, encore une fois, votre esprit critique. Nous importons à nouveau les opérations du Superstore et nous passons sur la section Considérer la suppression. Supprimer des valeurs incohérentes, ça reste l'option de facilité. Mais encore une fois, avant de considérer la suppression, il va falloir se poser quelques questions. Déjà, comme pour les valeurs manquantes, quelle est la proportion de ces valeurs incohérentes ? Est-ce que c'est 0.1%, 1%, 10% ? Plus il va y avoir d'erreurs incohérentes, moins il sera possible de les supprimer. Ensuite, il va falloir considérer à nouveau, avant et après suppression, est-ce que cela change drastiquement les indices statistiques classiques ? La moyenne, la médiane, la déviation standard ? Enfin, cette question est difficile à répondre sans bien maîtriser le domaine dans lequel on manipule des données. Est-ce que cette valeur aberrante n'est pas au contraire intéressante ? Je m'explique. Parfois, vous allez avoir des données qui sont en dehors du jeu de données, ce que j'appelle des outliers, des données qui sont vraiment en dehors, et on va avoir envie, la tentation, de les considérer comme des valeurs fausses. Parfois, il faut juste analyser, chercher à comprendre pourquoi cette valeur-là existe, et très souvent, en fait, elle est vraie, et elle nécessite une explication intéressante. Et c'est ici que réside toute la valeur d'un bon data analyst, d'un bon statisticien. Pour évaluer le nombre de valeurs incohérentes dans un data frame, vous réutiliserez la fonction describe. Cette fois, on ne va pas s'intéresser aux valeurs manquantes, puisque on est reparti du jeu de données d'origine, mais on va plutôt regarder les autres informations délivrées par la fonction describe. Non pas le count, mais la moyenne, la déviation standard, les valeurs minimum, les valeurs maximum, les 25%, c'est-à-dire le premier percentile, etc. Et ici, on a une colonne qui pose question. C'est la colonne, ou plutôt la variable numberOfRecords, qui doit vous interroger, normalement. Alors pourquoi elle doit vous interroger ? Pour plein de raisons. Alors qu'il y a 9.994 entrées, comme pour toutes les autres variables, on a une moyenne de 1. Bon, jusque-là, tout va bien. On a aussi un minimum de 1. Jusque-là, tout va bien. On a aussi un maximum de 1. Et là, ça ne va pas. Ça ne va pas, surtout que la déviation standard, qui est un concept que vous venez d'apprendre, est de 0. La déviation standard, on l'avait parlé, c'est finalement une métrique qui mesure l'écart à la moyenne. Si l'écart à la moyenne est de 0, c'est que toutes les valeurs sont à la valeur de la moyenne, c'est-à-dire que toutes les valeurs sont les mêmes. Est-ce qu'on a vraiment intérêt à conserver une console, une variable, qui ne contiendrait que des 1 ? La réponse est non. On n'a aucun intérêt à garder une colonne qui ne contiendrait qu'une seule valeur. Dans ce cas précis, il est donc cohérent de supprimer cette colonne, puisqu'elle n'apporte aucune information. Nous ferons cela à l'aide de la fonction drop liée au data frame. Le premier paramètre est une liste de chaînes de caractère, qui contiendra le nom des index ou le nom des variables à supprimer. Le second paramètre, excise, prend pour valeur columns ou index, selon le sens de la suppression, que ce soit en vertical ou en horizontal. Enfin, le paramètre in place, configuré avec la valeur true, permet d'appliquer la modification au data frame manipulé. Nous vérifions le data frame et nous voyons que la colonne numberOfRecords a disparu. Alors, en considérant à nouveau ce data frame, on se rend compte que la colonne country ne contient, elle aussi, qu'une seule valeur, unitedStates. Du coup, en appliquant le même raisonnement, vous pourriez également supprimer cette variable country qui ne contient que cette valeur. Avançons sur la cohérence des valeurs possibles que peut avoir une variable. Ici, même si c'est une formation, il n'y a pas de recette théorique ou magique à évaluer, ça va surtout interroger votre bon sens et vos connaissances vis-à-vis du jeu de données concernées. Typiquement, si on considère ici un ensemble de ventes, on a des questions qu'on peut se poser pour vérifier de la cohérence des données que nous avons. Par exemple, est-ce qu'un chiffre d'affaires est négatif ? Est-ce qu'il peut l'être ? Non, la réponse est non. Du coup, si nous avons une valeur négative dans cette colonne, c'est une valeur incohérente. Le même raisonnement s'applique également sur la quantité de produits vendus. La quantité de produits vendus est forcément supérieure à zéro. Quel est l'intérêt d'avoir une ligne pour une commande de zéro produit ? A priori, ce n'est pas possible, c'est une incohérence. Est-ce qu'une variable qui stocke le genre d'une personne, ce n'est pas le cas dans notre jeu de données, peut valoir autre chose que homme, femme ou nom binaire ? Là aussi, ça interroge. A priori, ce n'est pas possible. Même si ça fera l'objet d'une vidéo prochaine, on peut se poser déjà des questions sur l'âge ou les dates de manière générale. Est-ce que l'âge d'une personne est valide ? Si on a la colonne âge et la colonne date de naissance, on peut faire des comparaisons. Vérifier l'année dans la date de naissance, comparer avec l'année d'aujourd'hui et vérifier si l'âge est cohérent. Est-ce que la date de naissance est valide tout court ? Est-ce que c'est normal d'avoir un client qui est né dans le futur ou qui a plus de 130 ans par exemple ? Enfin, on peut avoir des questions à se poser sur le type de données stockées dans une variable. Est-ce qu'il est logique par exemple de trouver une chaîne de caractères pour une variable dont le nom est pris ? Et donc, il y a ici un travail de recherche qui est long, qui n'est pas possible toujours d'automatiser pour éliminer un maximum de valeurs incohérentes de votre jeu de données. A titre d'information, sachez que pour un data analyst ou un statisticien, le nettoyage et la vérification de ses jeux de données, c'est 90% de son temps de travail. C'est-à-dire que la visualisation de données, qui est l'objectif de cette formation, ne représente dans la réalité que 10% du temps de travail d'un data analyst. Alors, voici deux fonctions qui vous aideront dans ce travail d'enquête. La fonction unique pour lister les valeurs distinctes d'une variable et le paramètre dtypes qui donne le type de données contenues par les variables d'un data frame. Pour vous, j'ai fait quelques vérifications sur le jeu de données. Il se trouve que le jeu de données SuperStore est plutôt propre et contient des valeurs plutôt cohérentes. Mais ça se vérifie. Est-ce que les valeurs disponibles pour la région sont cohérentes ? South, West, Central, East, West... A priori, c'est cohérent. Est-ce que les valeurs contenues dans la colonne catégorie sont cohérentes ? Furniture, Fight supplies, Technology... A priori, oui. Est-ce que pour le mode de livraison est-ce que les valeurs disponibles dans cette colonne sont cohérentes ? A priori, oui. Pareil pour les segments de clients. Si on regarde la colonne dtypes, on va avoir des informations un peu plus intéressantes à tirer. Pour pouvoir bien lire cette liste, il faut que je vous informe du fait que chaque chaîne de caractère est considérée comme le type object par Panda. Du coup, on va lister l'ensemble de ces variables et se poser la question de savoir si le type de données est cohérent. Pour une catégorie, oui. City, oui. Country, aussi. Customer name, aussi. Discount, c'est un flottant, donc un chiffre à virgule, oui. Le nombre de records, oui. Mais de toute façon, la colonne, on l'a supprimé, donc c'est pas très intéressant. Order date, object... Qu'une date soit toquée sous forme de chaîne de caractère, ça pose deux problèmes. Puisque c'est une chaîne de caractère, on ne pourra pas comparer les dates entre elles, et surtout, nous avions vu dans une vidéo précédente que les dates ont un type particulier en Python qui est le type datetime. Donc il faudra convertir ça, mais ça fera l'objet d'une autre vidéo. Order idx, soit une chaîne de caractère, pourquoi pas ? Le code postal en flottant, ça pose problème. Pourquoi ? Parce qu'un code postal, c'est censé être un mentier, mais vu que c'est pas quelque chose qu'on additionne, c'est plutôt une chaîne de caractère qui va contenir des chiffres. Et donc, ce que l'on peut faire, c'est traiter cette incohérence. On va pouvoir convertir la colonne d'un dataframe, et avec un peu de chance, ça va aussi convertir l'affichage de cette colonne. Pour cela, nous utilisons la fonction const type suivie du type de données à convertir. Et, parfois, si vous avez des valeurs nulles, vous verrez que cette instruction ne fonctionnera pas. Ce ne sera pas le cas ici, parce que la conversion d'un objet de la valeur nulle en tant que chaîne de caractère, ça va faire une chaîne de caractère vide. Mais si, par exemple, nous avions voulu convertir cette colonne de flottant à entier, puisqu'une valeur nulle ne peut pas être convertie en chiffre entier, Panda ne sait pas le faire, il vous aurait affiché une erreur. Ici, ça a bien fonctionné, mais effectivement, ça change l'affichage. Maintenant, vous n'avez plus d'affichage avec une virgule ou un point. Tout a fonctionné correctement.
4 commentaires
3,5
4 votes
5
4
3
2
1
elephorm-1464076@addviseo.com
Il y a 3 months
Commentaire
Bonne formation mais vraiment dommage de ne pas avoir au moins les liens des supports de cours.
nicolasmichaux1
Il y a 1 year
Commentaire
Bonnne formation mais aucun support de cours
lebris.gilles76
Il y a 2 years
Commentaire
Très bien , mais il manque les supports de cours
antoinem
Il y a 2 years
Commentaire
Bien mais il manque les supports de cours
Nos dernières formations Python
  • Pack 5 formations
    Pack Python : Des bases aux techniques avancées
    Découvrir
    Réputé pour être le langage de programmation le plus populaire au monde, Python est très plébiscité pour ses différentes utilisations.  A travers ce pack de 5 formations, vous apprenez les fondamentaux de la programmation Python, vous maîtrisez les techniques avancées et vous découvrez comment utiliser Python pour le web et pour l’analyse et la visualisation des données. Apprendre à programmer en Python : Apprendre les fondamentaux du langage de programmation Python. Apprendre Python : Qualité de code et maintenance : Maîtriser Python avec une qualité de code et de maintenance optimales. Maîtriser Python : Techniques avancées : Formez-vous aux différentes fonctionnalités avancées de python. Apprendre le web avec Python/ Django : Découvrez la programmation Web : Apprendre les principes fondamentaux de la programmation Web Maîtriser Python : Analyse et visualisations des données : Apprendre à utiliser Python pour l’analyse et la visualisation des données
    22h52 154 leçons
  • Apprendre Python   - Qualité de code et maintenance
    Découvrir
    Maîtriser Python avec une qualité de code et de maintenance optimales
    3h09 23 leçons
  • Maîtriser Python  - Techniques avancées
    Découvrir
  • Apprendre à programmer en Python
    Découvrir
    Apprendre les fondamentaux du langage de programmation Python
    6h33 60 leçons 4,75 / 5
  • Apprendre le Web avec Python/Django - Découvrez la programmation web
    Découvrir
    Apprendre les principes fondamentaux de la programmation Web
    4h38 32 leçons 3,50 / 5