Menangani outlier

Analisis Data Eksploratif di Python

George Boorman

Curriculum Manager, DataCamp

Apa itu outlier?

  • Observasi yang jauh dari titik data lain
    • Median harga rumah: $400.000
    • Outlier harga rumah: $5.000.000

 

  • Pertimbangkan mengapa nilainya berbeda:
    • Lokasi, jumlah kamar tidur, ukuran keseluruhan, dll.

Rumah besar dengan kolam renang

1 Kredit gambar: https://unsplash.com/@ralphkayden
Analisis Data Eksploratif di Python

Menggunakan statistik deskriptif

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
Analisis Data Eksploratif di Python

Menggunakan rentang interkuartil

Rentang interkuartil (IQR)

  • IQR = persentil ke-75 − persentil ke-25
Analisis Data Eksploratif di Python

IQR pada box plot

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

Box plot gaji untuk profesional data, menampilkan persentil ke-25 di bagian bawah kotak, persentil ke-50 sebagai garis tengah, persentil ke-75 di bagian atas kotak, dan outlier sebagai bentuk wajik di luar kotak

Analisis Data Eksploratif di Python

Menggunakan rentang interkuartil

Rentang interkuartil (IQR)

  • IQR = persentil ke-75 − persentil ke-25
  • Outlier atas > persentil ke-75 + (1,5 × IQR)
  • Outlier bawah < persentil ke-25 − (1,5 × IQR)
Analisis Data Eksploratif di Python

Menentukan ambang batas

# 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
Analisis Data Eksploratif di Python

Mengidentifikasi outlier

# 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
Analisis Data Eksploratif di Python

Membuat subset data

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
Analisis Data Eksploratif di Python

Mengapa mencari outlier?

  • Outlier adalah nilai ekstrem

    • mungkin tidak merepresentasikan data dengan akurat
  • Dapat mengubah mean dan simpangan baku

  • Uji statistik dan model ML perlu data berdistribusi normal

Analisis Data Eksploratif di Python

Apa yang dilakukan terhadap outlier?

Pertanyaan yang perlu diajukan:

  • Mengapa outlier ini ada?
    • Peran lebih senior/negara berbeda dibayar lebih tinggi
    • Pertimbangkan untuk tetap menyertakannya

 

  • Apakah datanya akurat?
    • Mungkinkah ada kesalahan pengumpulan data?
      • Jika ya, hapus
Analisis Data Eksploratif di Python

Menghapus outlier

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
Analisis Data Eksploratif di Python

Distribusi gaji

Histogram gaji setelah mengganti outlier dengan median, dengan nilai ekstrem sekitar 250000 hingga 450000 dolar

Histogram gaji setelah mengganti outlier dengan median, hampir menyerupai distribusi normal

Analisis Data Eksploratif di Python

Ayo berlatih!

Analisis Data Eksploratif di Python

Preparing Video For Download...