Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

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.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *