Zpracování odlehlých hodnot

Exploratory Data Analysis in Python

George Boorman

Curriculum Manager, DataCamp

Co je odlehlá hodnota?

  • Pozorování vzdálené od ostatních datových bodů
    • Medián ceny nemovitosti: 400 000 USD
    • Odlehlá cena nemovitosti: 5 000 000 USD

 

  • Zvažte, proč se hodnota liší:
    • Lokalita, počet ložnic, celková plocha apod.

Velký dům s bazénem

1 Image credit: https://unsplash.com/@ralphkayden
Exploratory Data Analysis in Python

Použití popisné statistiky

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
Exploratory Data Analysis in Python

Použití mezikvartilového rozpětí

Mezikvartilové rozpětí (IQR)

  • IQR = 75. - 25. percentil
Exploratory Data Analysis in Python

IQR v krabicových grafech

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

Krabicový graf platů datových specialistů zobrazující 25. percentil ve spodní části krabice, 50. percentil jako střední čáru, 75. percentil v horní části krabice a odlehlé hodnoty jako kosočtverce mimo krabici

Exploratory Data Analysis in Python

Použití mezikvartilového rozpětí

Mezikvartilové rozpětí (IQR)

  • IQR = 75. - 25. percentil
  • Horní odlehlé hodnoty > 75. percentil + (1.5 * IQR)
  • Dolní odlehlé hodnoty < 25. percentil - (1.5 * IQR)
Exploratory Data Analysis in Python

Určení prahových hodnot

# 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
Exploratory Data Analysis in Python

Identifikace odlehlých hodnot

# 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
Exploratory Data Analysis in Python

Filtrování dat

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
Exploratory Data Analysis in Python

Proč hledat odlehlé hodnoty?

  • Odlehlé hodnoty jsou extrémní

    • nemusí přesně reprezentovat data
  • Mohou ovlivnit průměr a směrodatnou odchylku

  • Statistické testy a modely strojového učení vyžadují normálně rozdělená data

Exploratory Data Analysis in Python

Jak naložit s odlehlými hodnotami?

Otázky k zamyšlení:

  • Proč tyto odlehlé hodnoty existují?
    • Vyšší pozice / jiné země mají vyšší platy
    • Zvažte jejich ponechání v datové sadě

 

  • Jsou data přesná?
    • Mohlo dojít k chybě při sběru dat?
      • Pokud ano, odstraňte je
Exploratory Data Analysis in Python

Odstranění odlehlých hodnot

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
Exploratory Data Analysis in Python

Rozdělení platů

Histogram platů po nahrazení odlehlých hodnot mediánem, s extrémními hodnotami přibližně od 250 000 do 450 000 dolarů

Histogram platů po nahrazení odlehlých hodnot mediánem, přibližně odpovídající normálnímu rozdělení

Exploratory Data Analysis in Python

Pojďme procvičovat!

Exploratory Data Analysis in Python

Preparing Video For Download...