Duplicate Data trong Python: Cách xử lý dữ liệu trùng lặp

Dupdataa

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 Email
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.

5. Tổng kết

Duplicate Data là vấn đề thường gặp trong quá trình Data Cleaning. Nếu không xử lý, dữ liệu trùng lặp có thể ảnh hưởng đến kết quả phân tích.

Với Pandas, chúng ta có thể dễ dàng phát hiện và xử lý các bản ghi trùng.

  • Hàm duplicated() giúp kiểm tra dữ liệu trùng lặp trong Dataset.
  • Hàm drop_duplicates() giúp loại bỏ những bản ghi không cần thiết.

Tuy nhiên, việc xử lý Duplicate Data cần dựa trên Business Logic. Điều này giúp dữ liệu chính xác và đáng tin cậy hơn.

Hy vọng bài viết giúp bạn hiểu rõ hơn về Duplicate Data và cách xử lý dữ liệu trùng lặp 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

Chỉ mục