Acheter le livre
Data Science

Analyse de données : les règles à suivre pour le traitement et le nettoyage des données

Ce que nous vous recommandons de faire avant d’analyser vos données

L’un des plus gros problèmes pour un data scientist (probablement le plus gros) est de se rassurer sur la fiabilité des données avec lesquelles il va travailler. Nous sommes souvent confrontés à des situations telles que des valeurs manquantes, des données rapportées dans différents formats ou, tout simplement, des données mal collectées.

Pour un data scientist, une grande quantité de données collectées comme dans l’exemple ci-dessus pourrait être assez frustrante. Hormis une valeur manquante ou une valeur «YES» mal rapportée (comme «YE» dans la colonne «Legal_age»), les variables collectées dans différents formats peuvent être assez ennuyeuses si nous ne les identifions pas avant de commencer notre analyse. C’est précisément le cas des deux variables «Last_login_date» et «Last_login_time». Dans le premier, nous avons des dates collectées dans deux formats différents, “AAAA-MM-JJ” et “JJ / MM / AAAA”, tandis que dans le second, nous avons la plupart du temps signalé comme “HH: MM: SS” sauf dans un cas (utilisateur «3458») où les secondes ne sont pas précisées.

En ayant identifié cela, il ne faut pas hésiter à vérifier nos données avant de commencer l’analyse. C’est pourquoi, après avoir constitué un set de données, il faut absolument traiter les données et, potentiellement, les nettoyer.

Nous allons maintenant voir comment ces deux étapes fonctionnent et quelles sont les étapes indispensables pour toute bonne analyse de données.

Traitement des données : étape 1

En Data Science et en particulier dans l’univers du Big Data, nous nous trouvons souvent dans une situation où nous devons traiter différents sets de données, généralement des fichiers aux formats «.xls» ou «.csv». Cela se produit principalement parce que les données ont été collectées par grappes, comme par exemple des périodes d’années ou des régions d’un pays. Les principaux outils de Data Science comme R (https://www.r-project.org/) nous aident à bien organiser les données, en les plaçant dans les lignes et colonnes d’un tableau unique.

Traitement des données: étape 2

Après avoir consolidé notre set de données, nous devons toujours nous rappeler de vérifier la signification de chaque variable afin de comprendre parfaitement toutes les données que nous allons traiter. Il est peut être également utile d’en faire une liste et de noter pour chaque variable sa signification, son unité et sa valeur d’intervalle. N’oubliez pas : ce n’est pas seulement pour vous que vous devez faire cela mais, potentiellement, pour d’autres personnes qui travailleront avec vous sur ces données. Ce faisant, il peut également être intéressant de renommer les variables avec des étiquettes plus pertinentes et auto-descriptives : un étiquetage intelligent est toujours précieux, surtout dans votre analyse future.

Traitement des données: étape 3

Cette dernière étape rejoint la notion de hiérarchie. Bon nombre de data scientists doivent travailler avec leurs propres KPIs mais aussi avec ceux proposés par leur direction. Il est donc primordial d’intégrer la notion de partage à la construction du futur tableau de bord, même quand celui-ci a pour vocation d’être mis à disposition de plusieurs groupes de personnes.

Nettoyage des données : étape 1

En Data Science, le risque d’avoir des données mal collectées ou enregistrées dans différents formats est très probable. Ce risque augmente évidemment lorsque nous combinons deux ou plusieurs sets de données. C’est pourquoi nous devons vérifier la nature de nos variables. Sur R, des fonctions comme «typeof()», «levels()», «table()» et «summary()» se révèlent alors très utiles pour cela (voir l’exemple ci-dessous réalisé sur la base de données «state» qui vient déjà avec R).

Comme on peut le voir, la fonction «typeof()» détermine le type d’objet sur lequel on travaille : très utile, par exemple, pour savoir s’il s’agit d’un vecteur numérique ou d’un vecteur de caractères.

La fonction «levels()», permet elle d’accéder à l’attribut levels d’une variable. Par exemple, cela peut nous aider à identifier les données mal collectées. Si nous regardons notre premier exemple, en particulier à la variable «Legal_age» (qui répond à la question : est-ce que l’utilisateur a atteint l’âge légal ?) :

Cette variable est une variable dichotomique qui peut uniquement prendre les valeurs «YES» ou «NO». Grâce à «levels()», nous avons immédiatement souligné que dans notre set de données pour «Legal_age», nous avons au moins une valeur manquante et au moins un «YE», ce qui est évidemment une valeur «YES» mal collectée.

Si nous avons besoin de savoir pour combien d’unités statistiques (dans notre cas, User_IDs) la variable «Legal_age» prend la valeur «YE» ou n’a aucune valeur du tout, nous devons alors jeter un œil à la fonction «table ()»:

Ainsi, nous pouvons constater que dans notre exemple, nous avons 18 valeurs manquantes (représentées par un espace vide dans la fonction «table()») et 35 valeurs «YE», qui doivent évidemment être corrigées.

Nettoyage des données : étape 2

La dernière commande que nous avons évoqué au début de l’étape précédente est «summary()». Cette fonction fournit la gamme de statistiques descriptives suivante : moyenne, médiane, 25e et 75e quartiles, min et max. Elle est assez utile pour nous donner une meilleure vision des valeurs assumées par une variable et, potentiellement, pour vérifier s’il y a quelque chose d’anormal parmi celles-ci (min trop bas, max trop élevé, une valeur moyenne complètement différente par rapport à nos attentes, etc. ).

Une valeur aberrante peut parfois être une valeur anormale. Mais que voulons-nous dire lorsque nous parlons de valeurs aberrantes? Une valeur aberrante est une observation qui est numériquement distante du reste des données et qui affecte généralement la plupart des paramètres statistiques, tels que les moyennes, les écarts-types et les corrélations, ainsi que toutes les statistiques basées sur ces derniers. L’identification des valeurs aberrantes est une tâche importante que nous devons effectuer afin de vérifier notre set de données. Cependant, les supprimer d’un ensemble de données n’est pas une bonne pratique, car ce sont des observations légitimes et parfois très plus intéressantes. C’est pourquoi il est important d’étudier leur nature avant de décider quoi en faire. Cependant, dans les cas où il est évident que la valeur aberrante est due à des données mal saisies ou mesurées, nous pouvons la supprimer sans aucun problème.

En Data Science, les outils graphiques tels que les boîtes à moustaches sont fréquemment utilisés pour identifier ce type de données. Dans une boîte à moustaches, une valeur aberrante est définie comme un point de données situé à l’extérieur des clôtures («moustaches») de la boîte à moustaches. Par exemple, exécuter le code R ci-dessous tracera une boîte à moustaches d’une centaine d’observations échantillonnées à partir d’une distribution normale, et nous permettra ensuite de voir le point aberrant :

Nettoyage des données : étape 3

La recherche de doublons est une autre étape importante de la phase de nettoyage des données. Cela est souvent dû à une mauvaise collecte de données. Regardons cet exemple rapide :

 

Nous avons ici un échantillon de l’effectif du Paris Saint-Germain sur la saison 2015/16 où chaque variable indique respectivement le nom et le prénom du joueur, les apparitions saisonnières et les buts marqués (jusqu’au 30 novembre 2015). Comme nous pouvons le voir, Ibrahimovic a été recueilli deux fois : une fois avec son nom et son prénom, une deuxième fois uniquement avec son nom de famille. Évidemment, si nous traitons ce dataset tel quel, nous aurons deux unités statistiques pour Ibrahimovic : cela nous conduira à tort à avoir un joueur de plus par rapport à l’effectif réel du Paris Saint-Germain 2015/16. Les fonctions basiques de chaînes de caractère (voir notre article «Manipuler des chaînes de caractère sous R») ou simplement les fonctions «levels()» ou «table()» peuvent nous aider à individualiser et résoudre ces problèmes assez rapidement.

Nettoyage des données : étape 4

Avant de lancer notre analyse de données, il est toujours plus sûr de faire de simples tests de cohérence, lorsque c’est évidemment possible. Voyons, par exemple, cet échantillon de clients d’un vendeur de vin :

Pour chaque client, nous avons son numéro d’identification, la quantité de bouteilles 75cl qu’il a acheté, le montant total qu’il a payé pour ces bouteilles (en euro), la quantité de bouteilles 150cl qu’il a acheté et encore le montant total qu’il a payé pour ces dernières (toujours en euro). Il faut savoir qu’une seule bouteille de 75cl vendue par ce caviste coûte 15€ alors qu’une bouteille de 150cl coûte 30€. Cela dit, nous pouvons facilement vérifier s’il y a eu une erreur dans le rapport du montant total que chaque client a payé lorsqu’il a acheté des bouteilles. En effet, les variables «Tot_75cl» et «Tot_150cl» dépendent respectivement de «Bouteilles_75cl» et «Bouteilles_150cl».

On découvre alors que pour le client «984» il y a eu une erreur dans la déclaration de son montant total payé pour les bouteilles de 75cl. En divisant le montant total payé (soit 350€) par le nombre de bouteilles 75cl achetées (soit 24), on voit que le client «984» a payé 14,583 € la bouteille 75cl au lieu de 15€ : il semble donc très probable qu’il y ait eu une erreur lors de l’enregistrement du montant total payé.

 

0 / 5 5
ACHETER LE LIVRE
Cart Overview