groupby("x").countऔर groupby("x").sizeपंडों में क्या अंतर है ?
क्या आकार सिर्फ नील को बाहर करता है?
groupby("x").countऔर groupby("x").sizeपंडों में क्या अंतर है ?
क्या आकार सिर्फ नील को बाहर करता है?
जवाबों:
sizeNaNमूल्य शामिल हैं, countनहीं:
In [46]:
df = pd.DataFrame({'a':[0,0,1,2,2,2], 'b':[1,2,3,4,np.NaN,4], 'c':np.random.randn(6)})
df
Out[46]:
a b c
0 0 1 1.067627
1 0 2 0.554691
2 1 3 0.458084
3 2 4 0.426635
4 2 NaN -2.238091
5 2 4 1.256943
In [48]:
print(df.groupby(['a'])['b'].count())
print(df.groupby(['a'])['b'].size())
a
0 2
1 1
2 2
Name: b, dtype: int64
a
0 2
1 1
2 3
dtype: int64
पांडा में आकार और गणना के बीच क्या अंतर है?
अन्य जवाबों ने अंतर को इंगित किया है, हालांकि, यह कहना पूरी तरह से सटीक नहीं है कि " sizeNaNs को गिनता है जबकि countनहीं करता है"। जबकि sizeवास्तव में Nans गिनती करता है, यह वास्तव में तथ्य यह है कि का परिणाम है sizeरिटर्न आकार वस्तु के (या लंबाई) इसे कहा जाता । स्वाभाविक रूप से, इसमें पंक्तियाँ / मूल्य भी शामिल हैं जो NaN हैं।
इसलिए, संक्षेप में, sizeश्रृंखला / DataFrame 1 का आकार लौटाता है ,
df = pd.DataFrame({'A': ['x', 'y', np.nan, 'z']})
df
A
0 x
1 y
2 NaN
3 z
df.A.size
# 4
... जबकि countगैर-NaN मान गिना जाता है:
df.A.count()
# 3
ध्यान दें कि sizeएक विशेषता है ( len(df)या के रूप में एक ही परिणाम देता है len(df.A))। countएक समारोह है।
1. DataFrame.sizeभी एक विशेषता है और DataFrame (पंक्तियों x कॉलम) में तत्वों की संख्या लौटाता है।
GroupBy- आउटपुट संरचनामूल अंतर के अलावा, GroupBy.size()बनाम कॉल करते समय उत्पन्न आउटपुट की संरचना में भी अंतर है GroupBy.count()।
df = pd.DataFrame({'A': list('aaabbccc'), 'B': ['x', 'x', np.nan, np.nan, np.nan, np.nan, 'x', 'x']})
df
A B
0 a x
1 a x
2 a NaN
3 b NaN
4 b NaN
5 c NaN
6 c x
7 c x
विचार करें,
df.groupby('A').size()
A
a 3
b 2
c 3
dtype: int64
बनाम,
df.groupby('A').count()
B
A
a 2
b 0
c 2
GroupBy.countजब आप countसभी स्तंभ पर कॉल करते हैं, तो एक DataFrame देता है , जबकि GroupBy.sizeएक श्रृंखला देता है।
इसका कारण यह sizeहै कि सभी स्तंभों के लिए समान है, इसलिए केवल एक ही परिणाम लौटाया जाता है। इस बीच, countप्रत्येक कॉलम के लिए कॉल किया जाता है, क्योंकि परिणाम इस पर निर्भर करेगा कि प्रत्येक कॉलम में कितने NaN हैं।
pivot_tableएक और उदाहरण है कि pivot_tableइस डेटा का व्यवहार कैसे किया जाता है । मान लीजिए कि हम क्रॉस के सारणीकरण की गणना करना चाहते हैं
df
A B
0 0 1
1 0 1
2 1 2
3 0 2
4 0 0
pd.crosstab(df.A, df.B) # Result we expect, but with `pivot_table`.
B 0 1 2
A
0 1 2 1
1 0 0 1
के साथ pivot_table, आप जारी कर सकते हैं size:
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]
मेरा मानना है कि इसका कारण यह है कि 'count'उस श्रृंखला पर किया जाना चाहिए जो valuesतर्क के लिए पारित हो जाती है, और जब कुछ भी पारित नहीं होता है, तो पांडा बिना किसी धारणा के निर्णय लेते हैं।
केवल @ Edchum के उत्तर में थोड़ा सा जोड़ने के लिए, भले ही डेटा में कोई NA मान न हो, गणना का परिणाम () अधिक क्रिया है, पहले उदाहरण का उपयोग करते हुए:
grouped = df.groupby('a')
grouped.count()
Out[197]:
b c
a
0 2 2
1 1 1
2 2 3
grouped.size()
Out[198]:
a
0 2
1 1
2 3
dtype: int64
sizeहै countकि पंडों में सुरुचिपूर्ण समान है ।
जब हम सामान्य डेटाफ्रेम के साथ काम कर रहे होते हैं तो केवल अंतर NAN मूल्यों का समावेश होगा, इसका मतलब है कि पंक्तियों की गिनती करते समय NAN मान शामिल नहीं हैं।
लेकिन अगर हम इन कार्यों का उपयोग कर रहे हैं groupby, तो सही परिणाम प्राप्त करने के लिए count()हमें किसी भी संख्यात्मक क्षेत्र को संबद्ध groupbyकरना होगा ताकि उन समूहों की सटीक संख्या प्राप्त की जा सके जहां size()इस प्रकार के संघ की कोई आवश्यकता नहीं है।
उपरोक्त सभी उत्तरों के अलावा, मैं एक और अंतर बताना चाहूंगा जो मुझे महत्वपूर्ण लगता है।
आप पांडा के Datarameआकार को सहसंबंधित कर सकते हैं और जावा के Vectorsआकार और लंबाई के साथ गणना कर सकते हैं । जब हम वेक्टर बनाते हैं तो कुछ पूर्वनिर्धारित मेमोरी इसे आवंटित की जाती है। जब हम तत्वों की संख्या के करीब पहुँचते हैं, तो तत्वों को जोड़ते समय यह कब्जे में आ सकता है, इसके लिए अधिक मेमोरी आवंटित की जाती है। इसी तरह, जैसे DataFrameही हम तत्वों को जोड़ते हैं, इसके लिए आवंटित मेमोरी बढ़ जाती है।
आकार विशेषता मेमोरी सेल की संख्या को आवंटित करती है DataFrameजबकि गिनती उन तत्वों की संख्या देती है जो वास्तव में मौजूद हैं DataFrame। उदाहरण के लिए,

आप देख सकते हैं कि इसमें 3 पंक्तियाँ हैं DataFrame, इसका आकार 6 है।
इस उत्तर कवर आकार और के संबंध में गिनती अंतर DataFrameऔर नहीं Pandas Series। मैंने जांच नहीं की है कि क्या होता हैSeries