Trong quá trình phân tích dữ liệu, không phải mọi giá trị đều nằm trong một phạm vi bình thường. Một số giá trị có thể cao hoặc thấp bất thường so với phần lớn dữ liệu. Những giá trị này được gọi là Outliers, hay dữ liệu ngoại lệ.
Vậy làm thế nào để phát hiện Outliers? Và khi nào chúng ta nên loại bỏ những giá trị này?
Hãy cùng MCNA Technology School tìm hiểu qua bài viết này nhé!
1. Outliers là gì?
Outliers là những giá trị khác biệt đáng kể so với phần lớn dữ liệu.
Ví dụ, một dataset có mức lương như sau:
8, 9, 10, 11, 12, 13, 150
Phần lớn mức lương nằm trong khoảng từ 8 đến 13. Tuy nhiên, giá trị 150 khác biệt rất lớn so với các giá trị còn lại. Đây có thể là một Outlier.
Outliers không nhất thiết là dữ liệu sai. Một giá trị bất thường đôi khi phản ánh một sự kiện thực tế. Vì vậy, chúng ta không nên xóa Outliers ngay khi phát hiện chúng.
2. Outliers ảnh hưởng đến quá trình phân tích như thế nào?
Outliers có thể làm thay đổi đáng kể kết quả phân tích. Điều này đặc biệt rõ khi chúng ta sử dụng các chỉ số như Mean.
Ví dụ, hãy xem hai nhóm dữ liệu sau:
10, 11, 12, 13, 14
và
10, 11, 12, 13, 100
Chỉ một giá trị bất thường cũng có thể làm Mean tăng mạnh. Khi đó, Mean không còn đại diện tốt cho phần lớn dữ liệu.
Outliers cũng có thể ảnh hưởng đến biểu đồ và một số mô hình Machine Learning. Vì vậy, việc kiểm tra Outliers là một bước quan trọng trong Data Cleaning.
3. Phát hiện Outliers với Python
Python cung cấp nhiều cách để phát hiện dữ liệu ngoại lệ. Trong đó, Boxplot và phương pháp IQR là hai cách phổ biến.
Kiểm tra dữ liệu
Trước tiên, chúng ta có thể xem tổng quan về dữ liệu.
df["income"].describe()
Kết quả cung cấp các thông tin như:
- Count
- Mean
- Standard Deviation
- Minimum
- Quartiles
- Maximum
Nếu Maximum hoặc Minimum chênh lệch lớn, dữ liệu có thể chứa Outliers. Tuy nhiên, cách này chỉ giúp chúng ta quan sát ban đầu.
Để xác định Outliers rõ hơn, chúng ta cần một phương pháp cụ thể.
Phát hiện Outliers bằng Boxplot
Boxplot là một biểu đồ rất hữu ích khi kiểm tra dữ liệu ngoại lệ.
Với Python, chúng ta có thể sử dụng thư viện matplotlib.
import matplotlib.pyplot as plt plt.boxplot(df["income"]) plt.show()

Boxplot giúp chúng ta quan sát sự phân bố của dữ liệu. Các điểm nằm xa phần chính của biểu đồ có thể là Outliers.
Đây là cách trực quan và phù hợp khi khám phá dataset.
Phát hiện Outliers bằng phương pháp IQR
Một phương pháp phổ biến khác là IQR – Interquartile Range.
IQR được tính dựa trên hai giá trị:
- Q1: Phân vị thứ 25%.
- Q3: Phân vị thứ 75%.
Công thức IQR:
IQR = Q3 - Q1
Sau đó, chúng ta xác định giới hạn dưới và giới hạn trên:
Lower Bound = Q1 - 1.5 × IQR Upper Bound = Q3 + 1.5 × IQR
Những giá trị nằm ngoài hai giới hạn này có thể được xem là Outliers.
Áp dụng với Python
Q1 = df["income"].quantile(0.25) Q3 = df["income"].quantile(0.75) IQR = Q3 - Q1 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR
outliers = df[ (df["income"] < lower_bound) | (df["income"] > upper_bound) ]
5. Xử lý Outliers như thế nào?
Phát hiện Outliers mới chỉ là bước đầu. Bước quan trọng hơn là xác định cách xử lý phù hợp. Có ba hướng xử lý phổ biến.
Loại bỏ Outliers
Nếu Outlier đến từ lỗi nhập liệu, chúng ta có thể loại bỏ bản ghi.
df_clean = df[ (df["income"] >= lower_bound) & (df["income"] <= upper_bound) ]
Cách này phù hợp khi chúng ta có cơ sở rõ ràng về dữ liệu sai.
Thay thế giá trị
Trong một số trường hợp, chúng ta có thể thay thế giá trị bất thường. Giá trị có thể được thay bằng Median hoặc một giá trị phù hợp khác. Median thường được ưu tiên khi dataset có nhiều giá trị cực đoan.
median = df["income"].median() df["income"] = df["income"].where( (df["income"] >= lower_bound) & (df["income"] <= upper_bound), median )
Giữ lại Outliers
Đây là trường hợp rất dễ bị bỏ qua. Không phải Outlier nào cũng cần được xử lý.
Ví dụ, một giao dịch có giá trị rất lớn vẫn có thể hoàn toàn hợp lệ.
Trong phân tích gian lận, những giá trị bất thường còn có thể là tín hiệu quan trọng. Khi đó, Outlier không phải dữ liệu cần xóa. Nó có thể chính là insight mà Data Analyst đang tìm kiếm.
6. Những lưu ý khi xử lý Outliers
Điều quan trọng nhất là hiểu ngữ cảnh của dữ liệu. Một giá trị bất thường trong dataset này có thể hoàn toàn bình thường trong dataset khác.
Vì vậy, không nên áp dụng một quy tắc cho mọi trường hợp. Hãy kết hợp phương pháp thống kê với kiến thức nghiệp vụ.
Bạn cũng nên kiểm tra dữ liệu trước và sau khi xử lý. Điều này giúp hạn chế việc loại bỏ những thông tin có giá trị. Đặc biệt, hãy lưu lại dataset ban đầu trước khi thực hiện thay đổi.
7. Tổng kết
Outliers là những giá trị khác biệt đáng kể so với phần lớn dữ liệu. Chúng có thể xuất hiện do lỗi dữ liệu hoặc phản ánh những sự kiện đặc biệt.
Với Python, chúng ta có thể sử dụng Boxplot để quan sát Outliers trực quan. Ngoài ra, IQR cũng được sử dụng để xác định Outliers dựa trên các ngưỡng thống kê.
Tuy nhiên, phát hiện Outliers không đồng nghĩa với việc phải xóa chúng. Một Data Analyst cần hiểu dữ liệu trước khi quyết định cách xử lý. Đôi khi, một giá trị bất thường không phải vấn đề. Nó có thể chính là câu chuyện mà dữ liệu đang muốn kể.
Hy vọng bài viết giúp bạn hiểu rõ hơn về Outliers và cách xử lý dữ liệu ngoại lệ trong quá trình Data Cleaning.
Hãy cùng MCNA Technology School tiếp tục khám phá hành trình phân tích dữ liệu qua những bài viết tiếp theo nhé!
Tác giả: Thái Thu Trâm – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Khang)
🌐 Website: MCNA Technology School
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

