Nghệ Thuật Phân Tích Dữ Liệu: Làm Chủ Bộ Đôi loc và iloc Trong Pandas

Khi làm việc với các bảng dữ liệu (DataFrame) khổng lồ, khả năng tra cứu, chọn lọc và bóc tách đúng phần thông tin bạn cần chính là kỹ năng sống còn của một Data Analyst hay Data Scientist. Nếu bạn đã quen với việc xem dữ liệu tổng quan, thì loc và iloc chính là hai "công cụ phẫu thuật" sắc bén nhất giúp bạn can thiệp chính xác vào bất kỳ ô, hàng hay cột nào.
Bài viết này sẽ cung cấp một checklist toàn diện giúp bạn rà soát lại toàn bộ các kỹ năng truy xuất và lọc dữ liệu từ cơ bản đến nâng cao một cách mượt mà nhất! 👇
🟦 1. Phân biệt Bản chất (loc vs iloc)
Bước đầu tiên để sử dụng thành thạo là hiểu rõ ranh giới giữa hai phương thức này:
- Nhớ nằm lòng quy tắc cốt lõi:
- loc: Lọc theo Tên nhãn (Label-based) — dựa vào tên cột, tên hàng cụ thể.
- iloc: Lọc theo Vị trí chỉ số nguyên (Integer position-based) — dựa vào hàng số mấy, cột số mấy, luôn bắt đầu đếm từ 0.
- Cấu trúc viết lệnh chuẩn: Luôn tuân thủ cú pháp df.loc[chọn_hàng, chọn_cột] hoặc df.iloc[chọn_hàng, chọn_cột].
- Sự khác biệt khi Slicing (cắt đoạn A:B):
- Với loc['A':'B']: Lấy bao gồm cả B (tính cả nhãn kết thúc).
- Với iloc[A:B]: Chỉ lấy đến sát B (không bao gồm B), giống hệt cách hoạt động của List trong Python truyền thống.
🟩 2. Thuần thục kỹ năng với iloc (Trích xuất theo vị trí)
Khi bạn biết chính xác tọa độ con số của hàng và cột thay vì tên gọi của chúng:
- Lấy hàng cụ thể: Trích xuất nhanh một hàng bằng số thứ tự (ví dụ: df.iloc[0] để lấy hàng đầu tiên của bảng).
- Lấy ô dữ liệu: Lấy ra chính xác một ô dữ liệu tại giao điểm hàng/cột cụ thể (ví dụ: df.iloc[2, 3]).
- Cắt mảng con (Slicing): Dùng dấu : thần thánh để cắt đoạn (ví dụ: df.iloc[0:5, 1:3] để lấy 5 hàng đầu tiên và bao gồm cột thứ 2, thứ 3).
- Sử dụng số âm: Dùng chỉ số âm để lấy ngược dữ liệu từ dưới lên (ví dụ: df.iloc[-1] để lấy trọn dòng cuối cùng của bảng).
🟨 3. Thuần thục kỹ năng với loc (Trích xuất theo tên)
Khi bạn muốn gọi tên trực tiếp các trường dữ liệu hoặc lọc thông minh theo điều kiện:
- Chọn cột theo tên: Chọn một hoặc nhiều cột cụ thể bằng cách truyền vào một danh sách tên (ví dụ: df.loc[:, ['Tên', 'Tuổi']]).
- Lọc dữ liệu theo điều kiện logic (Conditional Filtering): Đây chính là ứng dụng mạnh mẽ nhất của loc:
- Lọc điều kiện đơn: Ví dụ lọc các dòng có tuổi lớn hơn 30 (df.loc[df['Tuổi'] > 30]).
- Lọc điều kiện phức hợp: Kết hợp nhiều điều kiện dùng toán tử & (VÀ) hoặc | (HOẶC), ví dụ df.loc[(df['Tuổi'] > 30) & (df['Giới tính'] == 'Nữ')].
- Lưu ý vàng: Đã đóng ngoặc đơn () cho từng điều kiện nhỏ chưa? Nếu quên ngoặc, Python/Pandas sẽ lập tức báo lỗi cú pháp.
- Lọc danh sách với .isin(): Kết hợp linh hoạt .isin() với loc để lọc các giá trị nằm gọn trong một danh sách cho trước (ví dụ: df.loc[df['Thành phố'].isin(['Hà Nội', 'Đà Nẵng'])]).
🟥 4. Thay đổi giá trị dữ liệu (Góc nâng cao)
Truy xuất dữ liệu chỉ là một nửa câu chuyện; biết cách cập nhật và làm sạch dữ liệu mới là đẳng cấp thực sự:
- Cập nhật giá trị có chủ đích: Dùng loc hoặc iloc để ghi đè, cập nhật lại giá trị cho một vùng dữ liệu thỏa mãn điều kiện (ví dụ: df.loc[df['Tuổi'] < 18, 'Trạng thái'] = 'Trẻ em').
- Tránh lỗi kinh điển SettingWithCopyWarning:
- Tuyệt đối tránh viết code kiểu bắc cầu như df[df['Tuổi'] > 30]['Điểm'] = 10 vì Pandas sẽ đưa ra cảnh báo nguy hiểm về việc bạn đang thao tác trên một bản sao tạm thời.
- Giải pháp: Luôn dùng loc khi gán giá trị mới (ví dụ chuẩn: df.loc[df['Tuổi'] > 30, 'Điểm'] = 10) để đảm bảo dữ liệu gốc được cập nhật chính xác và an toàn.
💡 Mẹo nhỏ cho bạn: loc và iloc là cặp bài trùng bạn sẽ dùng đi dùng lại hàng trăm lần trong mọi dự án Machine Learning hay Data Analysis. Hãy mở Jupyter Notebook lên và thực hành ngay việc cắt ghép bảng dữ liệu để ghi nhớ sâu sắc nhé!
Bạn đã tích được bao nhiêu dấu [ ] trong danh sách kiểm tra này rồi? Hãy để lại bình luận chia sẻ tiến độ học tập của bạn ở bên dưới nhé! 👇
Bình luận