কম্পিউটার টিউটোরিয়াল

পাইথন: প্যান্ডাসে মাল্টি-ইনডেক্স ডেটাফ্রেমে groupby করা

মাল্টি-ইনডেক্স (MultiIndex) ডেটাফ্রেমে groupby() করার জন্য level প্যারামিটার ব্যবহার করা হয়, যা ইনডেক্স লেভেলের নাম বা পজিশন নির্দিষ্ট করে।

উদাহরণ: CSV থেকে মাল্টি-ইনডেক্স তৈরি করে গ্রুপবাই


import pandas as pd

# ধরে নিচ্ছি sales.csv ফাইলে Car, Place, UnitsSold কলাম আছে
# df = pd.read_csv("sales.csv")

# ডেমো ডেটা
df = pd.DataFrame({
    'Car': ['BMW', 'Mercedes', 'Lamborghini', 'Audi', 'Mercedes', 'Porsche', 'RollsRoyce', 'BMW'],
    'Place': ['Delhi', 'Hyderabad', 'Chandigarh', 'Bangalore', 'Hyderabad', 'Mumbai', 'Mumbai', 'Delhi'],
    'UnitsSold': [95, 80, 80, 75, 90, 90, 95, 50]
})

print("মূল ডেটাফ্রেম:")
print(df)

# Car এবং Place কলামকে মাল্টি-ইনডেক্স বানানো
df = df.set_index(['Car', 'Place'])
df.sort_index(inplace=True)

print("\nমাল্টি-ইনডেক্স ডেটাফ্রেম:")
print(df)

# লেভেল 'Car' অনুযায়ী গ্রুপ করে UnitsSold-এর গড়
result = df.groupby(level='Car')['UnitsSold'].mean()
print("\nগাড়ির নাম অনুযায়ী গড় UnitsSold:")
print(result)

আউটপুট


মাল্টি-ইনডেক্স ডেটাফ্রেম:
                 UnitsSold
Car         Place         
Audi        Bangalore     75
BMW         Delhi         95
BMW         Delhi         50
Lamborghini Chandigarh    80
Mercedes    Hyderabad     80
Mercedes    Hyderabad     90
Porsche     Mumbai        90
RollsRoyce  Mumbai        95

গাড়ির নাম অনুযায়ী গড় UnitsSold:
Car
Audi          75.0
BMW           72.5
Lamborghini   80.0
Mercedes      85.0
Porsche       90.0
RollsRoyce    95.0
Name: UnitsSold, dtype: float64

ব্যাখ্যা

  • set_index(['Car', 'Place']) — দুই কলাম থেকে মাল্টি-ইনডেক্স তৈরি
  • sort_index() — ইনডেক্স সর্ট (গ্রুপবাই-এর জন্য সুপারিশকৃত)
  • groupby(level='Car') — মাল্টি-ইনডেক্সের 'Car' লেভেল অনুযায়ী গ্রুপ
  • ['UnitsSold'].mean() — শুধু UnitsSold কলামের গড়

অন্যান্য level প্যারামিটার


# লেভেল নম্বর দিয়ে (০ = Car, ১ = Place)
df.groupby(level=0)['UnitsSold'].mean()

# একাধিক লেভেল
df.groupby(level=['Car', 'Place'])['UnitsSold'].sum()

# রিসেট ইনডেক্স দিয়ে সাধারণ ডেটাফ্রেমে ফিরে আসা
result = df.groupby(level='Car')['UnitsSold'].mean().reset_index()

groupby() vs level প্যারামিটার

  • df.groupby('Car') — কলাম 'Car' অনুযায়ী (যদি Car কলাম থাকে)
  • df.groupby(level='Car') — ইনডেক্স লেভেল 'Car' অনুযায়ী (মাল্টি-ইনডেক্সের ক্ষেত্রে)
  1. Pandas DataFrame-কে ডেট অনুযায়ী এগريجেট করে প্লট করুন

  2. পাইথনে পান্ডাস ডেটাফ্রেমের সাবসেট সিলেক্ট করা (সিঙ্গল এবং মাল্টিপল কলাম)

  3. Pandas DataFrame-এ ইন্ডেক্স রিসেট (reset index) করার পদ্ধতি

  4. Python Pandas: DataFrame shape প্রোপার্টি ব্যবহার করা