Bài 19 · Phân tích TTBĐS

Vì sao phải làm sạch dữ liệu trước khi phân tích?

Trong dữ liệu BĐS, một dấu chấm thập phân sai có thể biến 65 triệu/m² thành 650 triệu/m²; một tin được đăng bởi 10 môi giới có thể làm “nguồn cung” tăng 10 lần; một cột diện tích có thể trộn diện tích đất, diện tích sàn và diện tích thông thủy. Nếu phân tích ngay, phần mềm vẫn chạy và vẫn cho biểu đồ rất đẹp — nhưng kết luận có thể sai từ gốc.

Biên soạn: ThS. Nguyễn Mạnh Hùng
Đơn vị: GV. Khoa QLĐĐ&BĐS – ĐH Nông Lâm TP.HCM
Email: nguyenmanhhung@hcmuaf.edu.vn

Cập nhật 2026: Tài liệu môn học yêu cầu loại trùng, xử lý missing/outlier và chuẩn hóa định dạng. Nội dung này vẫn đúng. Phần cập nhật bổ sung tư duy reproducible data cleaning: giữ raw data bất biến, ghi log mọi thay đổi, tách lỗi dữ liệu khỏi quan sát thật nhưng hiếm, và ưu tiên quy tắc có thể chạy lại thay vì sửa tay không truy vết.

1. Làm sạch dữ liệu thực sự là gì?

Data cleaning là quá trình phát hiện, đánh giá và xử lý những vấn đề khiến dữ liệu không còn nhất quán hoặc không phù hợp với mục tiêu phân tích.

Không phải cứ “khác thường” là xóa. Quy trình đúng thường gồm:

  • kiểm tra cấu trúc và kiểu biến;
  • chuẩn hóa đơn vị và định dạng;
  • phát hiện trùng lặp;
  • audit missing values;
  • phát hiện giá trị bất hợp lý/outlier;
  • kiểm tra logic giữa các biến;
  • mã hóa biến phân loại;
  • tạo biến dẫn xuất có kiểm soát;
  • ghi log các quyết định xử lý;
  • xác nhận dataset sẵn sàng phân tích.

2. Nguyên tắc số 1: không sửa trực tiếp raw data

Nên duy trì ít nhất ba lớp:

LớpNội dungĐược sửa?
RAWDữ liệu nguyên bản đúng như nguồn thu thậpKhông
CLEAN/STAGINGDữ liệu đang làm sạch, chuẩn hóa, gắn cờCó, theo quy tắc
ANALYSIS READYDữ liệu đã kiểm tra để dùng cho thống kê/mô hìnhChỉ qua pipeline có kiểm soát

Nếu phát hiện lỗi sau này, raw data giúp truy lại nguyên nhân. Nếu chỉ còn một file đã “sửa cho đẹp”, không ai biết giá trị nào là gốc.

3. Bước 1 – Audit trước khi sửa

Trước tiên tạo một data quality report:

  • số dòng, số cột;
  • số ID duy nhất;
  • tỷ lệ missing theo biến;
  • tần suất category;
  • min/max/median/mean cho biến số;
  • số duplicate nghi ngờ;
  • giá trị ngoài domain;
  • phân bố theo khu vực/thời gian.

Mục tiêu là hiểu “bệnh” của dataset trước khi chữa.

4. Bước 2 – Chuẩn hóa kiểu dữ liệu và đơn vị

Các lỗi phổ biến:

  • giá có dòng ghi đồng, dòng ghi triệu, dòng ghi tỷ;
  • diện tích có “65m2”, “65 m²”, “65” và “0.0065 ha”;
  • ngày ở dạng dd/mm/yyyy và mm/dd/yyyy;
  • tọa độ dùng dấu phẩy/dấu chấm khác nhau;
  • quận/phường viết nhiều biến thể;
  • giá/m² tính từ diện tích đất ở nhà phố nhưng từ diện tích sử dụng ở căn hộ.

Trước phân tích, mỗi biến cần có định nghĩa và đơn vị duy nhất.

5. Bước 3 – Duplicate: một dòng lặp hay một tài sản lặp?

Duplicate có nhiều mức:

  • exact duplicate: mọi trường giống nhau;
  • record duplicate: cùng listing_id nhưng dữ liệu cập nhật;
  • entity duplicate: nhiều tin khác nhau nhưng cùng một BĐS;
  • legitimate repeated observation: cùng BĐS được quan sát ở các thời điểm khác nhau.

Không thể chỉ nhấn “Remove Duplicates” trong Excel rồi xong. Cần xác định đơn vị phân tích và mục tiêu thời gian.

6. Bước 4 – Missing: không điền đại cho đủ ô

Trước khi xử lý, phải phân biệt:

  • không thu thập được;
  • người trả lời không biết;
  • người trả lời từ chối;
  • không áp dụng;
  • 0 thực sự;
  • nguồn không công bố.

Các trạng thái này không nên cùng bị mã thành 0. Bài tiếp theo sẽ đi sâu vào missing-data mechanisms và lựa chọn phương pháp xử lý.

7. Bước 5 – Outlier: kiểm tra trước khi xóa

Một căn biệt thự 300 triệu/m² có thể:

  • là lỗi nhập;
  • sai đơn vị;
  • sai diện tích;
  • một tài sản siêu cao cấp thật;
  • giá tổng bị nhập vào cột giá/m².

Boxplot, IQR hoặc z-score giúp phát hiện, nhưng quyết định giữ/xóa cần quay lại nguồn và logic nghiệp vụ. Outlier là tín hiệu cần điều tra, không phải lệnh xóa tự động.

8. Bước 6 – Kiểm tra quy tắc logic liên biến

Ví dụ:

  • Gia_Tong_Ty ≈ Gia_m2_Trieu × Dien_Tich_m2 / 1000;
  • ngày cập nhật không trước ngày đăng;
  • số phòng ngủ phù hợp với loại BĐS;
  • tọa độ thuộc địa bàn khai báo;
  • tầng không lớn hơn số tầng tòa nhà nếu có biến đối chiếu;
  • pháp lý mã 1–5 không xuất hiện mã 9 ngoài dictionary.

Đây là bước phát hiện lỗi rất hiệu quả vì tận dụng quan hệ giữa các biến.

9. Bước 7 – Chuẩn hóa category và mã hóa

“Căn hộ”, “Chung cư”, “CHCC”, “Apartment” có thể cùng một nhóm. Trước khi đếm tần số hoặc chạy mô hình phải map về taxonomy đã định.

Đối với SPSS, tài liệu của môn học lưu ý rõ: String/Numeric không giống Nominal/Ordinal/Scale. Mã quận bằng số vẫn là Nominal; tính mean của mã quận là vô nghĩa.

10. Bước 8 – Tạo biến dẫn xuất nhưng phải giữ công thức

Các biến như:

  • giá/m²;
  • khoảng cách đến CBD;
  • tuổi công trình;
  • days on market;
  • nhóm khoảng giá;
  • mật độ tiện ích;

nên được tạo từ biến gốc với công thức được ghi trong Data Dictionary hoặc script. Không copy–paste thủ công từng ô nếu có thể tái tạo bằng công thức/Power Query/Python/SPSS syntax.

11. Cleaning log: phần thường bị bỏ quên

Mỗi đợt làm sạch nên ghi:

Hành độngSố dòng ảnh hưởngLý doQuy tắc
Loại exact duplicate23Lặp do import hai lầnTrùng source_id + snapshot_date
Chuẩn hóa đơn vị giá46Đồng → triệu đồngvalue/1.000.000
Gắn cờ outlier8Ngoài ngưỡng IQRKhông xóa tự động
Loại bản ghi3Không truy được giá/diện tích gốcThiếu biến cốt lõi

Cleaning log giúp báo cáo minh bạch và tái lập.

12. Tự động hóa đến đâu?

Excel/Power Query, SPSS Syntax, R/Python hay SQL có thể tự động hóa rất tốt các quy tắc lặp lại. Tuy nhiên:

  • không để script tự xóa outlier mà không log;
  • không overwrite raw file;
  • kiểm tra số dòng trước/sau mỗi bước;
  • version control quy tắc;
  • spot-check mẫu bằng mắt sau tự động hóa.

Tự động hóa tốt là lặp lại được và kiểm toán được, không chỉ nhanh.

13. Khi nào dữ liệu được coi là “analysis ready”?

  1. đơn vị phân tích rõ;
  2. ID/khóa hợp lý;
  3. kiểu biến đúng;
  4. đơn vị chuẩn;
  5. duplicate đã xử lý/gắn cờ;
  6. missing được audit;
  7. outlier được đánh giá;
  8. category được chuẩn hóa;
  9. các quy tắc logic đạt;
  10. biến dẫn xuất tái tạo được;
  11. có Data Dictionary và cleaning log.

14. Làm sạch không được biến thành “làm đẹp”

Nếu giá rất cao nhưng là tài sản thật, xóa vì làm mean xấu là thao túng dữ liệu. Nếu một nhóm nhỏ nhưng có thật, gộp chỉ để biểu đồ cân đối có thể che mất cấu trúc thị trường.

Mục tiêu cleaning là làm dữ liệu phản ánh thực tế tốt hơn, không làm kết quả phù hợp mong muốn của người phân tích.

Ghi nhớ trong 30 giây

  1. Không phân tích trực tiếp trên raw data.
  2. Giữ RAW bất biến; làm sạch trong lớp riêng.
  3. Duplicate, missing và outlier phải được hiểu theo đơn vị phân tích và nghiệp vụ.
  4. Mọi thay đổi quan trọng nên có cleaning log.
  5. Dữ liệu sạch là dữ liệu nhất quán, truy vết được và phù hợp mục tiêu — không phải dữ liệu không còn giá trị lạ.

Nguồn tham khảo

  • Nguyễn Mạnh Hùng, Bài giảng Phân tích thị trường BĐS – Tuần 2: Kỹ năng làm sạch dữ liệu.
  • Nguyễn Mạnh Hùng, Lab 2 – Làm sạch, chuẩn hóa và phân tích sơ bộ dữ liệu BĐS.
  • Nguyễn Mạnh Hùng, Tài liệu hướng dẫn phân tích SPSS, phần loại biến và chuẩn bị dữ liệu.
  • Eurostat, các nguyên tắc validation dữ liệu theo hướng fit-for-purpose và khả năng kiểm soát lỗi.

Bài tiếp theo: “Missing value là gì và xử lý thế nào?”.

📚 Xem toàn bộ 19 bài trong series Phân tích TTBĐS