Python for AI/Pandas/Lesson 47
GroupBy
Split → Apply → Combine: groupby দিয়ে প্রতিটা দলের গড়, যোগফল, সংখ্যা; agg দিয়ে একসাথে অনেক হিসাব; transform দিয়ে দলের মান প্রতিটা row-এ ফেরত।
- সময়
- 24 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
"প্রতিটা department-এর গড় CGPA কত?" — এই ধরনের প্রশ্নের উত্তরে তিনটা ধাপ:
1. Split: department অনুযায়ী ভাগ করো
2. Apply: প্রতিটা ভাগের গড় নাও
3. Combine: ফলাফলগুলো একটা table-এ জোড়া দাও
Pandas-এ এক লাইনে:
dept name cgpa dept mean
CSE Rafi 3.40 \
CSE Tanvir 3.70 >--- CSE ---> CSE 3.55
CSE Karim 3.55 /
EEE Mim 3.90 ----- EEE ---> EEE 3.90
ME Nusrat 3.10 ----- ME ---> ME 3.10
কেন দরকার?
Data analysis-এর বেশিরভাগ প্রশ্ন আসলে groupby:
- কোন শহরে বিক্রি সবচেয়ে বেশি?
- প্রতি মাসে কতজন নতুন user?
- কোন product category-তে return সবচেয়ে বেশি?
- Model কোন class-এ সবচেয়ে বেশি ভুল করে?
SQL-এর GROUP BY জানলে এটা চেনা লাগবে — হুবহু একই ধারণা।
সাধারণ aggregation
একাধিক column দিয়ে group করলে প্রতিটা জোড়ার জন্য আলাদা হিসাব।
agg: একসাথে অনেক হিসাব
Named aggregation — নতুন_নাম=("column", "function")। ফলাফলের column-এর নাম তুমি নিজে ঠিক করো, পরিষ্কার report।
reset_index: group key-কে column বানানো
transform: দলের মান প্রতিটা row-এ
প্রতিটা student-এর CGPA তার নিজের department-এর গড় থেকে কত দূরে?
transform মূল DataFrame-এর সমান দৈর্ঘ্যের ফলাফল দেয় — তাই সরাসরি নতুন column হিসেবে বসানো যায়।
Exercise
Exercise
Department-এর গড় CGPA
students থেকে:
avg_cgpa— প্রতিটা department-এর গড় CGPA, 2 ঘর দশমিকে round, একটা dict ({"CSE": ..., ...})biggest_dept— সবচেয়ে বেশি student যে department-এ, তার নাম
Quiz
Challenge
Challenge
Department report
dept_report(df) function লেখো যেটা প্রতিটা department-এর একটা report DataFrame return করে:
- Index: department-এর নাম
students— কতজনavg_cgpa— গড় CGPA, 2 ঘর দশমিকে roundtopper— সবচেয়ে বেশি CGPA পাওয়া student-এর নাম- Row-গুলো
avg_cgpaঅনুযায়ী বেশি থেকে কম
বাস্তবে কোথায় ব্যবহার হয়?
Target encoding / aggregate feature — ML-এর একটা শক্তিশালী feature engineering কৌশল। Customer-এর নিজের তথ্যের পাশাপাশি তার শহরের গড় আচরণ:
vs_city > 1 মানে customer তার শহরের গড়ের চেয়ে বেশি খরচ করেন — একটা "premium customer" signal। Kaggle competition-এ জেতা solution-গুলোতে এমন groupby feature প্রায় সবসময় থাকে।
সাবধান: training-এ এমন feature বানানোর সময় target (যা predict করতে চাও) দিয়ে groupby করলে data leakage হতে পারে। শুধু input feature দিয়ে বানাও, বা cross-validation-এর ভেতরে।
Interview প্রশ্ন
- Beginner: groupby কী? "Split-Apply-Combine" কী?
- Intermediate:
agg,transformআরapply-এর পার্থক্য কী? - Advanced: Target encoding কী? এতে data leakage কীভাবে হয় আর কীভাবে এড়াবে?
এরপর কী?
এক table-এর প্রশ্ন শেষ। কিন্তু real data প্রায়ই একাধিক table-এ — orders এক file-এ, customers আরেকটায়। পরের lesson: Merge ও Join।