Gestion des Valeurs Manquantes dans les Données

La gestion des valeurs manquantes
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

Les objectifs de cette vidéo sont de vous fournir des méthodes pour identifier les valeurs manquantes dans vos données, évaluer leur impact sur votre analyse, et appliquer des techniques de rectification adéquates.

Apprenez à gérer les valeurs manquantes dans vos jeux de données et découvrez les meilleures pratiques pour le nettoyage de données.

Dans cette leçon, nous abordons une problématique commune en analyse de données : la gestion des valeurs manquantes. Les données peuvent être incomplètes pour diverses raisons : absence de la personne en charge de la collecte, bug informatique, erreurs de manipulation, etc. Une analyse rigoureuse nécessite d’évaluer le nombre de valeurs manquantes et de décider si elles doivent être supprimées, modifiées, ou laissées telles quelles.

Nous utiliserons un exemple concret avec un jeu de données issu de la chaîne de magasins Superstore. Nous verrons comment évaluer la proportion de valeurs manquantes et les effets possibles de leur suppression sur les indices statistiques. Nous explorerons aussi les stratégies de modification, telle que le remplacement des codes postaux manquants par des valeurs fiables trouvées en ligne ou dans le dataset lui-même.

Voir plus
Questions réponses
Pourquoi les jeux de données présentent-ils souvent des valeurs manquantes ?
Les valeurs manquantes peuvent être dues à l'absence du collecteur de données, des bugs informatiques, des erreurs de manipulation ou des champs invalides remplacés par des vides.
Quels sont les facteurs à considérer avant de supprimer des valeurs manquantes ?
Il faut évaluer la proportion de valeurs manquantes, l'impact de leur suppression sur les indices statistiques et si une non-valeur peut être considérée comme une valeur en soi.
Comment peut-on remplacer une valeur manquante, par exemple un code postal, dans un dataset ?
On peut rechercher sur Internet le code postal correspondant à la ville manquante ou utiliser des valeurs préexistantes dans le dataset pour compléter les informations manquantes.
Donc dans cette partie qui va parler essentiellement du nettoyage de vos données, nous allons aborder un sujet principal qui est la gestion des valeurs manquantes. Alors, que faire quand un jeu de données n'est pas complet ? Dans la réalité, les jeux de données contiennent des valeurs manquantes pour des raisons diverses et variées. C'est une réalité, c'est comme ça, la plupart des jeux de données contiendront des valeurs manquantes. Ça peut être parce que la personne en charge de la collecte était absente ce jour-là, ou n'a pas voulu faire sa tâche ou n'a pas pu faire sa tâche de collecte. Il peut y avoir eu un bug informatique qui a conduit à de la perte d'information. Ou alors les valeurs qui ont été entrées pour une erreur de manipulation étaient invalides et ont été remplacées par un champ vide, une valeur vide. Alors, pour qu'une analyse de données soit faite de façon rigoureuse, il vous faudra évaluer le nombre de ces valeurs manquantes et décider quelles actions mener. Est-ce qu'il va falloir les supprimer ou alors les modifier ? Ou parfois, ce qui est assez rare, les laisser telles quelles. Pour pratiquer et travailler un peu votre esprit critique, nous allons continuer à utiliser le jeu de données fourni, à savoir le listing des ventes de la chaîne de magasins Superstore. Alors, considérez la suppression. Beaucoup de statisticiens juniors et de data analysts juniors font le choix de supprimer les entrées dont certaines variables sont manquantes par défaut. Car ils ne savent pas bien encore comment considérer ces données. Avant de considérer la suppression, il faudrait idéalement se poser les questions suivantes. Déjà, dans quelle proportion a-t-on de valeurs manquantes ? Est-ce que c'est 0.1% de l'échantillon ? Est-ce que c'est 1% de l'échantillon ? Ou est-ce que c'est 10% de l'échantillon ? Si vous avez très très très très peu de valeurs manquantes, effectivement, considérer la suppression peut être une bonne décision. Ça n'aura pas un gros impact sur l'analyse et ça vous permet de travailler qu'avec des jeux de données qui sont propres. Pour évaluer ça, est-ce que avant et après suppression, est-ce que cela change drastiquement les indices statistiques que l'on avait calculés dans des vidéos précédentes ? Est-ce que la moyenne change beaucoup ? Est-ce que la médiane change beaucoup ? Est-ce que la variante, la déviation standard change beaucoup ? En fonction de ça, vous pouvez prendre une décision de supprimer ou pas ces valeurs. Enfin, et c'est parfois le cas, est-ce qu'une non-valeur peut être considérée comme une valeur en soi ? Parfois, dans des enquêtes de satisfaction, vous avez le choix ou non de répondre à des questions. Et le fait de ne pas répondre est une information en soi. À ce moment-là, il serait idiot de supprimer ces entrées comme il serait idiot de les remplacer par des valeurs par défaut. Alors, pour évaluer le nombre de valeurs manquantes dans un data frame, vous réutiliserez la fonction describe que l'on avait vue auparavant. Cette fonction describe, et notamment son paramètre count, va vous donner le nombre d'entrées qui ont des valeurs par colonne, donc par variable de votre data frame. On se rend compte ici que le code postal, postal code, a moins d'entrées que les autres variables du data frame considéré. Alors, si on fait un calcul rapide, 11 entrées sur environ 10 000, c'est à peu près 0.1% de l'échantillon, c'est très très peu. Dans ce cas, vous pourriez estimer qu'une suppression est envisageable. Mais, est-ce qu'il ne serait pas possible de retrouver le code postal en fonction de la ville, par exemple ? Récupérons déjà cette variable city pour les 11 lignes concernées. Pour faire cela, on va utiliser la fonction isNa, qui va récupérer que les entrées pour lesquelles la variable considérée est nulle. Et donc, nous pouvons faire ça en créant un nouveau data frame, code postal manquant, en passant dans SuperStore, la condition, le code postal doit être nul. Nous récupérons donc les 11 lignes que nous avions identifiées auparavant. On voit ici Na, Na, NaN pour Not a Number, ce qui veut dire que la colonne ne contient pas d'informations. Après lecture rapide, on se rend compte que, au final, c'est toujours la ville de Burlington qui est concernée par ce code postal manquant. Et donc, plutôt que supprimer la ligne, on pourrait, par exemple, aller rechercher sur Internet le code postal et le réassigner. Ou alors, le choix rapide de faciliter, supprimer les informations. Cette fois, nous allons utiliser la fonction notNa, et donc affecter à un data frame, le data frame d'origine, en ne gardant que les lignes pour lesquelles la colonne postal code n'est pas nulle. Ça se fait de cette façon-là, en posant la condition dans le data frame, et nous allons effectuer une copie pour bien distinguer SuperStore, qui est le data frame d'origine, de choix 1, la stratégie 1 que nous avons décidé d'appliquer. Après description de data frame, on voit bien maintenant que nous n'avons plus que 9983 entrées pour chacune des variables numériques considérées. Alors, revenons à cette stratégie de remplacement du code postal, puisqu'il est assez facile sur Internet, je vous mets le lien ici, pour une ville des États-Unis de retrouver son code postal. Ce n'est pas une information compliquée à obtenir. Si on reprend ces 11 lignes concernées, et qu'on remplace le code postal par la ville de Burlington dans le Vermont aux États-Unis, c'est 0 5401. On peut réassigner le contenu d'une colonne, d'une variable, d'un data frame, à l'aide de la fonction lock. La fonction lock prendra en premier paramètre la condition de sélection des lignes, donc chacune des lignes du data frame, et le deuxième paramètre consistera à sélectionner les colonnes ou variables concernées. Donc ici, nous créons une copie du data frame d'origine, pour bien séparer les différents data frames, et en condition, on prend toutes les lignes pour lesquelles le code postal est nul, donc ça c'est la première condition qui est ici, et quelles colonnes sont concernées par la modification ? La colonne postal code. Nous lui assignons le code postal, qui n'est pas un entier mais une chaîne de caractères, pour des raisons que j'ignore, et nous vérifions à l'aide de la fonction describe ce nouveau data frame. On se rend compte cette fois que le code postal est à 9994 lignes, ce qui était bien le nombre de valeurs d'origine pour l'essentiel des colonnes. Alors, pourquoi pas, mais est-ce que cette modification a bien fonctionné ? Pour le vérifier, on va encore une fois passer à ce data frame une condition. La condition donne-moi toutes les entrées pour lesquelles le code postal est à 05401. Donc on le voit ici, et nous retrouvons bien les 11 lignes d'origine. Vous pouvez faire des comparaisons index à index, 1262, 3569, on remonte un petit peu, 1262, 3569. Je vous demande de me faire confiance sur le fait que ça fonctionnait pour toutes les lignes. Bingo ! Du coup, vous retrouvez bien les entrées, la modification effectuée a bien été appliquée. Super ! Alors, ici c'était simple parce qu'au final il n'y avait qu'une ville pour laquelle le code postal était manquant. Mais imaginez que ça soit pour 50 ou 70 villes. On ne va pas faire la recherche à la main, c'est trop coûteux. On aurait pu considérer dans ce cas l'utilisation d'une valeur pré-calculée. En imaginant que la ville Burlington existe sur plus de 9994 entrées, ou sur un certain nombre d'entrées, peut-être que pour la ville Burlington, certaines fois le code postal était existant. Ce qui aurait été plus simple, c'est de prendre une ligne pour laquelle le code postal était existant pour la ville Burlington, récupérer ce code postal et le réappliquer aux endroits pour la ville de Burlington où le code postal n'existe pas. Juste copier-coller une colonne, en fait. Alors, pour vérifier ça, et parce qu'on sait que c'est la ville de Burlington, ici l'exercice est simple, reprenons pour la ville de Burlington, la colonne city et postal code, les deux variables. Et là, chouette ! Des fois le code postal existe. Bonne nouvelle ! Mauvaise nouvelle ? Il a des valeurs différentes. Et là, ça pose problème. Là, ça pose problème. Le problème déjà, c'est pourquoi il y a deux codes postaux pour la même ville ? Ça, c'est problématique. Le deuxième, c'est comment faire le choix ? Alors, pour trouver ça, et ça fait partie du rôle du data analyst ou du statisticien, il faut avoir des connaissances sur le domaine. Donc, il faut faire de la recherche. Avec une petite recherche sur Internet, ou alors seulement par l'ajout des colonnes state et region, vous avez la réponse. Il se trouve qu'aux Etats-Unis, en fait, la ville de Burlington existe en plusieurs exemplaires. Il y a un Burlington dans l'état de Caroline du Nord, dans le sud des Etats-Unis. Il y a un Burlington dans l'est, pour le Vermont, et c'est ce cas-là où le code postal n'existe pas. Et vous avez aussi, ici, un Burlington dans l'Iowa, au centre des Etats-Unis. Alors, du coup, c'est plus clair, maintenant. C'est-à-dire que, cette fois, on n'aurait effectivement pas pu remplacer automatiquement en précalculant la valeur, puisque, en fait, nous aurions remplacé une valeur nulle par une valeur fausse, ce qui n'est pas l'objectif, pour le coup. Et donc, par chance, par le plus heureux des hasards, au final, il se trouve qu'on avait fait le bon choix précédemment. Au final, nous avions déjà nettoyé, effectivement, bien géré nos valeurs manquantes. Mais il peut arriver des cas où, effectivement, vous pouvez précalculer, à partir des données existantes, les valeurs manquantes.
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