Trong bài viết trước, chúng ta đã tìm hiểu về Missing Values trong Data Cleaning. Chúng có thể ảnh hưởng đến kết quả phân tích nếu không được xử lý phù hợp. Tuy nhiên, dữ liệu thực tế còn có một vấn đề khác. Đó là Duplicate Data, hay còn gọi là dữ liệu trùng lặp.
Vậy Duplicate Data là gì? Làm thế nào để phát hiện và xử lý dữ liệu trùng lặp bằng Python?
Hãy cùng MCNA Technology School tìm hiểu qua bài viết này nhé!
1. Duplicate Data là gì?
Duplicate Data là những bản ghi xuất hiện nhiều lần trong cùng một tập dữ liệu. Các bản ghi này có thể giống nhau hoàn toàn. Chúng cũng có thể chỉ trùng lặp ở một số thông tin quan trọng.
Ví dụ, một khách hàng có thể xuất hiện nhiều lần trong Database.
| Customer ID | Customer Name | |
|---|---|---|
| 101 | Nguyễn An | an@gmail.com |
| 102 | Trần Bình | binh@gmail.com |
| 101 | Nguyễn An | an@gmail.com |
Trong ví dụ trên, dòng thứ nhất và dòng thứ ba bị trùng lặp. Nếu không xử lý, dữ liệu có thể bị đếm nhiều lần trong quá trình phân tích. Điều này có thể làm sai lệch các chỉ số và kết quả báo cáo.
2. Vì sao cần xử lý Duplicate Data?
Dữ liệu trùng lặp thường xuất hiện trong quá trình thu thập và lưu trữ dữ liệu. Một số nguyên nhân phổ biến gồm:
- Nhập dữ liệu nhiều lần.
- Đồng bộ dữ liệu từ nhiều nguồn.
- Import dữ liệu nhiều lần.
- Hệ thống ghi nhận một giao dịch nhiều lần.
- Quy trình xử lý dữ liệu chưa được kiểm soát.
Duplicate Data có thể ảnh hưởng trực tiếp đến chất lượng dữ liệu. Vì vậy, kiểm tra Duplicate Data là bước quan trọng trong Data Cleaning.
3. Phát hiện và xử lý Duplicate Data với Python
Trong Python, chúng ta có thể sử dụng thư viện Pandas để phát hiện và xử lý dữ liệu trùng lặp.
Kiểm tra dữ liệu trùng lặp
Pandas cung cấp hàm duplicated() để phát hiện các dòng bị trùng.
import pandas as pd df.duplicated()
Hàm này trả về True nếu dòng đó bị trùng. Ngược lại, hàm trả về False nếu dòng đó không bị trùng.
Ngoài ra, chúng ta có thể kết hợp với sum() để đếm tổng số dòng bị trùng:
df.duplicated().sum()
Bên cạnh đó, chúng ta cũng có thể xem chi tiết những dòng bị trùng:
df[df.duplicated()]
Cách này giúp xác định chính xác những bản ghi đang bị trùng. Từ đó, chúng ta có thể kiểm tra nguyên nhân trước khi xử lý.
Xóa dữ liệu trùng lặp
Sau khi xác định dữ liệu bị trùng, chúng ta có thể sử dụng drop_duplicates()
df = df.drop_duplicates()
Hàm này sẽ loại bỏ các dòng bị trùng hoàn toàn. Dataset sau đó chỉ giữ lại một bản ghi duy nhất.
Chúng ta có thể kiểm tra lại kết quả bằng duplicated(). Nếu kết quả bằng 0, dataset không còn dòng trùng hoàn toàn.
Xử lý dữ liệu trùng theo cột
Không phải lúc nào toàn bộ dòng cũng giống nhau. Một khách hàng có thể xuất hiện nhiều lần với thông tin khác nhau. Trong trường hợp này, chúng ta có thể kiểm tra một cột cụ thể.
Ví dụ, kiểm tra email bị trùng:
df.duplicated(subset=["email"]).sum()
Nếu muốn xóa các bản ghi trùng email, sử dụng:
df = df.drop_duplicates(subset=["email"])
Cách này giúp chúng ta xác định Duplicate Data dựa trên tiêu chí cụ thể.
Lựa chọn bản ghi cần giữ
Khi xóa dữ liệu trùng, chúng ta cần xác định bản ghi nào nên được giữ lại. Pandas cho phép lựa chọn bản ghi thông qua tham số keep.
Khi muốn giữ lại bản ghi đầu tiên, chúng ta có thể sử dụng:
df.drop_duplicates(keep="first")
Ngược lại, nếu cần giữ lại bản ghi cuối cùng:
df.drop_duplicates(keep="last")
Ngoài ra, chúng ta cũng có thể xóa toàn bộ các bản ghi bị trùng:
df.drop_duplicates(keep=False)
Việc lựa chọn phụ thuộc vào mục tiêu xử lý và đặc điểm của dataset.
4. Những lưu ý khi xử lý Duplicate Data
Trước khi loại bỏ Duplicate Data, chúng ta cần hiểu rõ ý nghĩa của từng bản ghi.
Không phải dữ liệu xuất hiện nhiều lần đều là dữ liệu sai. Một số bản ghi có thể giống nhau nhưng đại diện cho những sự kiện khác nhau.
Ví dụ, một khách hàng có thể thực hiện nhiều đơn hàng trong cùng ngày. Vì vậy, hãy xác định khóa định danh phù hợp trước khi xử lý. Khóa này giúp phân biệt những bản ghi thực sự thuộc cùng một đối tượng.
Ngoài ra, nên kiểm tra dữ liệu sau khi xóa các bản ghi trùng lặp. Việc kiểm tra giúp đảm bảo số lượng dữ liệu không bị giảm bất thường.
Cuối cùng, nên lưu lại dữ liệu gốc trước khi thực hiện làm sạch. Điều này giúp chúng ta dễ dàng đối chiếu hoặc khôi phục dữ liệu khi cần.

