
Hệ thống quản trị đào tạo trực tuyến
Trong thực tế, dữ liệu thường gặp các vấn đề như:
Thiếu dữ liệu
Dữ liệu trùng lặp
Sai định dạng
Dữ liệu không hợp lệ
Ví dụ:
| ID | Name | Age | Salary |
|---|---|---|---|
| 1 | An | 25 | 1000 |
| 2 | Bình | NaN | 1200 |
| 3 | Chi | 22 | 900 |
| 3 | Chi | 22 | 900 |
Trong bảng trên:
NaN là dữ liệu thiếu
Dòng 3 bị trùng lặp
Nếu không làm sạch dữ liệu sẽ dẫn đến:
Kết quả phân tích sai
Mô hình học máy không chính xác
Trong Pandas, dữ liệu thiếu thường được biểu diễn bằng:
NaN
None
Sử dụng hàm:
df.isnull()
Ví dụ:
import pandas as pd
df = pd.read_csv("employees.csv")
df.isnull()
Kết quả:
True: dữ liệu thiếu
False: dữ liệu hợp lệ
df.isnull().sum()
Ví dụ kết quả:
| Column | Missing |
|---|---|
| Age | 3 |
| Salary | 1 |
Có hai cách phổ biến:
Xóa dữ liệu thiếu
Điền giá trị thay thế
Sử dụng hàm:
df.dropna()
Ví dụ:
df_clean = df.dropna()
Ý nghĩa:
Xóa tất cả dòng có chứa NaN.
df.dropna(axis=1)
Ví dụ chỉ xóa khi thiếu ở cột Age:
df.dropna(subset=["Age"])
Thay vì xóa dữ liệu, có thể điền giá trị thay thế.
Sử dụng hàm:
df.fillna()
df.fillna(0)
df["Age"].fillna(df["Age"].mean())
df["Department"].fillna(df["Department"].mode()[0])
Dữ liệu trùng lặp làm cho:
kết quả thống kê sai
dữ liệu bị phóng đại
Sử dụng hàm:
df.duplicated()
Ví dụ:
df[df.duplicated()]
Sử dụng hàm:
df.drop_duplicates()
Ví dụ:
df = df.drop_duplicates()
df.drop_duplicates(subset=["ID"])
Dữ liệu bẩn có thể gây ra:
Sai lệch kết quả thống kê
Sai dự đoán trong Machine Learning
Giảm độ tin cậy của báo cáo
Do đó Data Cleaning là bước quan trọng nhất trong Data Analysis.
Các chiến lược phổ biến:
Xóa dữ liệu thiếu
Điền bằng giá trị trung bình (mean)
Điền bằng trung vị (median)
Điền bằng giá trị phổ biến (mode)
Điền bằng giá trị dự đoán
import pandas as pd
df = pd.read_csv("employees.csv")
df.isnull().sum()
df["Age"].fillna(df["Age"].mean())
df.duplicated()
df.drop_duplicates()