Gestion des valeurs aberrantes

Analyse exploratoire de données en Python

George Boorman

Curriculum Manager, DataCamp

Qu'est-ce qu'une valeur aberrante ?

  • Observation très éloignée des autres points
    • Prix médian d'une maison : 400 000 $
    • Valeur aberrante : 5 000 000 $

 

  • Chercher la raison de cet écart :
    • Emplacement, nombre de chambres, superficie, etc.

Grande maison avec piscine

1 Crédit image : https://unsplash.com/@ralphkayden
Analyse exploratoire de données en Python

Utiliser des statistiques descriptives

print(salaries["Salary_USD"].describe())
count       518.000
mean     104905.826
std       62660.107
min        3819.000
25%       61191.000
50%       95483.000
75%      137496.000
max      429675.000
Name: Salary_USD, dtype: float64
Analyse exploratoire de données en Python

Utiliser l'étendue interquartile

Étendue interquartile (IQR)

  • IQR = 75e − 25e centile
Analyse exploratoire de données en Python

IQR dans les boîtes à moustaches

sns.boxplot(data=salaries,
            y="Salary_USD")
plt.show()

Diagramme en boîte des salaires des spécialistes des données : 25e centile au bas de la boîte, 50e au trait du milieu, 75e en haut, valeurs aberrantes en losanges hors de la boîte

Analyse exploratoire de données en Python

Utiliser l'étendue interquartile

Étendue interquartile (IQR)

  • IQR = 75e − 25e centile
  • Valeurs aberrantes hautes > 75e centile + (1,5 × IQR)
  • Valeurs aberrantes basses < 25e centile − (1,5 × IQR)
Analyse exploratoire de données en Python

Repérer les seuils

# 75th percentile
seventy_fifth = salaries["Salary_USD"].quantile(0.75)

# 25th percentile twenty_fifth = salaries["Salary_USD"].quantile(0.25)
# Interquartile range salaries_iqr = seventy_fifth - twenty_fifth
print(salaries_iqr)
76305.0
Analyse exploratoire de données en Python

Repérer les valeurs aberrantes

# Upper threshold
upper = seventy_fifth + (1.5 * salaries_iqr)

# Lower threshold lower = twenty_fifth - (1.5 * salaries_iqr)
print(upper, lower)
251953.5 -53266.5
Analyse exploratoire de données en Python

Sous-ensemble de nos données

salaries[(salaries["Salary_USD"] < lower) | (salaries["Salary_USD"] > upper)] \

[["Experience", "Employee_Location", "Salary_USD"]]
        Experience    Employee_Location    Salary_USD
29      Mid           US                   429675.0
67      Mid           US                   257805.0
80      Senior        US                   263534.0
83      Mid           US                   429675.0
133     Mid           US                   403895.0
410     Executive     US                   309366.0
441     Senior        US                   362837.0
445     Senior        US                   386708.0
454     Senior        US                   254368.0
Analyse exploratoire de données en Python

Pourquoi repérer les valeurs aberrantes ?

  • Les valeurs aberrantes sont des valeurs extrêmes

    • elles peuvent mal représenter nos données
  • Elles peuvent modifier la moyenne et l'écart type

  • Les tests statistiques et les modèles de Machine Learning exigent souvent des données normalement distribuées

Analyse exploratoire de données en Python

Que faire des valeurs aberrantes ?

Questions à poser :

  • Pourquoi ces valeurs aberrantes existent-elles ?
    • Postes plus seniors / certains pays paient davantage
    • Envisager de les garder dans l'ensemble de données

 

  • Les données sont-elles exactes ?
    • Erreur possible à la collecte ?
      • Si oui, les retirer
Analyse exploratoire de données en Python

Retirer les valeurs aberrantes

no_outliers = salaries[(salaries["Salary_USD"] > lower) & (salaries["Salary_USD"] < upper)]
print(no_outliers["Salary_USD"].describe())
count       509.000000
mean     100674.567780
std       53643.050057
min        3819.000000
25%       60928.000000
50%       95483.000000
75%      134059.000000
max      248257.000000
Name: Salary_USD, dtype: float64
Analyse exploratoire de données en Python

Distribution des salaires

Histogramme des salaires avec valeurs aberrantes conservées, montrant des valeurs extrêmes d'environ 250 000 à 450 000 $

Histogramme des salaires après retrait des valeurs aberrantes, qui ressemble presque à une distribution normale

Analyse exploratoire de données en Python

Passons à la pratique !

Analyse exploratoire de données en Python

Preparing Video For Download...