Mohamed Elnemr نشر 7 سبتمبر 2021 أرسل تقرير نشر 7 سبتمبر 2021 أريد أن أعرف الفرق بين الدالة groupby("x").count و groupby("x").size 1 اقتباس
0 Ali Haidar Ahmad نشر 8 سبتمبر 2021 أرسل تقرير نشر 8 سبتمبر 2021 size و count كل منهما يستخدم من أجل أغراض مختلفة. size هو attribute تقوم بحساب حجم (أو طول) الكائن الذي تم استدعاؤه عليه. وبطبيعة الحال يتضمن هذا أيضاً الصفوف / القيم التي هي NaN. أما count فهو تابع مهمته عد الخلايا التي ليست NaN لكل عمود أو صف. import pandas as pd import numpy as np df = pd.DataFrame({'col': ['x', np.nan, 'x']}) df """ col 0 x 1 NaN 2 x """ df.col.size # 3 df.col.count() # 2 nan لم يحسب ال أيضاً هناك اختلاف في بنية الناتج عند استدعاء GroupBy.size و GroupBy.count. حيث أن GroupBy.count تعيد DataFrame أما GroupBy.siz تعيد series: import pandas as pd import numpy as np df = pd.DataFrame({ 'gb': list('aaab'), 'col': ['x', np.nan, 'x',"x"]}) df """ gb col 0 a x 1 a NaN 2 a x 3 b x """ df.groupby('gb').size() """ gb a 3 b 1 dtype: int64 """ df.groupby('gb').count() """ col gb a 2 b 1 """ type(df.groupby('gb').count()) # pandas.core.frame.DataFrame type(df.groupby('gb').size()) # pandas.core.series.Series هناك اختلاف أخير عند استخدامنا ل pivot_table. لنفترض أننا نود حساب ال cross tabulation لـلداتافريم التالي: df """ A B 0 0 1 1 0 1 2 1 2 3 0 2 4 0 0 """ pd.crosstab(df.A, df.B) """ B 0 1 2 A 0 1 2 1 1 0 0 1 """ #يمكنك عرض الحجم pivot_table باستخدام df.pivot_table(index='A', columns='B', aggfunc='size', fill_value=0) """ B 0 1 2 A 0 1 2 1 1 0 0 1 """ #لايعمل هنا حيث يتم إرجاع داتافريم فارغ count لكن df.pivot_table(index='A', columns='B', aggfunc='count') """ Empty DataFrame Columns: [] Index: [0, 1] """ اقتباس
0 Ahmed Sharshar نشر 7 سبتمبر 2021 أرسل تقرير نشر 7 سبتمبر 2021 الفرق المحوري بين الدالتين أن size يمكن أن تحتوي على NaN اما count فلا،أنظر المثال التالي للتوضيح أكثر: In [1]: df = pd.DataFrame({'x':[0,1,2,2], 'y':[1,2,4,np.NaN], 'z':np.random.randn(4)}) df Out[46]: a b c 0 0 1 1.067627 1 1 2 0.458084 2 2 NaN -2.238091 3 2 4 1.256943 In [2]: print(df.groupby(['x'])['y'].count()) x 0 1 1 1 2 1 In [3]: print(df.groupby(['x'])['y'].size()) x 0 1 1 1 2 2 لاحظ أنه في count لم يقم بعَد ال NaN بينما قام بعَدها في size. 1 اقتباس
السؤال
Mohamed Elnemr
أريد أن أعرف الفرق بين الدالة
groupby("x").count
و
groupby("x").size
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.