Vous êtes sur la page 1sur 4

Machine learning TP Preprocessing 2022/2023

Traitement des valeurs


manquantes et des aberrantes

Après la phase d’acquisition des données il faut procéder tout d’abord à l’exploration des
données. Cette phase permettra de découvrir plusieurs aspects du dataset source. Ce qui mène
vers le besoin du nettoyage des données, leurs transformations et en fin la normalisation de
certaines données.
Nous allons nous concentrer dans cette activité sur le traitement des valeurs manquantes et les
outliers.
Tout au long de ce cette activité, nous allons travailler sur le dataset titanic.

1. Avant de commencer :
1.1 Préciser le dossier par défaut pour les datasets
Il convient de modifier le dossier par défaut et mettre celui ou vous avez déposé vos datasets
avant de charger les jeux de données dans la dataframe. Pour ce faire :

Remarque : Le nom du répertoire peut être défini avec le slash / ou avec l'antislash \ mais dans
deuxième cas il faut alors le doubler.

1.2 Chargement de données partir de différents types de fichiers :


Selon le type de fichier on fait appel à l’instruction de lecture du fichier : comme illustré dans
le tableau suivant.

Type de fichier Commande


Fichier plat read_table, read_csv
Fichier excel read_excel
JSON read_json, Json_normalize
SQL read_sql_table, read_sql_query, read_sql
HTML read_html
2. Exploration des données
2.1 Affichage des données du dataset
import pandas as pd
• Charger le dataset : df_data = pd.read_excel('titanic3.xls', header=0)

Pr. N. Daoudi 1/4 Machine learning


Machine learning TP Preprocessing 2022/2023

• Afficher les données du dataset Titanic


• Afficher des informations sur les variables
• Afficher des caractéristiques / variables
• Dimension de du dataset
• Sélection des lignes et des colonnes
• Description statistique de la dataset.
2.2 Visualisation des données
• Charger la bibliothèque de visualisation Matplotlib
• Visualiser les données numériques grâce à des histogrammes
• Visualiser les données catégorielles grâce des diagrammes à barres simples et
regroupées et des diagrammes en pie.
3. Data cleaning : Traitement des valeurs manquantes
3.1 Détection des valeurs manquantes
Afin de vérifier si une valeur est NaN, les fonctions isnull() ou notnull() peuvent être utilisées :
• data.isnull() # si la valeur est NaN, la fonction retourne True.
• data.notnull() # si la valeur est différente de NaN, la fonction retourne True

• Détecter les valeurs manquantes dans le dataset Titanic avec isna et isnull
• Détecter les valeurs manquantes dans le dataset Titanic avec notnull
• Compter les valeurs manquantes par variable
3.2 Traitement des valeurs manquantes
3.2.1 Remplacer les valeurs manquantes de manière simple

Fillna permet de :
• Remplacer les valeurs manquantes avec une seule valeur :
▪ On utilise le paramètre inplace pour avoir les modifications dans le DataFrame d'origine :
(data.fillna(0, inplace=True) ).

▪ Pour remplace la valeur manquante d’une variable A par une valeur X par exemple :
data["A"].fillna("X", inplace = True)

• Remplacer les valeurs manquantes avec les valeurs précédentes ou par celles qui suivent. Ces
méthodes sont importantes dans le cas de données temporelles ou de données continues.
• data.fillna(method='pad') / pad et ffill sont équivalentes
• data.fillna(method='bfill') / bfill et backfill sont équivalentes

• Créer une copie de la dataframe pour répondre à cette question


• Remplacer les valeurs manquantes dans la colonne body par la méthode de
propagation avant. Et remplacer la colonne cabin la méthode de propagation
arrière.

Pr. N. Daoudi 2/4 Machine learning


Machine learning TP Preprocessing 2022/2023

3.2.2 Traitement des valeurs manquantes par imputation statistique :


Nous allons utiliser sklearn. impute : SimpleImputer, KNNImputer

• Créer une copie de la dataframe d’origine pour répondre à cette question


• Utiliser SimpleiImuter avec comme strategy meadian ou mean pour remplacer les
valeurs manquantes des variables numériques : age, fare, etc.
• Utiliser SimpleiImuter avec comme strategy most_frequent remplacer les valeurs
manquantes des variables catégorielles : sexe, embarcked.
• Tester KNNImputer.

3.2.3 Supprimer les valeurs manquantes des linges (axis=0) / des colonnes (axis=1)

dropna() permet de supprimer des lignes si au moins une colonne a une valeur manquante :
DataFrame.dropna(axis, how, inplace)
• how : Ce paramètre détermine comment la fonction supprime les lignes ou les colonnes. Il
n’accepte que deux string, any ou all. Par défaut, il est défini sur any :
o any supprime la ligne ou la colonne s’il contient une valeur nulle. Si nous voulons
supprimer les colonnes qui contiennent au moins une valeur manquante :
▪ data.dropna( how='any')
o all supprime la ligne ou la colonne si toutes les valeurs manquent.
▪ data.dropna(how='all').
• Inplace : On utilise le paramètre inplace pour avoir les modification dans le DataFrame
d'origine : data.dropna(inplace=True) .
• Axis : Si nous voulons supprimer les colonnes au lieu des lignes, il suffit de préciser axis=1 :
data.dropna(axis=1)

Pr. N. Daoudi 3/4 Machine learning


Machine learning TP Preprocessing 2022/2023

• Créer une copie du dataframe d’origine pour répondre à cette question


• Supprimer les lignes si toutes leurs valeurs sont manquantes.
• Supprimer une ligne si elle a 25 valeurs qui sont non nulles (thresh=25) / si elle a
plus de 25 valeurs nulles elle ne sera pas supprimée/ le nombre minimum de non-
NAN
▪ df_data.dropna(thresh=25, inplace=True)
• Supprimer les lignes qui ont des valeurs manquantes pour une variables
particulière ici 'home.dest' puis embarked :
▪ df_data.dropna(subset=['home.dest'], inplace=True)
• Supprimer les lignes où toutes les valeurs sont manquantes :
▪ df_data.dropna(how='all', inplace=True)
4. Data cleaning : Traitement des valeurs aberrantes
4.1 Détection des valeurs aberrantes
La détection des valeurs aberrantes d’une variables peut se faire principalement de manière
visuelle grâce à la boite à moustache.

• Afficher la boite à moustache pour la variable age :


▪ plt.figure(figsize=(10, 6))
▪ plt.boxplot(data_titanic2['age'],sym='g+',vert=1)
▪ le symbole ici ‘+’ présente les valeurs aberrantes : < Q1-1.5 (Q3-
Q1) et > Q3+ 1.5 (Q3-Q1)
• Calculer Q1 et Q3 :
▪ Q1 = np.percentile(data_titanic2['age'], 25)
▪ Q3 = np.percentile(data_titanic2['age'], 75)
• Récupérer les valeurs aberrantes dans un dataframe
4.2 Traitement des valeurs aberrantes
4.2.1 Remplacer les valeurs aberrantes pour les deux extrémités

• Utiliser un dataframe du dataset dans laquelle les valeurs manquantes ont été
déjà traitées.
• Calculer les deux extrémités pour la variable âge.
• Remplacer les valeurs aberrantes avec ces deux extrémités.
4.2.2 Supprimer les valeurs aberrantes

• Utiliser une dataframe du dataset dans laquelle les valeurs manquantes ont été
déjà traitées.
• Supprimer les valeurs aberrantes.

Pr. N. Daoudi 4/4 Machine learning

Vous aimerez peut-être aussi