Missing Values là gì? Cách xử lý dữ liệu thiếu với Python & Pandas

Missingvalue

Ở bài viết trước, chúng ta đã tìm hiểu về Data Cleaning và những vấn đề thường gặp trong quá trình làm sạch dữ liệu. Trong đó, Missing Values là một trong những vấn đề phổ biến mà Data Analyst thường gặp khi làm việc với dataset.

Vậy dữ liệu thiếu xuất hiện do đâu và nên xử lý như thế nào? Hãy cùng MCNA Technology School tìm hiểu về Missing Values và cách xử lý với Python & Pandas trong bài viết này nhé!

1. Missing Values là gì?

Missing Values hay dữ liệu thiếu là những giá trị không xuất hiện trong dataset. Ví dụ, một dataset khách hàng có thể thiếu độ tuổi, số điện thoại, thu nhập hoặc địa chỉ.

Dữ liệu thiếu có thể xuất hiện dưới nhiều dạng như ô trống, NaN, None hoặc NULL.

Khi gặp Missing Values, Data Analyst cần xác định mức độ và nguyên nhân thiếu dữ liệu. Từ đó, có thể lựa chọn phương pháp xử lý phù hợp với mục tiêu phân tích.

2. Vì sao Missing Values xuất hiện?

Dữ liệu thiếu có thể xuất hiện vì nhiều nguyên nhân khác nhau trong quá trình thu thập.

Một số nguyên nhân phổ biến gồm:

  • Người dùng không cung cấp thông tin: Một số trường có thể bị bỏ trống khi điền biểu mẫu.
  • Lỗi trong quá trình thu thập: Hệ thống có thể không ghi nhận được một số giá trị.
  • Kết hợp nhiều nguồn dữ liệu: Một số bản ghi có thể không có thông tin tương ứng.
  • Dữ liệu không áp dụng: Một số trường không phù hợp với một nhóm đối tượng.

Việc xác định nguyên nhân giúp Data Analyst lựa chọn cách xử lý phù hợp hơn.

3. Các cách xử lý Missing Values

Không phải Missing Values nào cũng được xử lý theo cùng một cách. Phương pháp phù hợp phụ thuộc vào kiểu dữ liệu, mức độ thiếu và mục tiêu phân tích.

3.1. Lựa chọn giá trị thay thế dựa trên đặc điểm dữ liệu

Trước tiên, cần kiểm tra đặc điểm của biến trước khi lựa chọn phương pháp. Dưới đây là một số tiêu chí quan trọng cần xem xét:

Loại dữ liệu Tiêu chí kiểm tra Phương pháp Khi nào nên sử dụng?
Dữ liệu số Mean, Median, Histogram, Boxplot Mean Phân phối tương đối cân đối và ít Outliers
Median Phân phối lệch hoặc có nhiều Outliers
Dữ liệu phân loại Tần suất xuất hiện Mode Một giá trị chiếm ưu thế và tỷ lệ thiếu không quá cao
Tỷ lệ Missing Values “Unknown” / “Missing” Missing Values nhiều hoặc việc thiếu dữ liệu có ý nghĩa

3.2. Khi nào không nên điền Missing Values?

Tuy nhiên, không phải Missing Values nào cũng cần được thay thế. Trong một số trường hợp, dữ liệu thiếu có thể mang ý nghĩa nghiệp vụ.

Ví dụ, company_name trống có thể đại diện cho khách hàng cá nhân. Nếu tự động điền một giá trị giả, ý nghĩa ban đầu có thể bị thay đổi.

Ngoài ra, một số mô hình có thể xử lý Missing Values trực tiếp. Khi đó, không nhất thiết phải thay thế dữ liệu trước khi xây dựng mô hình.

3.3. Xóa dữ liệu thiếu

Bên cạnh việc thay thế, xóa dữ liệu cũng là một phương pháp thường được sử dụng. Nếu một cột có quá nhiều dữ liệu thiếu, có thể cân nhắc loại bỏ cột đó. Tương tự, một vài dòng thiếu dữ liệu quan trọng cũng có thể được loại bỏ.

Tuy nhiên, cần đánh giá tỷ lệ dữ liệu bị mất trước khi thực hiện. Nếu xóa quá nhiều, dataset có thể mất đi những thông tin có giá trị. Vì vậy, phương pháp này chỉ nên được sử dụng khi dữ liệu thiếu không quá nghiêm trọng.

4. Xử lý Missing Values với Python & Pandas

Sau khi xác định phương pháp phù hợp, Pandas giúp thực hiện quá trình xử lý nhanh chóng.

4.1. Kiểm tra Missing Values

Trước tiên, có thể kiểm tra số lượng dữ liệu thiếu:

# Số lượng Missing Values
df.isnull().sum()

Có thể tính tỷ lệ Missing Values để đánh giá mức độ thiếu như sau:

# Tỷ lệ Missing Values
df.isnull().mean() * 100

Tỷ lệ này giúp xác định cột nào đang có vấn đề nghiêm trọng hơn.

4.2. Điền Mean hoặc Median

Với dữ liệu số, nên kiểm tra phân phối và outliers trước khi lựa chọn Mean hoặc Median.

Có thể sử dụng Histogram để quan sát hình dạng phân phối của dữ liệu:

import matplotlib.pyplot as plt

df["income"].hist()

plt.xlabel("Income")
plt.ylabel("Frequency")
plt.title("Income Distribution")
plt.show()

Bên cạnh đó, Boxplot giúp phát hiện các giá trị ngoại lệ:

df.boxplot(column="income")

plt.title("Income Distribution")
plt.show()
Trường hợp 1: Phân phối tương đối chuẩn

PpchuanBoxplot_normal

Histogram cho thấy dữ liệu phân bố tương đối cân đối quanh giá trị trung tâm. Boxplot cũng không xuất hiện nhiều Outliers.

Trong trường hợp này, Mean có thể đại diện tốt cho xu hướng trung tâm của dữ liệu.

# Điền Missing Values bằng Mean
df["age"] = df["age"].fillna(df["age"].mean())

Trường hợp 2: Phân phối lệch và có Outliers

Pplech

Boxplot_skewed

Histogram cho thấy dữ liệu bị lệch về một phía. Boxplot đồng thời xuất hiện một số Outliers khá xa.

Trong trường hợp này, Median thường phù hợp hơn vì ít bị ảnh hưởng bởi Outliers.

# Điền Missing Values bằng Median
df["income"] = df["income"].fillna(df["income"].median())

4.3. Điền Mode cho dữ liệu phân loại

Với dữ liệu phân loại, có thể sử dụng Mode:

# Điền giá trị xuất hiện nhiều nhất
df["city"] = df["city"].fillna(df["city"].mode()[0])

Nếu Mode không phù hợp, có thể thay thế bằng một nhóm riêng:

# Gán nhóm riêng cho Missing Values
df["city"] = df["city"].fillna("Unknown")

4.4. Xóa dữ liệu thiếu

Pandas cũng hỗ trợ xóa các dòng chứa Missing Values:

# Xóa các dòng có Missing Values
df = df.dropna()

Ngoài ra, chúng ta có thể chỉ định một cột cụ thể khi cần:

# Xóa dòng thiếu Email
df = df.dropna(subset=["email"])

Cách này phù hợp khi cột đó đóng vai trò quan trọng trong bài toán.

5. Kết luận

Missing Values là vấn đề phổ biến trong quá trình Data Cleaning. Tuy nhiên, không phải dữ liệu thiếu nào cũng nên được xóa hoặc thay thế.

Trước khi xử lý, cần xác định mức độ thiếu, kiểu dữ liệu và nguyên nhân phát sinh. Với dữ liệu số, việc kiểm tra phân phối và Outliers giúp lựa chọn Mean hoặc Median phù hợp hơn.

Với dữ liệu phân loại, có thể cân nhắc Mode hoặc tạo nhóm riêng như “Unknown”. Trong một số trường hợp, giữ nguyên Missing Values lại là lựa chọn hợp lý hơn.

Với Python và Pandas, quá trình này có thể được thực hiện nhanh chóng và linh hoạt. Tuy nhiên, công cụ chỉ hỗ trợ thao tác dữ liệu. Quyết định xử lý vẫn cần dựa trên đặc điểm dữ liệu và mục tiêu phân tích.

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