0Pricing
Learn AI with Python · درس

GroupBy والتجميع

استخدام df.groupby() وagg() وtransform() وapply() والتجميعات المسماة مع Named Aggregation.

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

فكرة التقسيم-التطبيق-الدمج

يتبع GroupBy نمط التقسيم-التطبيق-الدمج: قسّموا الصفوف إلى مجموعات حسب مفتاح، وطبّقوا دالة على كل مجموعة، ثم ادمجوا النتائج في إطار واحد. وهذا النمط أساس معظم الملخصات التحليلية.

import pandas as pd
df = pd.DataFrame({
    "dept": ["A", "A", "B", "B", "B"],
    "salary": [50, 70, 40, 60, 80],
})

groupby الأساسي

ينشئ df.groupby("col") كائنًا مجمّعًا. ويؤدي تسلسل عملية تجميع مثل .mean() إلى حساب قيمة واحدة لكل مجموعة.

print(df.groupby("dept")["salary"].mean())
# dept
# A    60.0
# B    60.0

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

استدعوا عدة عمليات اختزال مرة واحدة باستخدام .agg([...])، لينتج عمود لكل دالة.

print(df.groupby("dept")["salary"].agg(["mean", "min", "max", "count"]))

قاموس التجميع لكل عمود

مرّروا قاموسًا إلى .agg لتطبيق دوال مختلفة على أعمدة مختلفة.

df["bonus"] = [5, 7, 4, 6, 8]
out = df.groupby("dept").agg({"salary": "mean", "bonus": "sum"})
print(out)

التجميع المسمّى

يمنح التجميع المسمّى أعمدة النتائج أسماء واضحة باستخدام صيغة pd.NamedAgg. وهذا يتجنب عناوين الأعمدة متعددة المستويات المربكة.

out = df.groupby("dept").agg(
    avg_salary=("salary", "mean"),
    total_bonus=("bonus", "sum"),
)
print(out)

التجميع حسب مفاتيح متعددة

مرّروا قائمة من الأعمدة للتجميع حسب عدة مفاتيح في آن واحد، ما ينتج عنه نتيجة هرمية (MultiIndex).

df["level"] = ["jr", "sr", "jr", "sr", "sr"]
print(df.groupby(["dept", "level"])["salary"].mean())

transform: إخراج بالشكل نفسه

تُرجع .transform() نتيجةً محاذية للصفوف الأصلية، وليس صفًا واحدًا لكل مجموعة. وهي مثالية لإضافة إحصاء المجموعة مرة أخرى كعمود جديد.

df["dept_avg"] = df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "dept_avg"]])

استخدام transform للتطبيع

بما أن transform يعيد البث إلى كل صف، يمكنكم التطبيع داخل المجموعات، مثل طرح متوسط المجموعة.

df["centered"] = df["salary"] - df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "centered"]])

استخدام apply للمنطق المخصص

يمرّر .apply() كل مجموعة (كإطار بيانات فرعي) إلى دالتكم. استخدموه للمنطق الذي لا تستطيع عمليات التجميع المضمنة التعبير عنه، مثل إرجاع أعلى N من الصفوف لكل مجموعة.

top = df.groupby("dept").apply(lambda g: g.nlargest(1, "salary"))
print(top[["dept", "salary"]])

مقارنة agg وtransform وapply

تختزل agg كل مجموعة إلى قيمة واحدة. وتُرجع transform قيمة واحدة لكل صف أصلي. أما apply فهي الخيار العام المرن (والأبطأ). اختاروا الخيار الأكثر تحديدًا لتحقيق الوضوح والسرعة.

إلغاء التجميع باستخدام reset_index

تضع نتائج GroupBy المفاتيح في الفهرس. استدعوا .reset_index() لإعادتها إلى أعمدة عادية، وهو ما تتوقعه معظم الشيفرات اللاحقة.

flat = df.groupby("dept")["salary"].mean().reset_index()
print(flat)
#   dept  salary
# 0    A    60.0
# 1    B    60.0

اختبار سريع

اختبروا فهمكم لـ groupby.

مراجعة

أساسيات GroupBy:

  • التقسيم-التطبيق-الدمج عبر df.groupby("col")
  • .agg([...]) والتجميع بالقاموس والتجميع المسمّى لحساب إحصاءات متعددة
  • تُرجع .transform() نتائج بالشكل الأصلي
  • استخدموا .apply() للمنطق الاعتباطي لكل مجموعة
  • استدعوا دائمًا .reset_index() لتسطيح مفاتيح المجموعات وإعادتها إلى أعمدة

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

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

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

ماذا ستتعلم في «GroupBy والتجميع»؟

استخدام df.groupby() وagg() وtransform() وapply() والتجميعات المسماة مع Named Aggregation. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

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

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

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

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

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

  1. GroupBy والتجميع
  2. الجداول المحورية والجدولة المتقاطعة
  3. الدمج والضم المتقدمان
  4. السلاسل الزمنية في Pandas
← العودة إلى Learn AI with Python