groupby("x").count
और groupby("x").size
पंडों में क्या अंतर है ?
क्या आकार सिर्फ नील को बाहर करता है?
groupby("x").count
और groupby("x").size
पंडों में क्या अंतर है ?
क्या आकार सिर्फ नील को बाहर करता है?
जवाबों:
size
NaN
मूल्य शामिल हैं, 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
पांडा में आकार और गणना के बीच क्या अंतर है?
अन्य जवाबों ने अंतर को इंगित किया है, हालांकि, यह कहना पूरी तरह से सटीक नहीं है कि " size
NaNs को गिनता है जबकि 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