Pandas هي مكتبة قوية في بايثون لمعالجة البيانات وتحليلها. إحدى ميزاتها الأكثر استخدامًا هي القدرة على تجميع البيانات وإجراء عمليات حسابية مجمعة. تستكشف هذه المقالة طرقًا مختلفة لحساب المجاميع المجمعة بكفاءة بعد تجميع البيانات باستخدام طريقة groupby()
، مع تقديم حلول لمستويات مختلفة من التعقيد وصيغ الإخراج المطلوبة.
جدول المحتويات:
- الجمع الأساسي باستخدام groupby()
- العمليات المجمعة المتعددة باستخدام agg()
- الجمع المخصص باستخدام apply()
- المجاميع التراكمية باستخدام groupby() و cumsum()
- إعادة تشكيل البيانات باستخدام pivot_table()
الجمع الأساسي باستخدام groupby()
أبسط طريقة لحساب مجموع عمود بعد التجميع هي استخدام groupby()
مباشرةً مع طريقة sum()
:
import pandas as pd
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)
# تجميع حسب 'Group' وجمع 'Value'
grouped_sum = df.groupby('Group')['Value'].sum()
print(grouped_sum)
ينتج هذا بإيجاز سلسلة تحتوي على مجموع “Value” لكل مجموعة.
العمليات المجمعة المتعددة باستخدام agg()
تتيح طريقة agg()
الحساب الفعال لإحصائيات مجمعة متعددة في وقت واحد. هذا مفيد بشكل خاص عندما تحتاج إلى أكثر من مجرد المجموع:
import pandas as pd
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)
# حساب المجموع والمتوسط والعدد لكل مجموعة
aggregated = df.groupby('Group')['Value'].agg(['sum', 'mean', 'count'])
print(aggregated)
يُحسب سطر الكود هذا المجموع والمتوسط والعدد لـ “Value” لكل مجموعة، مما ينتج عنه DataFrame.
الجمع المخصص باستخدام apply()
للسيناريوهات الأكثر تعقيدًا التي تتطلب منطق تجميع مخصص، توفر طريقة apply()
أقصى قدر من المرونة. يمكنك تعريف دالة لإجراء أي عمليات حسابية مرغوبة:
import pandas as pd
import numpy as np
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)
def custom_agg(x):
return pd.Series({'sum': x.sum(), 'range': x.max() - x.min()})
# تطبيق دالة التجميع المخصصة
result = df.groupby('Group')['Value'].apply(custom_agg).reset_index()
print(result)
هنا، تحسب دالة مخصصة كل من المجموع والمدى لكل مجموعة.
المجاميع التراكمية باستخدام groupby()
و cumsum()
للحصول على المجاميع التراكمية داخل كل مجموعة، اجمع بين groupby()
وطريقة cumsum()
:
import pandas as pd
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)
# حساب المجموع التراكمي لكل مجموعة
df['Cumulative Sum'] = df.groupby('Group')['Value'].cumsum()
print(df)
يضيف هذا عمودًا جديدًا يُظهر المجموع الجاري داخل كل مجموعة.
إعادة تشكيل البيانات باستخدام pivot_table()
لتمثيل أكثر جاذبية بصريًا وسهولة في تحليل البيانات المجمعة، خاصة عند التعامل مع متغيرات تجميع متعددة، استخدم pivot_table()
:
import pandas as pd
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
'Category': ['X', 'Y', 'X', 'Y', 'Z', 'X'],
'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)
pivot_table = pd.pivot_table(df, values='Value', index='Group', columns='Category', aggfunc='sum', fill_value=0)
print(pivot_table)
يُنشئ هذا جدولًا محوريًا يلخص البيانات، مما يسهل مقارنة المجاميع عبر فئات مختلفة داخل كل مجموعة.