Đây là bài cuối Module 4 — kỹ năng cuối cùng để hoàn thiện bộ công cụ xử lý dữ liệu Python trước khi chuyển sang trực quan hóa (Module 5). Dữ liệu thật thường nằm rải rác ở nhiều bảng, cần ghép lại đúng cách mới phân tích được.
Vấn đề: thông tin khách hàng và đơn hàng nằm ở 2 nơi khác nhau
pd.merge(df1, df2, on="ID") là cách ghép cơ bản nhất — chỉ cần chỉ ra cột chung giữa
2 bảng, pandas tự tìm và ghép đúng dòng tương ứng.
4 kiểu ghép — chọn sai kiểu sẽ làm mất dữ liệu không ngờ
Lỗi rất dễ mắc: dùng mặc định “inner” khi thực ra cần “left” — dẫn đến MẤT dữ liệu 1 cách âm thầm (những khách hàng chưa có đơn hàng nào sẽ biến mất khỏi kết quả, dù dữ liệu khách hàng đó vẫn đúng). Luôn kiểm tra số dòng TRƯỚC và SAU khi merge để phát hiện sớm nếu có mất dữ liệu ngoài ý muốn.
Xem thêm
Video này (tiếng Anh) minh họa trực quan sự khác nhau giữa merge, join, concat, và append trong pandas.
- Bạn viết được code pd.merge() cơ bản để ghép 2 bảng theo 1 cột chung.
- Bạn giải thích được sự khác nhau giữa inner, left, right, outer join.
- Bạn biết kiểm tra số dòng trước/sau merge để phát hiện mất dữ liệu ngoài ý muốn.
Kết thúc Module 4: bạn giờ có đủ bộ công cụ để đưa dữ liệu từ “thô, rải rác, nhiều nguồn” đến “1 bảng sạch, sẵn sàng phân tích” — cài đặt, cấu trúc dữ liệu, NumPy, pandas, đọc từ nhiều nguồn, làm sạch, xử lý văn bản, và ghép nối. Module 5 sẽ dùng chính bộ công cụ này để TRỰC QUAN HÓA và phân tích chuỗi thời gian.
Câu hỏi thường gặp
Merge có luôn cần 2 bảng có cùng tên cột không?
Không — nếu tên cột khác nhau ở 2 bảng, dùng tham số left_on/right_on để chỉ rõ cột nào ghép với cột nào, không cần đổi tên cột trước.
Nên dùng inner hay outer join?
Tùy mục đích: nếu chỉ cần dữ liệu có ĐỦ thông tin cả 2 bên (không thiếu), dùng inner. Nếu cần GIỮ LẠI mọi dòng dù thiếu thông tin 1 bên, dùng left/right/outer tùy trường hợp.
Lỗi merge phổ biến nhất là gì?
Merge nhân đôi dữ liệu do cột nối có giá trị TRÙNG LẶP ở 1 hoặc cả 2 bảng — luôn kiểm tra .shape trước/sau để phát hiện số dòng tăng bất thường.
