الباندا: كيفية التجميع والتجميع عبر أعمدة متعددة
في كثير من الأحيان قد ترغب في تجميع وتجميع أعمدة متعددة من pandas DataFrame.
لحسن الحظ، من السهل القيام بذلك باستخدام الدالتين pandas .groupby() و .agg() .
يشرح هذا البرنامج التعليمي عدة أمثلة للاستخدام العملي لهذه الوظائف.
مثال 1: قم بالتجميع حسب عمودين وإيجاد المتوسط
لنفترض أن لدينا DataFrame الباندا التالية:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame print (df) team position assists rebounds 0 AG 5 11 1 BG 7 8 2 BF 7 10 3 BG 8 6 4 BF 5 6 5 MF 7 9 6 MC 6 6 7 MC 9 10
يوضح التعليمة البرمجية التالية كيفية التجميع حسب أعمدة “الفريق” و”المنصب” والعثور على متوسط التمريرات:
df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () team position assists mean 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
يخبرنا الإخراج:
- متوسط التمريرات الحاسمة للاعبين في المركز G من الفريق A هو 5.0 .
- متوسط التمريرات الحاسمة للاعبين في المركز F في الفريق B هو 6.0 .
- متوسط التمريرات الحاسمة للاعبين في المركز G من الفريق B هو 7.5 .
وما إلى ذلك وهلم جرا.
يمكننا أيضًا استخدام الكود التالي لإعادة تسمية أعمدة DataFrame الناتجة:
#group by team and position and find mean assists new = df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () #rename columns new.columns = ['team', 'pos', 'mean_assists'] #view DataFrame print (new) team pos mean_assists 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
مثال 2: التجميع حسب عمودين والعثور على إحصائيات متعددة
لنفترض أننا نستخدم نفس الباندا DataFrame كما في المثال السابق:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})
يوضح التعليمة البرمجية التالية كيفية العثور على المتوسط والحد الأقصى لعدد الكرات المرتدة، مجمعة في عمودي “الفريق” و”الموضع”:
df. groupby (['team', 'position']). agg ({'rebounds': ['median', 'max']}). reset_index () team position rebounds median max 0 A G 11 11 1 B F 8 10 2 B G 7 8 3 M C 8 10 4 M F 9 9
يخبرنا الإخراج:
- متوسط المرتدات للاعبين في المركز G في الفريق A هو 11 .
- الحد الأقصى للمرتدات للاعبين في المركز G من فريق A هو 11 .
- متوسط المرتدات للاعبين في المركز F لفريق B هو 8 .
- الحد الأقصى للمرتدات للاعبين في المركز F من فريق B هو 10 .
وما إلى ذلك وهلم جرا.
مصادر إضافية
كيفية تصفية Pandas DataFrame بشروط متعددة
كيفية حساب القيم المفقودة في Pandas DataFrame
كيفية تكديس إطارات بيانات Pandas المتعددة