0Pricing
Python Academy · درس

GroupBy والتجميع والجداول المحورية

لخّص البيانات باستخدام عمليات groupby والجداول المحورية

GroupBy والتجميع والجداول المحورية درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

أساسيات groupby

تقسم df.groupby("col") DataFrame إلى مجموعات حسب القيم الفريدة للعمود. أضف عملية تجميع متسلسلة للحصول على النتائج.

import pandas as pd

df = pd.DataFrame({
    "dept":["HR","IT","HR","IT","HR"],
    "salary":[60,80,65,90,70]
})
print(df.groupby("dept")["salary"].mean())
# HR    65.0
# IT    85.0

دوال التجميع المتعددة

استخدم agg() لتطبيق عدة دوال تجميع في آنٍ واحد.

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
result = df.groupby("dept")["sal"].agg(["mean","max","count"])
print(result)

التجميعات المُسمّاة

استخدم الوسيطات المسماة في agg() لتسمية أعمدة الإخراج صراحةً (في Pandas 0.25 فأحدث).

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
result = df.groupby("dept").agg(
    avg_sal=("sal","mean"),
    max_sal=("sal","max"),
    count=("sal","size")
)
print(result)

استخدام groupby مع أعمدة متعددة

مرّر قائمة من الأعمدة لإنشاء مجموعات هرمية.

import pandas as pd

df = pd.DataFrame({
    "year":[2023,2023,2024,2024],
    "dept":["HR","IT","HR","IT"],
    "sal":[60,80,65,90]
})
print(df.groupby(["year","dept"])["sal"].sum())

transform()

تُرجع transform Series متوافقة مع الفهرس الأصلي، وهو مفيد لإضافة إحصاءات على مستوى المجموعة إلى DataFrame الأصلي.

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
df["dept_avg"] = df.groupby("dept")["sal"].transform("mean")
print(df)

filter()

تُبقي filter(func) على المجموعات التي تُرجع لها الدالة True فقط.

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR"],"sal":[60,80,65]})
# Keep only departments with mean salary > 70:
result = df.groupby("dept").filter(lambda g: g["sal"].mean() > 70)
print(result)

pivot_table

تنشئ pd.pivot_table ملخصًا بأسلوب جداول البيانات مع تجميع مخصص.

import pandas as pd

df = pd.DataFrame({
    "year":[2023,2023,2024,2024],
    "region":["East","West","East","West"],
    "sales":[100,150,120,200]
})
pt = pd.pivot_table(df, values="sales",
                    index="year", columns="region",
                    aggfunc="sum")
print(pt)

crosstab

تحسب pd.crosstab جدولًا تقاطعيًا، وهو مفيد لعدّ تركيبات القيم الفئوية.

import pandas as pd

df = pd.DataFrame({"gender":["M","F","M","F","M"],"result":["pass","pass","fail","fail","pass"]})
print(pd.crosstab(df["gender"], df["result"]))

apply()

تطبّق apply(func) دالة مخصصة على DataFrame لكل مجموعة (axis=0)، أو على كل صف أو عمود (axis=1).

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR"],"sal":[60,80,65]})

def range_sal(g):
    return g["sal"].max() - g["sal"].min()

print(df.groupby("dept").apply(range_sal))

استخدام unstack لإعادة التشكيل

بعد استخدام groupby متعدد المستويات، استخدم unstack() لنقل مستوى الفهرس الداخلي إلى الأعمدة.

import pandas as pd

df = pd.DataFrame({"year":[2023,2023,2024],"dept":["HR","IT","HR"],"sal":[60,80,65]})
result = df.groupby(["year","dept"])["sal"].mean().unstack()
print(result)

إعادة أخذ العينات للسلاسل الزمنية

تجمع resample("M") DataFrame للسلاسل الزمنية حسب فترة تقويمية، مما يتيح إجراء التجميعات الشهرية أو السنوية.

import pandas as pd

idx = pd.date_range("2024-01-01", periods=90, freq="D")
df = pd.DataFrame({"sales": range(90)}, index=idx)
monthly = df.resample("ME").sum()
print(monthly)

تحقق سريع

ما الذي تُرجعه groupby().transform("mean")؟

مراجعة

تقسم groupby البيانات إلى مجموعات لإجراء التجميع. استخدم agg() لتطبيق دوال متعددة، وtransform() لإعادة بث إحصاءات المجموعات إلى البيانات الأصلية، وfilter() لإزالة المجموعات، وpivot_table()/crosstab() لإنشاء ملخصات متعددة الأبعاد.

الأسئلة الشائعة

هل درس «GroupBy والتجميع والجداول المحورية» مجاني؟

نعم — نص درس «GroupBy والتجميع والجداول المحورية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «GroupBy والتجميع والجداول المحورية»؟

لخّص البيانات باستخدام عمليات groupby والجداول المحورية تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «GroupBy والتجميع والجداول المحورية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Series وDataFrame
  2. الفهرسة والتصفية والأقنعة المنطقية
  3. GroupBy والتجميع والجداول المحورية
  4. الدمج والربط وتنظيف البيانات
← العودة إلى Python Academy