Traitement des valeurs aberrantes

Analyse de données exploratoires en Python

George Boorman

Curriculum Manager, DataCamp

Qu'est-ce qu'une valeur aberrante ?

  • Une observation très éloignée des autres points de données
    • Prix médian des maisons : $400,000
    • Prix immobilier atypique : $5,000,000

 

  • Il convient de se demander pourquoi la valeur est différente :
    • Emplacement, nombre de chambres, superficie totale, etc.

Grande maison avec piscine

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

Utilisation 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 de données exploratoires en Python

Utilisation de l'écart interquartile

Écart interquartile (IQR)

  • IQR = 75e - 25e centile
Analyse de données exploratoires en Python

IQR dans les graphiques en boîte

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

![https://assets.datacamp.com/production/repositories/6180/datasets/d593d4a5ea9d35ab34b63e525a75651725dad7de/salaries_boxplot_annotated.jpg Graphique en boîte représentant les salaires des professionnels des données, avec le 25e centile en bas de la boîte, le 50e centile au milieu, le 75e centile en haut de la boîte et les valeurs aberrantes représentées par des losanges à l'extérieur de la boîte.

Analyse de données exploratoires en Python

Utilisation de l'écart interquartile

Écart interquartile (IQR)

  • IQR = 75e - 25e centile
  • Valeurs aberrantes supérieures > 75e centile + (1,5 * IQR)
  • Valeurs aberrantes inférieures < 25e percentile - (1,5 * IQR)
Analyse de données exploratoires en Python

Détermination des 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 de données exploratoires en Python

Identifier 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 de données exploratoires 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 de données exploratoires en Python

Pourquoi rechercher des valeurs aberrantes ?

  • Les valeurs aberrantes sont des valeurs extrêmes.

    • peuvent ne pas refléter fidèlement nos données
  • Permet de modifier la moyenne et l'écart type.

  • Les tests statistiques et les modèles d'apprentissage automatique nécessitent des données normalement distribuées.

Analyse de données exploratoires en Python

Que faire avec les valeurs aberrantes ?

Questions à poser :

  • Pourquoi ces valeurs aberrantes existent-elles ?
    • Les postes plus élevés / dans des pays différents sont mieux rémunérés.
    • Envisagez de les conserver dans l'ensemble de données.

 

  • Les données sont-elles exactes ?
    • Une erreur aurait-elle pu se produire lors de la collecte des données ?
      • Si tel est le cas, retirez les.
Analyse de données exploratoires en Python

Suppression des 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 de données exploratoires en Python

Répartition des salaires

Histogramme des salaires après remplacement des valeurs aberrantes par la médiane, avec des valeurs extrêmes comprises entre environ 250 000 et 450 000 dollars.

Histogramme des salaires après remplacement des valeurs aberrantes par la médiane, qui ressemble presque à une distribution normale.

Analyse de données exploratoires en Python

Passons à la pratique !

Analyse de données exploratoires en Python

Preparing Video For Download...