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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات Series وDataFrame
- الفهرسة والتصفية والأقنعة المنطقية
- GroupBy والتجميع والجداول المحورية
- الدمج والربط وتنظيف البيانات