Xử lý ngoại lệ

Phân tích dữ liệu khám phá trong Python

George Boorman

Curriculum Manager, DataCamp

Ngoại lệ là gì?

  • Quan sát cách xa phần lớn điểm dữ liệu
    • Giá nhà trung vị: $400,000
    • Giá nhà ngoại lệ: $5,000,000

 

  • Nên xem vì sao giá trị khác biệt:
    • Vị trí, số phòng ngủ, diện tích, v.v.

Ngôi nhà lớn có hồ bơi

1 Nguồn ảnh: https://unsplash.com/@ralphkayden
Phân tích dữ liệu khám phá trong Python

Dùng thống kê mô tả

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
Phân tích dữ liệu khám phá trong Python

Dùng khoảng tứ phân vị

Khoảng tứ phân vị (IQR)

  • IQR = phần vị 75 - phần vị 25
Phân tích dữ liệu khám phá trong Python

IQR trong biểu đồ hộp

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

Biểu đồ hộp lương cho chuyên gia dữ liệu, hiển thị phần vị 25 ở đáy hộp, phần vị 50 là đường giữa, phần vị 75 ở đỉnh hộp, và ngoại lệ là các hình thoi ngoài hộp

Phân tích dữ liệu khám phá trong Python

Dùng khoảng tứ phân vị

Khoảng tứ phân vị (IQR)

  • IQR = phần vị 75 - phần vị 25
  • Ngoại lệ trên > phần vị 75 + (1.5 * IQR)
  • Ngoại lệ dưới < phần vị 25 - (1.5 * IQR)
Phân tích dữ liệu khám phá trong Python

Xác định ngưỡng

# 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
Phân tích dữ liệu khám phá trong Python

Xác định ngoại lệ

# 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
Phân tích dữ liệu khám phá trong Python

Lọc dữ liệu

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
Phân tích dữ liệu khám phá trong Python

Vì sao tìm ngoại lệ?

  • Ngoại lệ là giá trị cực đoan

    • có thể không đại diện đúng cho dữ liệu
  • Có thể làm thay đổi mean và độ lệch chuẩn

  • Kiểm định thống kê và mô hình ML thường cần dữ liệu phân phối chuẩn

Phân tích dữ liệu khám phá trong Python

Xử lý ngoại lệ thế nào?

Câu hỏi cần đặt ra:

  • Vì sao có các ngoại lệ này?
    • Vai trò cao hơn / quốc gia khác trả lương cao hơn
    • Cân nhắc giữ lại trong dữ liệu

 

  • Dữ liệu có chính xác không?
    • Có thể lỗi khi thu thập dữ liệu?
      • Nếu có, hãy loại bỏ
Phân tích dữ liệu khám phá trong Python

Loại bỏ ngoại lệ

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
Phân tích dữ liệu khám phá trong Python

Phân phối lương

Histogram lương sau khi thay ngoại lệ bằng trung vị, với giá trị cực đoan khoảng 250000 đến 450000 đô la

Histogram lương sau khi thay ngoại lệ bằng trung vị, gần giống phân phối chuẩn

Phân tích dữ liệu khám phá trong Python

Ayo berlatih!

Phân tích dữ liệu khám phá trong Python

Preparing Video For Download...