كيفية تطبيق وظيفة على pandas groupby


يمكنك استخدام بناء الجملة الأساسي التالي لاستخدام وظائف groupby() و application() معًا في pandas DataFrame:

 df. groupby (' var1 '). apply ( lambda x: some function)

توضح الأمثلة التالية كيفية استخدام بناء الجملة هذا عمليًا مع الباندا DataFrame التالية:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points_for ': [18, 22, 19, 14, 11, 20, 28],
                   ' points_against ': [14, 21, 19, 14, 12, 20, 21]})

#view DataFrame
print (df)

  team points_for points_against
0 to 18 14
1 To 22 21
2 A 19 19
3 B 14 14
4 B 11 12
5 B 20 20
6 B 28 21

مثال 1: استخدم groupby() و application() للعثور على الترددات النسبية

يوضح التعليمة البرمجية التالية كيفية استخدام وظائف groupby( ) و application() للعثور على الترددات النسبية لكل اسم فريق في pandas DataFrame:

 #find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])

team
A 0.428571
B 0.571429
dtype:float64

من النتيجة، يمكننا أن نرى أن الفريق “أ” يظهر في 42.85% من جميع الصفوف، والفريق “ب” يظهر في 57.14% من جميع الصفوف.

مثال 2: استخدم groupby() و application() للعثور على القيم القصوى

يوضح الكود التالي كيفية استخدام الدالتين groupby( ) و application() للعثور على الحد الأقصى لقيم “points_for” لكل فريق:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())

team
At 22
B28
dtype: int64

من النتيجة، يمكننا أن نرى أن الحد الأقصى للنقاط التي سجلها الفريق أ هو 22 والحد الأقصى للنقاط التي سجلها الفريق ب هو 28.

المثال 3: استخدم groupby() وapply() لإجراء عملية حسابية مخصصة

يوضح التعليمة البرمجية التالية كيفية استخدام الدالتين groupby( ) و application() للعثور على متوسط الفرق بين “points_for” و”points_against” لكل فريق:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())

team
A 1.666667
B 1.500000
dtype:float64

من النتائج يمكننا أن نرى أن متوسط الفارق بين “النقاط لصالح” و”النقاط ضد” هو 1.67 للفريق “أ” و 1.50 للفريق “ب”.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في الباندا:

كيفية إجراء مجموع GroupBy في Pandas
كيفية استخدام Groupby وPlot في Pandas
كيفية حساب القيم الفريدة باستخدام GroupBy في Pandas

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *