Bài trước bạn học xử lý văn bản tự do (regex). Nhưng có 1 loại dữ liệu văn bản đặc biệt: cột chỉ lặp lại 1 số giá trị cố định (như “Miền Bắc/Trung/Nam”, “Còn hàng/Hết hàng”). Loại này xử lý hiệu quả hơn nhiều nếu lưu đúng cách.
Vấn đề: lưu text lặp lại hàng triệu lần rất tốn tài nguyên
Nguyên lý: giống “bảng tham chiếu” trong data warehouse
Đây chính xác là kỹ thuật “dimension table” mà các hệ thống data warehouse chuyên nghiệp vẫn dùng
từ lâu để lưu dữ liệu hiệu quả. pandas cho phép chuyển 1 cột sang kiểu này chỉ bằng .astype("category") — code đơn giản, nhưng hiểu ĐÚNG khi nào nên dùng (cột có ít giá
trị khác nhau, lặp lại nhiều) mới là phần quan trọng.
Xem thêm
Video này (tiếng Anh) đo trực tiếp mức chênh lệch bộ nhớ trước/sau khi chuyển sang category trên dữ liệu thật.
- Bạn giải thích được vì sao lưu dạng category tiết kiệm bộ nhớ hơn lưu text thô.
- Bạn nhận diện được 1 cột dữ liệu thực tế nên chuyển sang category (ít giá trị, lặp nhiều).
- Bạn viết được code .astype(‘category’) để chuyển đổi.
Không phải cột văn bản nào cũng nên chuyển sang category — chỉ hợp khi số giá trị KHÁC NHAU nhỏ hơn nhiều so với tổng số dòng dữ liệu (ví dụ: 3 miền nhưng có 1 triệu dòng). Nếu mỗi dòng đều có giá trị khác nhau (như tên khách hàng), chuyển sang category không có lợi ích gì.
Câu hỏi thường gặp
Làm sao biết 1 cột có nên chuyển sang category không?
So sánh số giá trị khác nhau (dùng .nunique()) với tổng số dòng — nếu tỷ lệ nhỏ (ví dụ dưới 50%), category thường có lợi.
Chuyển sang category có ảnh hưởng đến kết quả phân tích không?
Không thay đổi giá trị dữ liệu, chỉ thay đổi CÁCH LƯU TRỮ bên trong — kết quả phân tích/tính toán vẫn giữ nguyên, chỉ nhanh hơn và tốn ít bộ nhớ hơn.
Categorical có liên quan gì đến machine learning không?
Có — nhiều mô hình cần cột phân loại được mã hóa đúng cách trước khi đưa vào huấn luyện, kiểu category trong pandas là bước chuẩn bị tốt cho việc này, sẽ gặp lại ở Module 5.
