মূল content-এ যাও

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-এ এক লাইনে:

main.py
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

main.py

একাধিক column দিয়ে group করলে প্রতিটা জোড়ার জন্য আলাদা হিসাব।

agg: একসাথে অনেক হিসাব

main.py

Named aggregation — নতুন_নাম=("column", "function")। ফলাফলের column-এর নাম তুমি নিজে ঠিক করো, পরিষ্কার report।

reset_index: group key-কে column বানানো

main.py

transform: দলের মান প্রতিটা row-এ

প্রতিটা student-এর CGPA তার নিজের department-এর গড় থেকে কত দূরে?

main.py

transform মূল DataFrame-এর সমান দৈর্ঘ্যের ফলাফল দেয় — তাই সরাসরি নতুন column হিসেবে বসানো যায়।

Exercise

Exercise

Department-এর গড় CGPA

+20 XP

students থেকে:

  • avg_cgpa — প্রতিটা department-এর গড় CGPA, 2 ঘর দশমিকে round, একটা dict ({"CSE": ..., ...})
  • biggest_dept — সবচেয়ে বেশি student যে department-এ, তার নাম
solution.py

Quiz

  1. Q1df.groupby("city")["sales"].sum()-এর ফলাফলের index কী?
  2. Q2groupby(...).transform("mean") আর groupby(...).mean()-এর পার্থক্য কী?
  3. Q3groupby("dept").size() আর groupby("dept").count()-এর পার্থক্য কী?
0/3 answered

Challenge

Challenge

Department report

+50 XP

dept_report(df) function লেখো যেটা প্রতিটা department-এর একটা report DataFrame return করে:

  • Index: department-এর নাম
  • students — কতজন
  • avg_cgpa — গড় CGPA, 2 ঘর দশমিকে round
  • topper — সবচেয়ে বেশি CGPA পাওয়া student-এর নাম
  • Row-গুলো avg_cgpa অনুযায়ী বেশি থেকে কম
solution.py

বাস্তবে কোথায় ব্যবহার হয়?

Target encoding / aggregate feature — ML-এর একটা শক্তিশালী feature engineering কৌশল। Customer-এর নিজের তথ্যের পাশাপাশি তার শহরের গড় আচরণ:

main.py

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।