الباندا: استخدم groupby لحساب المتوسط وعدم تجاهل nans


عند استخدام وظيفة pandas groupby() للتجميع حسب عمود واحد وحساب متوسط قيمة عمود آخر، ستتجاهل الباندا قيم NaN بشكل افتراضي.

إذا كنت تريد بدلاً من ذلك عرض NaN إذا كانت هناك قيم NaN موجودة في عمود، فيمكنك استخدام بناء الجملة الأساسي التالي:

 df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})

سيقوم هذا المثال المحدد بتجميع صفوف DataFrame حسب عمود الفريق ثم حساب متوسط قيمة عمود النقاط دون تجاهل قيم NaN .

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

مثال: استخدم pandas groupby() ولا تتجاهل NaNs

لنفترض أن لدينا DataFrame الباندا التالية التي تحتوي على معلومات حول مختلف لاعبي كرة السلة:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [15, np.nan, 24, 25, 20, 35, 34, 19, 14, 12]})

#view DataFrame
print (df)

  team points
0 to 15.0
1 A NaN
2 A 24.0
3 A 25.0
4 A 20.0
5 B 35.0
6 B 34.0
7B 19.0
8B 14.0
9B 12.0

لنفترض أننا نستخدم الصيغة التالية لحساب متوسط قيمة النقاط ، مجمعة حسب الفريق :

 #calculate mean of points, grouped by team
df. groupby (' team ')[' points ']. mean ()

team
At 21.0
B 22.8
Name: points, dtype: float64

لاحظ أنه يتم إرجاع متوسط قيمة النقاط لكل فريق ، حتى إذا كانت هناك قيمة NaN للفريق A في عمود النقاط.

افتراضيًا، تتجاهل الباندا ببساطة قيمة NaN عند حساب المتوسط.

إذا كنت تريد بدلاً من ذلك عرض NaN كقيمة متوسطة في حالة وجود NaNs بالفعل، فيمكنك استخدام بناء الجملة التالي:

 #calculate mean points value grouped by team and don't ignore NaNs
df. groupby (' team '). agg ({' points ': lambda x: x. mean (skipna= False )})

      points
team	
To NaN
B 22.8

لاحظ أنه يتم إرجاع قيمة NaN كمتوسط قيمة النقطة للفريق A هذه المرة.

باستخدام الوسيطة Skina=False ، طلبنا من الباندا ألا تتجاهل قيم NaN عند حساب المتوسط.

مصادر إضافية

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

كيفية حساب القيم الفريدة باستخدام Pandas GroupBy
كيفية تطبيق وظيفة على Pandas Groupby
كيفية إنشاء قطعة أرض شريطية من Pandas GroupBy

Add a Comment

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