AIDT HUTECH Logo
Hướng dẫn

Làm sạch dữ liệu cơ bản với Python và pandas

Các bước làm sạch dữ liệu thường gặp: kiểm tra tổng quan, xử lý giá trị thiếu, loại bản ghi trùng, chuẩn hóa văn bản và kiểu dữ liệu.

A

Admin

· 4 phút đọc

Làm sạch dữ liệu cơ bản với Python và pandas
Mục lục (7)

Trước khi phân tích hoặc huấn luyện mô hình, dữ liệu thực tế hầu như luôn cần được làm sạch. Giá trị bị thiếu, bản ghi trùng lặp, cách viết không thống nhất hay sai kiểu dữ liệu đều có thể dẫn đến kết luận sai. Thư viện pandas của Python cung cấp các thao tác đơn giản cho những việc này. Bài hướng dẫn giả định bạn đã cài pandas và có một bảng dữ liệu về sinh viên gồm các cột ma_sv, ho_ten, nganh, diem và ngay_nhap_hoc.

Bước 1: nhìn tổng quan dữ liệu

Hãy đọc dữ liệu và xem qua cấu trúc trước khi sửa bất cứ điều gì.

import pandas as pd

df = pd.read_csv("sinhvien.csv")
print(df.head())        # vài dòng đầu
print(df.info())        # kiểu dữ liệu và số giá trị không rỗng
print(df.describe())    # thống kê cho các cột số

Kết quả cho biết cột nào đang có kiểu dữ liệu bất thường, cột nào nhiều giá trị thiếu, và các giá trị số có nằm trong khoảng hợp lý hay không.

Bước 2: xử lý giá trị thiếu

Đầu tiên, đếm số giá trị thiếu theo từng cột. Sau đó quyết định cách xử lý dựa trên ý nghĩa của dữ liệu, không nên làm máy móc.

print(df.isna().sum())

df = df.dropna(subset=["ma_sv"])             # bỏ dòng thiếu khóa chính
df["diem"] = df["diem"].fillna(df["diem"].median())  # điền bằng trung vị

Điền bằng trung vị hay trung bình chỉ là một lựa chọn. Với một số cột, giữ nguyên giá trị thiếu hoặc bổ sung cột đánh dấu "đã thiếu" sẽ hợp lý hơn. Hãy ghi lại quyết định của bạn để người khác hiểu vì sao dữ liệu thay đổi.

Bước 3: loại bản ghi trùng lặp

Bản ghi trùng làm sai lệch các thống kê. Hãy xác định cột nào xác định tính duy nhất của một bản ghi.

print(df.duplicated(subset=["ma_sv"]).sum())
df = df.drop_duplicates(subset=["ma_sv"], keep="first")

Bước 4: chuẩn hóa văn bản

Cùng một ngành có thể bị viết thành "CNTT", "cntt " hay "Cntt". Chuẩn hóa chữ hoa chữ thường và khoảng trắng giúp việc gom nhóm chính xác hơn.

df["nganh"] = df["nganh"].str.strip().str.upper()
df["ho_ten"] = df["ho_ten"].str.strip().str.title()

Nếu còn nhiều cách viết khác nhau cho cùng một giá trị, có thể dùng replace với một từ điển ánh xạ, và kiểm tra lại bằng df["nganh"].value_counts().

Bước 5: sửa kiểu dữ liệu và kiểm tra giá trị bất thường

Ngày tháng thường được đọc dưới dạng chuỗi, còn điểm có thể bị đọc thành chuỗi nếu có ký tự lạ.

df["ngay_nhap_hoc"] = pd.to_datetime(df["ngay_nhap_hoc"], errors="coerce")
df["diem"] = pd.to_numeric(df["diem"], errors="coerce")

hop_le = df["diem"].between(0, 10)
print(df[~hop_le])      # xem các dòng điểm ngoài khoảng 0-10

Tham số errors="coerce" biến giá trị không chuyển đổi được thành giá trị thiếu để bạn xử lý tiếp, thay vì gây lỗi. Với giá trị ngoài khoảng hợp lý, hãy kiểm tra nguồn gốc trước khi quyết định sửa hoặc loại bỏ.

Bước 6: lưu kết quả và giữ lại dữ liệu gốc

Hãy lưu dữ liệu đã làm sạch ra tệp mới và không ghi đè tệp gốc, để có thể kiểm tra lại và tái lập quy trình.

df.to_csv("sinhvien_sach.csv", index=False)

Kết luận

Làm sạch dữ liệu là quá trình lặp: quan sát, phát hiện vấn đề, xử lý và kiểm tra lại. Với pandas, các thao tác cơ bản như isna, drop_duplicates, str.strip và to_numeric đã giải quyết phần lớn những vấn đề thường gặp. Quan trọng hơn, hãy ghi lại các quyết định xử lý và giữ nguyên dữ liệu gốc, để kết quả phân tích sau đó có thể được kiểm chứng.

#python#pandas#du lieu

Bình luận

Chưa có bình luận nào.

Bình luận