Python for AI/Pandas/Lesson 44
Selection: loc ও iloc
Label দিয়ে loc, position দিয়ে iloc — row, column আর দুটো একসাথে বাছাই; set_index; আর ML-এর জন্য feature (X) ও target (y) আলাদা করা।
- সময়
- 22 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
DataFrame থেকে অংশ বের করার দুটো প্রধান উপায়:
loc— label (নাম) দিয়ে:df.loc["Mim", "cgpa"]iloc— position (কত নম্বর) দিয়ে:df.iloc[1, 1]
দুটোই [row, column] — NumPy-র মতো।
কেন দরকার?
- ML-এর জন্য X আর y আলাদা করা
- নির্দিষ্ট customer বা product-এর তথ্য খোঁজা
- শর্ত মানা row-এ মান বদলানো — যেমন অস্বাভাবিক মান ঠিক করা
- Train/test ভাগের পর নির্দিষ্ট row বের করা
Column বাছাই
"area":"rooms" — label দিয়ে slice, দুই প্রান্ত সহ।
loc বনাম iloc
loc | iloc | |
|---|---|---|
| কী দিয়ে | label | position (0, 1, 2…) |
| Slice-এর শেষ | সহ | বাদ |
Negative (-1) | না (label হিসেবে খোঁজে) | হ্যাঁ |
| Boolean mask | হ্যাঁ | শুধু array (Series না) |
Default index (0, 1, 2…) থাকলে label আর position একই দেখায় — তাই পার্থক্যটা ধরা পড়ে না, যতক্ষণ না sort বা filter করার পর index এলোমেলো হয়।
Sort-এর পর index [1, 2, 0] — loc[0] দেয় Rafi (label 0), iloc[0] দেয় Mim (প্রথম row)। "সেরা" student চাইলে iloc!
set_index: একটা column-কে index বানানো
মান বদলানো: সবসময় .loc
df.loc[শর্ত, column] = মান — এক ধাপে, নিরাপদে।
এর বদলে দুই ধাপে (chained) লিখলে:
কিছুই বদলায়নি! df[df["cgpa"] >= 3.7] একটা নতুন DataFrame দেয়, তার grade বদলেছে, মূল df না। Pandas 3.0-এর Copy-on-Write নিয়মে এটা সবসময় এভাবেই আচরণ করে।
Exercise
Exercise
ঠিক ঘরটা বের করো
df-এর index হলো student-এর নাম। বের করো:
mim_cgpa— Mim-এর cgpa (locদিয়ে)first_two— প্রথম দুটো row, শুধুdeptআরcgpacolumn (ilocদিয়ে, DataFrame)cse_names— যাদের dept"CSE", তাদের নাম (index)-এর list (loc+ শর্ত দিয়ে)
Quiz
Challenge
Challenge
Feature আর target আলাদা করো
Model train করার আগে প্রতিবার যা করতে হয়: split_xy(df, target, drop=()) function লেখো যেটা return করে (X, y):
y—targetcolumn (Series)X— বাকি সব column (DataFrame), তবেdrop-এ দেওয়া column-গুলোও বাদ (যেমনid, যেগুলো feature না)
মূল df যেন বদলে না যায়।
বাস্তবে কোথায় ব্যবহার হয়?
Leaderboard — top-k বের করে position দিয়ে rank দেওয়া, যেখানে iloc না loc-এর পার্থক্য সত্যিই গুরুত্বপূর্ণ:
শেষ লাইনটা গুরুত্বপূর্ণ — সবচেয়ে accurate model সবসময় সেরা পছন্দ না। Production-এ প্রায়ই সামান্য কম accuracy কিন্তু অনেক দ্রুত model বেছে নেওয়া হয়।
Interview প্রশ্ন
- Beginner:
locআরiloc-এর পার্থক্য কী? - Intermediate: Sort করার পর
df.loc[0]কেন প্রথম row দেয় না? - Advanced:
SettingWithCopyWarningকী ছিল, আর Pandas 3.0-এর Copy-on-Write এই সমস্যার কীভাবে সমাধান করেছে?
এরপর কী?
loc-এ শর্ত দিয়ে row বাছাই একটু দেখলাম। এবার সেটা বিস্তারিত — একাধিক শর্ত, text খোঁজা, sort, top-n। পরের lesson: Filtering।