Vous êtes sur la page 1sur 99

1 Ingénierie des données : Chapitre III

Chapitre III :

Qualité des données

Riadh ABDELFATTAH
École supérieure des Communications
riadh.abdelfattah@supcom.tn

École Supérieure des Communications R. Abdelfattah


2 Ingénierie des données : Chapitre III

Plan
1. Introduction : Importance de nettoyage des données

2. Prétraitements des données (en double, incohérentes,


aberrantes,…)

3. Echantillonnage et discrétisation

4. Intégration et agrégation

École Supérieure des Communications R. Abdelfattah


3 Ingénierie des données : Chapitre III

1. Introduction
Données non qualitatives ?
 Données incomplètes, (ex. le numéro de téléphone de la filiale étrangère d’un client
auquel il manque l’indicatif du pays),
 Données inutiles, (ex. l’ancienne adresse email d’un prospect, demeurée dans le fichier
aux cotés de l’actuelle),
 Données doublons, (base renseignée via divers canaux),
 Données exactes dans l’absolu, mais incohérentes du point de vue de leur exploitation
commerciale (ex. le numéro de téléphone du siège social d’une société, relié à l’adresse
postale de l’une des ses filiales),
 Données brutes exactes mais présentées incorrectement par rapport aux normes de la
database (ex. le nom de famille placé avant le prénom ; le genre féminin apparaissant sous
la forme « F » alors que le standard retenu est « Mme »).
 Données mal retranscrites du fait d’incompatibilités informatiques (ex le plus courant :
les lettres avec accents remplacées par des caractères abscons).

École Supérieure des Communications R. Abdelfattah


4 Ingénierie des données : Chapitre III

1. Introduction
 Les outils d’enseignements des compétences appliquées en sciences de
données
• Python,
• Les langages d'analyse statistique spécialisés comme R,
• Les langages de programmation plus généraux comme Java et C.

 Pourquoi Python ?
• facile à apprendre.
• le langage de choix pour initier les étudiants universitaires à la
programmation.
• Il est utilisé dans huit des 10 meilleurs programmes d'informatique des
États-Unis (CACM) et 6/10 dans le monde !

École Supérieure des Communications R. Abdelfattah


5 Ingénierie des données : Chapitre III

1. Introduction
 Pourquoi Python ?
• facile à apprendre :

 Couvre tous les aspects relatives aux données : un langage de


programmation très général avec beaucoup de bibliothèques
intégrées et bien adapté pour la manipulation des données, la
programmation réseau et les bases de données.

 Dispose d'un ensemble important de bibliothèques de science des


données que l'on peut utiliser : la base de ceux-ci est appelée
l'écosystème SCIPy,

École Supérieure des Communications R. Abdelfattah


6 Ingénierie des données : Chapitre III

1. Introduction
Manipulation des données
Bibliothèque Pandas sous Python
 Objectifs
 Comment acquérir des données,

 Comment nettoyer des données,

 Comment manipuler et assembler des données ensemble,

 Comment faire des inférences de base sur ces données.


École Supérieure des Communications R. Abdelfattah
7 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
 Typage dynamique : pas nécessaire de déclarer les variables avant de
pouvoir leur affecter une valeur
str (chaîne de
float (flottant) bool (booléen)
int (entier) caractères)

École Supérieure des Communications R. Abdelfattah


8 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
 Typage dynamique : pas nécessaire de déclarer les variables avant de
pouvoir leur affecter une valeur
list (liste)

complex (complexe)

École Supérieure des Communications R. Abdelfattah


9 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
 Typage dynamique : pas nécessaire de déclarer les variables avant de
pouvoir leur affecter une valeur
None (type de donnée objet)

École Supérieure des Communications R. Abdelfattah


10 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
 Séquences : En Python, les séquences sont un terme générique pour un
ensemble ordonné, ce qui signifie que l'ordre dans lequel nous saisissons
les éléments sera le même lorsque nous y accéderons.

 Python prend en charge six types de séquences différents. Ce sont des :


1. Chaînes (strings),
2. Listes (lists),
3. Tuples (tuples),
4. Séquences d'octets (byte sequences),
5. Tableaux d'octets (byte arrays)
6. Objets de plage (range objects).

École Supérieure des Communications R. Abdelfattah


11 Ingénierie des données : Chapitre III

2. Prétraitement des données


2.1 Principaux types de données
1. Chaînes (strings) : Une chaîne est un groupe des caractères écrits entre
guillemets simples ou doubles. Les chaînes sont de nature immuable, nous
pouvons donc réaffecter une variable à une nouvelle chaîne, mais nous ne
pouvons apporter aucune modification à la chaîne.

École Supérieure des Communications R. Abdelfattah


12 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
2. Listes (lists) : Les listes Python sont similaires à un tableau mais elles nous
permettent de créer une collection hétérogène d'éléments à l'intérieur d'une liste. Une liste
peut contenir des nombres, des chaînes, des listes, des tuples, des dictionnaires, des objets,
etc. Les listes sont déclarées en utilisant des crochets [ ] autour des éléments séparés par
des virgules. Elles sont mutables de sorte que vous pouvez changer leur longueur, le
nombre d'éléments et les valeurs d'élément.

École Supérieure des Communications R. Abdelfattah


13 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
2. Listes (lists) :
Remarque : Les chaînes ne sont que des listes de caractères. Ainsi, les opérations que vous
pouvez faire sur une liste, vous pouvez faire sur une chaîne.

École Supérieure des Communications R. Abdelfattah


14 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
3. Tuples ou p-uplet (tuples) : Un tuple est une séquence d'objets Python.
Un tuple est créé en séparant les éléments par une virgule. Ils peuvent être
éventuellement mis entre parenthèses ( ) mais il est nécessaire de mettre des
parenthèses dans un tuple vide. Un tuple d'élément unique doit utiliser une
virgule à la fin.
Les tuples sont également immuables comme les chaînes, nous ne pouvons
donc que réaffecter la variable, mais pas modifier, ajouter ou supprimer des
éléments du tuple.

École Supérieure des Communications R. Abdelfattah


15 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
3. Tuples ou p-uplet (tuples)

 Les listes et les tuples et les chaînes


peuvent également être accessibles,
comme peuvent l’être les tableaux
dans d'autres langages, en utilisant
l'opérateur de crochets [ ], qui est
appelé l'opérateur d'indexation.

École Supérieure des Communications R. Abdelfattah


16 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
3. Tuples ou p-uplet (tuples)
 Remarque 1 : Tout comme les listes et les tuples, les dictionnaires contiennent une
collection d'éléments. Toutefois, cette collection est non structurée et par conséquent
n’ont pas d'ordre. Cela signifie que pour chaque valeur dans le dictionnaire il faudra
une clé pour obtenir cette valeur.

École Supérieure des Communications R. Abdelfattah


17 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
3. Tuples ou p-uplet (tuples)
 Remarque 1 : Exemple d’application sur les dictionnaires :

École Supérieure des Communications R. Abdelfattah


18 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
3. Tuples ou p-uplet (tuples)
 Remarque 2 : En python, on peut déballer (unpacking) une séquence (list ou
tuples) dans différentes variables via l'affectation dans une instruction.
 Par convention, les valeurs inutiles dans un tableau des données peuvent être attribuées à _
(under score) en Python.
 Si le nombre de variables est inférieur au nombre
d'éléments, l'ajout d'un astérisque * au nom de la variable
affectera les éléments ensemble sous forme de liste.

École Supérieure des Communications R. Abdelfattah


19 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
4. Séquences d'octets (byte sequences) : La fonction bytes() en Python
est utilisée pour renvoyer une séquence d'octets immuable.

École Supérieure des Communications R. Abdelfattah


20 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
5. Tableaux d'octets (byte arrays) : Les tableaux d'octets sont similaires
aux séquences d'octets. La seule différence c’est que les tableaux d'octets sont
modifiables tandis que les séquences d'octets sont immuables. Il renvoie
également l'objet bytes de la même manière.

École Supérieure des Communications R. Abdelfattah


21 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.1 Principaux types de données
6. Objets de plage (range objects) : range() est une fonction intégrée à
Python qui renvoie un objet range. L'objet range n'est rien d'autre qu'une
séquence d'entiers. Il génère les entiers dans la plage de démarrage et d'arrêt
spécifiée.

École Supérieure des Communications R. Abdelfattah


22 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.2 Lecture et écriture à partir et dans un fichier CSV
1. Manipulation des fichiers CSV
 Apprendre les bases de l'itération dans un fichier CSV pour
créer des dictionnaires et collecter des statistiques
récapitulatives.

 Le fichier de données mpgCoursera.csv, sujet de notre cours, contient les


données d'économie (consommation) de carburant pour 234 voitures.
• mpg : miles per gallon
• class : car classification
• cty : city mpg
• cyl : # of cylinders
• displ : engine displacement in liters
• drv : f = front-wheel drive, r = rear wheel drive, 4 = 4wd
• fl : fuel (e = ethanol E85, d = diesel, r = regular, p = premium, c = CNG)
• hwy : highway mpg
• manufacturer : automobile manufacturer
• model : model of car
• trans : type of transmission
• year : model year

École Supérieure des Communications R. Abdelfattah


23 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.2 Lecture et écriture à partir et dans un fichier CSV
1. Manipulation des fichiers CSV
mpgCoursera.csv

École Supérieure des Communications R. Abdelfattah


24 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.2 Lecture et écriture à partir et dans un fichier CSV
1. Manipulation des fichiers CSV

École Supérieure des Communications R. Abdelfattah


25 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.2 Lecture et écriture à partir et dans un fichier CSV
1. Manipulation des fichiers CSV
 Exploration des données
 Trouver la consommation moyenne de carburant en ville pour toutes les voitures.
Toutes les valeurs des dictionnaires sont des chaînes, nous devons donc les convertir
en float.

École Supérieure des Communications R. Abdelfattah


26 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.2 Lecture et écriture à partir et dans un fichier CSV
1. Manipulation des fichiers CSV
 Exploration des données
 Utilisez set pour trouver les valeurs uniques du nombre de cylindres des voitures
dans la base de données

 Regrouper à partir de la base de données mpgCoursera les voitures par nombre de


cylindres et calculer le mpg moyen de cty pour chaque groupe. Afficher le résultat sous
forme de tuple : [ (‘4’, …) , (‘5’, …), …]

École Supérieure des Communications R. Abdelfattah


27 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.2 Lecture et écriture à partir et dans un fichier CSV
1. Manipulation des fichiers CSV
 Exploration des données

École Supérieure des Communications R. Abdelfattah


28 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.3 Manipulations sur les données Qualité
Prénom Email Date de Pays Taille
personnes.csv naissance
Leila leila@example.com 23/01/1990 France 1,49 m

Samuel samuel_329@example.com 20/09/2001 1,67 m


?
Radia choupipoune@supermail.eu 12 sept. 1984 Côte d'ivoire 153 cm

Marc marco23@example.com, 10/02/1978 France 1,65 m


mc23@supermail.eu
Heri helloworld@supermail.eu 05/03/2008 Madagascar 1,34 m

Hanna hanna2019@supermail.eu 01/01/1970 24 ?


3,45 m

samuël samuel_329@example.com Bénin 1,45 m


?
École Supérieure des Communications R. Abdelfattah
29 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.3 Manipulations sur les données

 Nettoyage des données

 Intégration des données

 Transformation des données

 Discrétisation des données

 Réduction des données

École Supérieure des Communications R. Abdelfattah


30 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.3 Manipulations sur les données
1. Nettoyage des données

missing completely at random, MCAR


missing at random, MAR
missing not at random, MNAR

École Supérieure des Communications R. Abdelfattah


31 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.3 Manipulations de données
1. Nettoyage des données : Données manquantes

École Supérieure des Communications R. Abdelfattah


32 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.3 Manipulations de données
1. Nettoyage des données : Données bruitées (erronées ou aberrantes)

École Supérieure des Communications R. Abdelfattah


33 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.3 Manipulations de données
1. Nettoyage des données : Données bruitées (erronées ou aberrantes)

École Supérieure des Communications R. Abdelfattah


34 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.3 Manipulations de données
1. Nettoyage des données : Données inconsistantes

École Supérieure des Communications R. Abdelfattah


35 Ingénierie des données : Chapitre III

2. Prétraitements des données


2.3 Manipulations de données
2. Intégration des données :

École Supérieure des Communications R. Abdelfattah


36 Ingénierie des données : Chapitre III

3. Transformation des données :

École Supérieure des Communications R. Abdelfattah


37 Ingénierie des données : Chapitre III

4. Discrétisation des données :

École Supérieure des Communications R. Abdelfattah


38 Ingénierie des données : Chapitre III

5. Réduction des données :

École Supérieure des Communications R. Abdelfattah


39 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas

 Une des bibliothèques Python les plus utilisées pour la Data


Science.

 Développé en 2008 par Wes McKinney

 Open source

 Implémenté à partir de C – d’où sa rapidité

 A introduit les objets DataFrame et Series

 Stack Overflow - Where Developers Learn, Share, & Build Careers

École Supérieure des Communications R. Abdelfattah


40 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


 Stack Overflow est largement utilisé au
sein de la communauté de développement
de logiciels pour publier des questions sur
la programmation, les langages de
programmation et les kits d'outils de
programmation.

 Ce qui est spécial à propos de Stack


Overflow, c'est qu'il est fortement organisé
par la communauté et la communauté des
pandas en particulier l'utilise comme
ressource numéro un pour aider les
nouveaux membres.

 Endroit idéal pour voir quels problèmes les


gens rencontrent et comment ils peuvent
être résolus.
École Supérieure des Communications R. Abdelfattah
41 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas

École Supérieure des Communications R. Abdelfattah


42 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 Cet ensemble de données a été construit dans le but d'aider les étudiants des universités
présélectionnées avec leurs profils. La sortie prévue leur donne une idée juste de leurs
chances pour une université particulière.

 Le fichier de données Admission_Predict.csv contient les données des candidats d'un


programme universitaire. Chaque application a un numéro de série unique, qui représente
un étudiant en particulier. L'ensemble de données contient plusieurs paramètres qui sont
considérés comme importants lors de la candidature aux programmes de maîtrise. Les
paramètres inclus sont :
1) Scores GRE (sur 340)
2) Scores TOEFL (sur 120)
3) Note universitaire (sur 5)
4) Déclaration d'intention (Statement of Purpose: SOP) (sur 5)
5) Lettre de recommandation (Letter of Recommendation LOR) Force (sur 5)
6) GPA de premier cycle (sur 10)
7) Expérience en recherche (soit 0 ou 1)
8) Chance d'admission (allant de 0 à 1)

École Supérieure des Communications R. Abdelfattah


43 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame

Admission_Predict.csv

École Supérieure des Communications R. Abdelfattah


44 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame

École Supérieure des Communications R. Abdelfattah


45 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame

École Supérieure des Communications R. Abdelfattah


46 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame

École Supérieure des Communications R. Abdelfattah


47 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame

École Supérieure des Communications R. Abdelfattah


48 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame

 supprimer tous les espaces à droite et à gauche d’une chaîne en


utilisant la commande rename() avec le paramètre strip

École Supérieure des Communications R. Abdelfattah


49 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame

 Extraire dans une liste les noms des colonnes à partir de df0, et
les formater en minuscules :

École Supérieure des Communications R. Abdelfattah


50 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 En utilisant la commante set_index(), transformer l’index
de df en Serial No. :

École Supérieure des Communications R. Abdelfattah


51 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 Nettoyer l’ensemble des colonnes mal nommée, et formatter les noms de
colonnes en minuscules en transformant directement df.columns ?

École Supérieure des Communications R. Abdelfattah


52 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 Déterminer l’ensemble des  Lister l’ensemble des attributs des
étudiants (Serial No) admissibles étudiants admissible avec une chance
avec une chance supérieure à 0.7 ? supérieure à 0.7 ? (commande where)

 Supprimer les lignes avec des


données NaN ? (commande dropna)

École Supérieure des Communications R. Abdelfattah


53 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 Méthode directe pour le nettoyage
de NaN :
 Déterminer l’ensemble des étudiants
(Serial No) admissibles avec une
chance supérieure à 0.7 et inférieure à
0.9 ?

École Supérieure des Communications R. Abdelfattah


54 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 Extraire un tableau comprenant
 Importer le fichier census.csv ? les attributs liés à la population
Afficher la dynamique de la variable SUMLEV ? totale et au nombre des nouveaux
nés suivants à partir du dataframe
census ?
'STNAME', 'CTYNAME',
'BIRTHS2010', 'BIRTHS2011',
'BIRTHS2012', 'BIRTHS2013',
'BIRTHS2014', 'BIRTHS2015',
'POPESTIMATE2010',
'POPESTIMATE2011',
'POPESTIMATE2012',
'POPESTIMATE2013',
'POPESTIMATE2014',
'POPESTIMATE2015

École Supérieure des Communications R. Abdelfattah


55 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 Importer le fichier census.csv ?
Afficher la dynamique de la variable SUMLEV ?

École Supérieure des Communications R. Abdelfattah


56 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 Afficher les données relative à la région de
Washtenaw (état de Michigan)?

École Supérieure des Communications R. Abdelfattah


57 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


1. DataFrame
 Nettoyer l’ensemble des colonnes mal nommée, et transformer les noms en
miniscules , dans le dataframe df ?

École Supérieure des Communications R. Abdelfattah


58 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
 Sous Pandas, les données manquantes sont formatées : NULL, NaN, None, N/A

1. Les données manquantes d’une variable X sont dites manquantes de façon


complètement aléatoire (MCAR) si la probabilité que la valeur de X soit manquante ne
dépend ni de la valeur de X (qui n’est pas observée), ni des valeurs des autres variables.
(Exp. un questionnaire peut être perdu dans le courrier, ou un échantillon de sang peut
être endommagé dans le laboratoire)

2. Les données manquantes de X sont dites données manquantes de façon


aléatoire (MAR) si la probabilité que la valeur de X soit manquante ne dépend pas de la
valeur de X (qui n’est pas observée) une fois qu’on a contrôlé pour les autres variables
(Exp. la note d’un candidat à un examen de rattrapage sera manquante si le candidat a
obtenu une note de passage (connue) à l’examen principal).

3. Les données manquantes de X sont dites manquantes de façon non-aléatoire (MNAR) si


la probabilité que la valeur de X soit manquante dépend de la valeur de X elle-
même(Exp. les gens qui ont un revenu élevé pourraient avoir plus de réticences à
répondre à une question sur leur revenu).

École Supérieure des Communications R. Abdelfattah


59 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes

 Afficher les infos de base, spécialement pour vérifier


s'il y a des valeurs manquantes dans les données

Ainsi, toutes les caractéristiques sont


des nombres et aucune valeur manquante
(puisqu'il y a 400 entrées pour chaque
colonne).

École Supérieure des Communications R. Abdelfattah


60 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
 Afficher les infos de base, spécialement pour vérifier
s'il y a des valeurs manquantes dans les données

École Supérieure des Communications R. Abdelfattah


61 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes

 suppression d’individus ou
de variables,

 correction manuelle,

 imputation par prédiction,

Répartition des données manquantes, (A) univariée, (B) monotone et (C) sans structure
(arbitraire). Les zones grisées indiquent la position des données manquantes.

École Supérieure des Communications R. Abdelfattah


62 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes

 Nous allons nettoyer le jeu de données personnes.csv :

École Supérieure des Communications R. Abdelfattah


63 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
 Nous allons nettoyer le jeu de données class_grades.csv :
1. Importer dans un dataframe df les données depuis le fichiers
des données class_grades.csv ?
2. Créer un masque booléen, à partir du df précédent à l’aide de
la commande isnull(), repérant les emplacement des
données manquantes ?

École Supérieure des Communications R. Abdelfattah


64 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
1. Supprimer les individus qui comportent des données manquantes
 Nous allons nettoyer le jeu de données class_grades.csv :
1. Importer dans un dataframe df les données depuis le
fichiers des données class_grades.csv ?
2. Créer un masque booleén ,à partir du précédent df à l’aide
de la commande isnull() , repérant les emplacement
des données manquantes ?
3. Supprimer les lignes des données manquantes
4. Afficher le nombre de valeurs manquantes pour chaque
attributs?

École Supérieure des Communications R. Abdelfattah


65 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
2. Imputation par une valeur simple (fixe, unique)
 Nous allons remplacer les données manquantes (Imputer) par :
1. des zéros fillna():
2. la valeur moyenne fillna() dans Assignement:
3. la valeur médiane fillna() dans Tutorial :
4. la valeur la plus fréquente, mode() :

École Supérieure des Communications R. Abdelfattah


66 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
2. Imputation par une valeur simple (fixe, unique)
Nous allons remplacer les données manquantes
(Imputer) à partir de la valeur précédente ou la valeur
suivante valides.

Ceci pourrait être utile dans l’exploration d’un fichier


log sur les données relative à la consultation d’une
vidéo dans un MOOC. Dans ce système, le lecteur a
une option, où les statistiques de lecture sont
envoyées au serveur chaque 30 secondes : il s’agit des
infos suivants : le lien vers la vidéo consultée (video),
l'endroit où se trouve la tête de lecture vidéo (playback
position), la vidéo est rendue ou non à l'écran
(paused). A quel niveau le volume est (volume) …
1. Les données relatives aux variables paused
et volume sont particulièrement manquante ?
2. Les données ne sont pas triée selon
horodatage (time) !

École Supérieure des Communications R. Abdelfattah


67 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
2. Imputation par une valeur simple (fixe, unique)
1. Charger le dataframe à partir du fichier
log.csv
2. Remettre time comme index du tableau de
données set_index() et ensuite trier les
données sort_index()

École Supérieure des Communications R. Abdelfattah


68 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
2. Imputation par une valeur simple (fixe, unique)
1. Charger le dataframe à partir du fichier
log.csv
2. Remettre time comme index du tableau de
données set_index() et ensuite trier les
données sort_index()
3. Vérifier bien que l’index choisi dans ce cas
n’est pas unique ? En effet deux utilisateurs
peuvent utiliser la plateforme MOOC au
même temps !

École Supérieure des Communications R. Abdelfattah


69 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
2. Imputation par une valeur simple (fixe, unique)
1. Charger le dataframe à partir du fichier
log.csv
2. Remettre time comme index du tableau de
données set_index() et ensuite trier les
données sort_index()
3. Vérifier bien que l’index choisi dans ce cas
n’est pas unique ? En effet deux utilisateurs
peuvent utiliser la plateforme MOOC au
même temps !
4. Appliquer un reset à l’index précedent
reset_index()
5. Appliquer un multi-indexage pour le tableau
précédent en considérant les deux index
time et user

École Supérieure des Communications R. Abdelfattah


70 Ingénierie des données : Chapitre III

2. Nettoyage des données : Données manquantes


2. Imputation par une valeur simple (fixe, unique)
1. Charger le dataframe à partir du fichier
log.csv
2. Remettre time comme index du tableau de
données set_index() et ensuite trier les
données sort_index()
3. Vérifier bien que l’index choisi dans ce cas
n’est pas unique ? En effet deux utilisateurs
peuvent utiliser la plateforme MOOC au
même temps !
4. Appliquer un reset à l’index précedent
reset_index()
5. Appliquer un multi-indexage pour le tableau
précédent en considérant les deux index
time et user
6. Appliquer fillna() à volume pour remplir
les champs manquants (NaN) par la
méthode forward
7. Appliquer fillna() à paused pour remplir
les champs manquants (NaN) par la
méthode backward
École Supérieure des Communications R. Abdelfattah
71 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
3. Imputation par une valeur multiple
 Imputation à partir du centre du groupe
1. Un algorithme de classification automatique,
par ex. k-moyennes, est appliqué aux Observations
observations complètes (sans données
manquantes).

2. Pour chaque observation à données


manquantes, il faut ensuite : Résultat de classification
a. calculer la distance au centre de chaque
groupe en tenant compte uniquement
des valeurs des variables renseignées
pour cette observation,
b. déterminer le centre le plus proche de Détermination du
l’observation, centre le plus
c. donner à chaque variable non proche
renseignée la valeur de la même
variable pour le centre de groupe trouvé Imputation à partir
comme étant le plus proche. du centre de groupe

École Supérieure des Communications R. Abdelfattah


72 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données manquantes
3. Imputation par une valeur multiple
 Imputation par les k plus proches voisins,
 Pour chaque observation à données
manquantes :
• Trouver ses k plus proches voisins Observations
(observations complètes) en tenant
compte, dans les calculs de distances,
uniquement des valeurs des variables
renseignées pour cette observation,

• Donner comme valeur, à chaque


variable non renseignée, la moyenne
Détermination des k plus
des valeurs que prend la même
proches voisins
variable pour ces k voisins.

Imputation à partir des k


plus proches voisins

École Supérieure des Communications R. Abdelfattah


73 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données bruitées
 Un outlier peut être :
1. une valeur aberrante : c'est une
 Un diagramme en boîte (boîte à
valeur qui est manifestement fausse moustaches ou boite de Tukey) met
en évidence cinq des paramètres
2. une valeur atypique : c'est une d'une série statistique :
valeur qui "sort du lot", mais pas a. le minimum (min),
forcément fausse. b. le premier quartile (Q1, la
médiane des
 Un outlier peut être détecté par le valeurs strictement
inférieures à la médiane de la
diagramme à moustache (boxplot)
série),
c. la médiane,
d. le troisième quartile (Q3 la
médiane des
valeurs strictement
supérieures à la médiane de la
série),
e. le maximum (max).

École Supérieure des Communications R. Abdelfattah


74 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données bruitées

 Exp : 25, 28, 29, 29, 30, 34, 35, 35, 37, 38

a. min = 25
b. Q1, = médiane(25,28,29,29,30)=29
c. la médiane = (30+34)/2=32,
d. Q3, = médiane(34,35,35,37,38)=35
e. max = 38.

École Supérieure des Communications R. Abdelfattah


75 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données bruitées

 Détection des données aberrantes (outliers)

Upper inner fence

Lower inner fence

• Données aberrantes (faibles ou élevées) Distributions des Données à partir de la comparaison


IQR : Inter Quartile (Q3, - Q1) de la boîte à moustaches et l'histogramme

École Supérieure des Communications R. Abdelfattah


76 Ingénierie des données : Chapitre III

3. Prétraitements des données sous Pandas


2. Nettoyage des données : Données bruitées
 Détection des données aberrantes (outliers)
Soit la série des notes obtenues au
dernier contrôle de mathématiques
d'une classe de 19 élèves :
5, 7, 10, 15, 19, 21, 21, 22, 22, 23, 23, 23
, 23, 23, 24, 24, 24, 24, 25, 242424, 2525
a. min = 5
b. Q1, = 19
c. la médiane = 23,
d. Q3, = 24
e. max = 25
f. IQR = 5

Données aberrantes (faibles)

École Supérieure des Communications R. Abdelfattah


77 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données

qui sont également du


tous les étudiants

personnel

La population des étudiants La population du personnel


dans une université dans une université

École Supérieure des Communications R. Abdelfattah


78 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())

École Supérieure des Communications R. Abdelfattah


79 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
1. Créer les deux datafarame suivants : df_staff
et df_students, avec les index précisés sur la
figure (Name) :

École Supérieure des Communications R. Abdelfattah


80 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
2. Intégrer (Fusionner, union) les deux tableaux staff et students en
utilisant la commande merge() et en considérant les index gauche
et droit comme colonnes d’unions.

3. Déterminer à partir de deux tableaux des données les étudiants qui


sont parmi le personnel de l’université !

École Supérieure des Communications R. Abdelfattah


81 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
4. Déterminer le tableau des données fusionnées listant tous les
employés, qu’ils soient étudiants ou non, avec les détails que leurs
sont relatifs.
5. Déterminer le tableau des données fusionnées listant tous les étudiants
et leurs rôles s'ils sont aussi employés !

École Supérieure des Communications R. Abdelfattah


82 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
4. Déterminer le tableau des données fusionnées listant tous les
employés, qu’ils soient étudiants ou non, avec les détails que leurs
sont relatifs.
5. Déterminer le tableau des données fusionnées listant tous les étudiants
et leurs rôles s'ils sont aussi employés !

École Supérieure des Communications R. Abdelfattah


83 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
6. Appliquer un reset de l’index actuel des deux dataframes staff et
students et appliquer ensuite la fusion selon le paramètre on
(left_on, right_on) de merge() (pareillement que la Q4.).

École Supérieure des Communications R. Abdelfattah


84 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
7. Rajouter un attribut Location au dataframe staff
8. Rajouter un attribut Location au dataframe student

École Supérieure des Communications R. Abdelfattah


85 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
9. Appliquer la fusion de deux dataframes staff et students selon le
paramètre afin de lister tous les employés, qu’ils soient étudiants ou
non, avec les détails que leurs sont relatifs.

À partir de la sortie, nous pouvons voir qu'il y a des colonnes Location_x et


Location_y. Location_x fait référence à la colonne location dans le dataframe de gauche, qui est
le dataframe de staff et Location_y fait référence à la colonne dans le dataframe de droite qui est
le dataframe de student.

École Supérieure des Communications R. Abdelfattah


86 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
10. Fusion avec multi-indexage : Si on opère une intersection selon l’index Name et qu’on a une
confusion des noms, il faudra prévoir un deuxième attribut pour l’indexage du paramètre on dans
merge().

École Supérieure des Communications R. Abdelfattah


87 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
a. Intégration horizontale des DataFrame (merge())
10. Fusion avec multi-indexage : Si on opère une intersection selon l’index Name et qu’on a une
confusion des noms, il faudra prévoir un deuxième attribut pour l’indexage du paramètre on dans
merge().

École Supérieure des Communications R. Abdelfattah


88 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
b. Intégration verticale des DataFrame (concat())

École Supérieure des Communications R. Abdelfattah


89 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


3. Intégration des données
b. Intégration verticale des DataFrame (concat())

École Supérieure des Communications R. Abdelfattah


90 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


4. Transformation des données ; Feature scaling
a. Normalisation
 La normalisation peut- être effectuée par la technique du Min-Max
Scaling. La transformation se fait grâce à la formule suivante :

 Xmin : la plus petite valeur observée pour la feature X


 Xmax : la plus grande valeur observée pour la feature X
 X : La valeur de la feature qu’on cherche à normaliser

École Supérieure des Communications R. Abdelfattah


91 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


4. Transformation des données ; Feature scaling
b. Standardisation
 La standardisation (aussi appelée Z-Score normalisation) peut- être
appliquée quand les input features répondent à des distributions
normales (Distributions Gaussiennes) avec des moyennes et des écart-
types différents.

 x : la valeur qu’on veut standardiser (input variable)


 µ : la moyenne (mean) des observations pour cette feature
 : est l’ecart-type (Standard Deviation) des observations pour cette feature

École Supérieure des Communications R. Abdelfattah


92 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


4. Transformation des données ; Feature scaling
c. Application

École Supérieure des Communications R. Abdelfattah


93 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


5. Discrétisation des données

École Supérieure des Communications R. Abdelfattah


94 Ingénierie des données : Chapitre III

2.4 Manipulations de données sous Pandas


5. Discrétisation des données

 Exprimer (carto-)graphiquement une information implique souvent sa


simplification. Ainsi en découpant en classes une série de données, la
discrétisation réduit une variable quantitative en variable ordonnée.

 La réduction statistique, appelée discrétisation, doit conserver au mieux


l’information tout en la simplifiant.

 Le choix d’une méthode de discrétisation et du nombre de classes est


guidé par différentes contraintes

École Supérieure des Communications R. Abdelfattah


95 Ingénierie des données

5. Quiz chapitre 3

1. Les données ouvertes brutes, ou ‘non nettoyées’, posent un problème parce


qu’elles ... :

o ne peuvent pas être reportées sur un graphique

o peuvent donner lieu à des conclusions erronées


o ne peuvent pas être publiées

https://data.europa.eu/elearning

École Supérieure des Communications R. Abdelfattah


96 Ingénierie des données

5. Quiz chapitre 3

2. Quels sont les deux outils les plus utiles pour nettoyer l’open data ?

o Microsoft Excel et Open Refine


o Apple Notes et Microsoft Word
o Microsoft Access et Adobe Photoshop.

https://data.europa.eu/elearning

École Supérieure des Communications R. Abdelfattah


97 Ingénierie des données

5. Quiz chapitre 3

3. Lesquels des points suivants sont des erreurs des données qu’il faut nettoyer ?

o Des données redondantes

o Aucune licence
o Une manque de granularité
o Des échelles numériques mixtes
o Des représentations multiples
odata.
https://data.europa.eu/elearning

École Supérieure des Communications R. Abdelfattah


98 Ingénierie des données

5. Quiz chapitre 3

4. Combien de temps devrait-on consacrer au nettoyage et à la préparation des


données pour tout projet centré sur des données ?

o Entre 40% et 60%


o Entre 60% et 80%
o Entre 20% et 40%
https://data.europa.eu/elearning

École Supérieure des Communications R. Abdelfattah


99 Ingénierie des données

5. Quiz chapitre 2

5. A researcher doing a blind experiment got the respondent data coded with
numbers in a column named “Respondent_ID”. What data type is it?

o Ordinal
o Continuous
o Interval
o Nominal
https://data.europa.eu/elearning

École Supérieure des Communications R. Abdelfattah

Vous aimerez peut-être aussi