Gestionarea valorilor aberante

Analiza exploratorie a datelor în Python

George Boorman

Curriculum Manager, DataCamp

Ce este o valoare aberantă?

  • O observație foarte îndepărtată de celelalte puncte de date
    • Prețul median al unei case: 400.000 $
    • Preț aberant: 5.000.000 $

 

  • Este important să se înțeleagă de ce valoarea diferă:
    • Locație, număr de dormitoare, suprafață etc.

Casă mare cu piscină

1 Image credit: https://unsplash.com/@ralphkayden
Analiza exploratorie a datelor în Python

Utilizarea statisticilor descriptive

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
Analiza exploratorie a datelor în Python

Utilizarea intervalului intercuartilic

Intervalul intercuartilic (IQR)

  • IQR = percentila 75 - percentila 25
Analiza exploratorie a datelor în Python

IQR în diagramele box plot

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

Diagramă box plot a salariilor profesioniștilor în date, cu percentila 25 la baza cutiei, percentila 50 ca linie mediană, percentila 75 în partea superioară a cutiei și valorile aberante reprezentate ca diamante în afara cutiei

Analiza exploratorie a datelor în Python

Utilizarea intervalului intercuartilic

Intervalul intercuartilic (IQR)

  • IQR = percentila 75 - percentila 25
  • Valori aberante superioare > percentila 75 + (1.5 * IQR)
  • Valori aberante inferioare < percentila 25 - (1.5 * IQR)
Analiza exploratorie a datelor în Python

Identificarea pragurilor

# 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
Analiza exploratorie a datelor în Python

Identificarea valorilor aberante

# 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
Analiza exploratorie a datelor în Python

Filtrarea datelor

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
Analiza exploratorie a datelor în Python

De ce să căutăm valori aberante?

  • Valorile aberante sunt valori extreme

    • este posibil să nu reprezinte cu acuratețe datele
  • Pot modifica media și deviația standard

  • Testele statistice și modelele de machine learning necesită date normal distribuite

Analiza exploratorie a datelor în Python

Ce facem cu valorile aberante?

Întrebări de pus:

  • De ce există aceste valori aberante?
    • Roluri mai senioare / țări diferite oferă salarii mai mari
    • Luați în considerare păstrarea lor în set

 

  • Datele sunt corecte?
    • A putut apărea o eroare la colectarea datelor?
      • Dacă da, eliminați-le
Analiza exploratorie a datelor în Python

Eliminarea valorilor aberante

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
Analiza exploratorie a datelor în Python

Distribuția salariilor

Histogramă a salariilor înainte de eliminarea valorilor aberante, cu valori extreme între aproximativ 250.000 și 450.000 de dolari

Histogramă a salariilor după eliminarea valorilor aberante, care se apropie de o distribuție normală

Analiza exploratorie a datelor în Python

Să exersăm!

Analiza exploratorie a datelor în Python

Preparing Video For Download...