تجمیع و گروه‌بندی داده

گروه‌بندی داده با groupby، توابع تجمیع (sum، mean، count)، جدول محوری (pivot_table) و پاسخ به سؤالات تحلیلی

تجمیع داده چیست؟

معمولاً سؤال‌های تحلیلی به ازای «گروه» هستند: «فروش هر شهر چقدر بوده؟»، «میانگین سبد خرید هر دسته مشتری چیست؟». تجمیع (Aggregation) یعنی: داده را گروه‌بندی کن و برای هر گروه یک آمار (مجموع، میانگین، تعداد...) محاسبه کن.

الگوی سه‌مرحله‌ای groupby

df.groupby("city")["sales"].sum()
  1. Split: داده بر اساس ستون city به گروه‌ها تقسیم می‌شود
  2. Apply: تابع (مثلاً sum) روی هر گروه اعمال می‌شود
  3. Combine: نتایج در یک جدول جدید جمع می‌شوند

توابع تجمیع پرکاربرد

تابعخروجیمثال کاربرد
sumمجموعفروش کل هر شهر
meanمیانگینمیانگین سبد خرید
countتعدادتعداد سفارش هر مشتری
min / maxکمینه/بیشینهبیشترین فروش روزانه
medianمیانهمیانه حقوق هر دپارتمان
nuniqueتعداد مقادیر یکتاتعداد مشتریان یکتای هر شهر

گروه‌بندی چندسطحی

می‌توان بر اساس چند ستون گروه‌بندی کرد:

# فروش هر شهر در هر ماه
df.groupby(["city", "month"])["sales"].sum()

چند تجمیع هم‌زمان: agg

df.groupby("city")["sales"].agg(["sum", "mean", "count"])

حتی می‌توان برای هر ستون، توابع متفاوت خواست:

df.groupby("city").agg({
    "sales": "sum",
    "price": "mean",
    "customer": "nunique"
})

جدول محوری (Pivot Table)

پیوت تیبل، نتیجه گروه‌بندی را به شکل جدول متقاطع (مثل اکسل) می‌چیند:

# سطر: شهر، ستون: ماه، مقدار: مجموع فروش
pd.pivot_table(df, values="sales", index="city", columns="month", aggfunc="sum")

این شکل برای مقایسه بصری گروه‌ها عالی است.

مرتب‌سازی نتیجه

معمولاً بعد از تجمیع، می‌خواهیم برترین‌ها را ببینیم:

result = df.groupby("city")["sales"].sum()
top = result.sort_values(ascending=False)
top3 = top.head(3)   # سه شهر برتر
نکته: اگر بعد از groupby ستونی ناپدید شد، یادتان باشد index عوض شده! با .reset_index() نتیجه را به DataFrame معمولی برگردانید.

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل علم داده است.

ابزارهای مرتبط