Comment supprimer les valeurs aberrantes en Python
Une valeur aberrante est une observation anormalement éloignée des autres valeurs d’un ensemble de données. Les valeurs aberrantes peuvent poser problème car elles peuvent affecter les résultats d’une analyse.
Ce didacticiel explique comment identifier et supprimer les valeurs aberrantes en Python.
Comment identifier les valeurs aberrantes en Python
Avant de pouvoir supprimer les valeurs aberrantes, vous devez d’abord décider de ce que vous considérez comme une valeur aberrante. Il existe deux manières courantes de procéder :
1. Utilisez l’intervalle interquartile.
L’intervalle interquartile (IQR) est la différence entre le 75e centile (Q3) et le 25e centile (Q1) dans un ensemble de données. Il mesure la répartition des 50 % moyens des valeurs.
Vous pouvez définir une observation comme étant aberrante si elle est 1,5 fois l’intervalle interquartile supérieur au troisième quartile (Q3) ou 1,5 fois l’intervalle interquartile inférieur au premier quartile (Q1).
Valeurs aberrantes = Observations > Q3 + 1,5*IQR ou Q1 – 1,5*IQR
2. Utilisez les scores z.
Un score z vous indique le nombre d’écarts types d’une valeur donnée par rapport à la moyenne. Nous utilisons la formule suivante pour calculer un z-score :
z = (X – μ) / σ
où:
- X est une valeur de données brutes unique
- μ est la moyenne de la population
- σ est l’écart type de la population
Vous pouvez définir une observation comme étant aberrante si son score z est inférieur à -3 ou supérieur à 3.
Valeurs aberrantes = Observations avec des scores z > 3 ou < -3
Comment supprimer les valeurs aberrantes en Python
Une fois que vous avez décidé de ce que vous considérez comme une valeur aberrante, vous pouvez ensuite les identifier et les supprimer d’un ensemble de données. Pour illustrer comment procéder, nous utiliserons le DataFrame pandas suivant :
import numpy as np import pandas as pd import scipy.stats as stats #create dataframe with three columns 'A', 'B', 'C' np.random.seed(10) data = pd.DataFrame(np.random.randint(0, 10, size=(100, 3)), columns=['A', 'B', 'C']) #view first 10 rows data[:10] A B C 0 13.315865 7.152790 -15.454003 1 -0.083838 6.213360 -7.200856 2 2.655116 1.085485 0.042914 3 -1.746002 4.330262 12.030374 4 -9.650657 10.282741 2.286301 5 4.451376 -11.366022 1.351369 6 14.845370 -10.798049 -19.777283 7 -17.433723 2.660702 23.849673 8 11.236913 16.726222 0.991492 9 13.979964 -2.712480 6.132042
Nous pouvons ensuite définir et supprimer les valeurs aberrantes à l’aide de la méthode du z-score ou de la méthode de l’intervalle interquartile :
Méthode du score Z :
#find absolute value of z-score for each observation z = np.abs(stats.zscore(data)) #only keep rows in dataframe with all z-scores less than absolute value of 3 data_clean = data[(z<3).all(axis=1)] #find how many rows are left in the dataframe data_clean.shape (99,3)
Méthode de l’intervalle interquartile :
#find Q1, Q3, and interquartile range for each column Q1 = data.quantile(q=.25) Q3 = data.quantile(q=.75) IQR = data.apply(stats.iqr) #only keep rows in dataframe that have values within 1.5*IQR of Q1 and Q3 data_clean = data[~((data < (Q1-1.5*IQR)) | (data > (Q3+1.5*IQR))).any(axis=1)] #find how many rows are left in the dataframe data_clean.shape (89,3)
Nous pouvons voir que la méthode du score z a identifié et supprimé une observation comme valeur aberrante, tandis que la méthode de l’intervalle interquartile a identifié et supprimé 11 observations au total comme valeurs aberrantes.
Quand supprimer les valeurs aberrantes
Si une ou plusieurs valeurs aberrantes sont présentes dans vos données, vous devez d’abord vous assurer qu’elles ne résultent pas d’une erreur de saisie de données. Parfois, un individu saisit simplement une mauvaise valeur de données lors de l’enregistrement des données.
Si la valeur aberrante s’avère être le résultat d’une erreur de saisie de données, vous pouvez décider de lui attribuer une nouvelle valeur telle que la moyenne ou la médiane de l’ensemble de données.
Si la valeur est réellement aberrante, vous pouvez choisir de la supprimer si elle aura un impact significatif sur votre analyse globale. Assurez-vous simplement de mentionner dans votre rapport ou analyse final que vous avez supprimé une valeur aberrante.
Ressources additionnelles
Si vous travaillez avec plusieurs variables à la fois, vous souhaiterez peut-être utiliser la distance de Mahalanobis pour détecter les valeurs aberrantes.