मुझे पंडों की पंक्ति संख्या कैसे मिलती है DataFrame?
यह तालिका उन विभिन्न स्थितियों को संक्षेप में बताती है जिनमें आप डेटाफ्रेम (या पूर्णता के लिए श्रृंखला), अनुशंसित विधि (ओं) के साथ कुछ गिनना चाहते हैं।

फुटनोट
DataFrame.countप्रत्येक कॉलम के लिए रिटर्न मायने रखता है Seriesक्योंकि गैर-शून्य गणना कॉलम से भिन्न होती है।
DataFrameGroupBy.sizeरिटर्न Series, एक ही समूह में सभी कॉलम एक ही पंक्ति-गिनती साझा करते हैं।
DataFrameGroupBy.countDataFrameगैर-शून्य गणना के बाद से एक ही समूह में कॉलम भर में भिन्न हो सकता है। किसी विशिष्ट कॉलम के लिए समूह-वार गैर-शून्य गणना प्राप्त करने के लिए, df.groupby(...)['x'].count()जहां "x" गणना करने के लिए कॉलम है, का उपयोग करें ।
न्यूनतम कोड उदाहरण
नीचे, मैं ऊपर दी गई तालिका में वर्णित प्रत्येक विधियों के उदाहरण दिखाता हूं। सबसे पहले, सेटअप -
df = pd.DataFrame({
'A': list('aabbc'), 'B': ['x', 'x', np.nan, 'x', np.nan]})
s = df['B'].copy()
df
A B
0 a x
1 a x
2 b NaN
3 b x
4 c NaN
s
0 x
1 x
2 NaN
3 x
4 NaN
Name: B, dtype: object
एक DataFrame की पंक्ति गणना: len(df), df.shape[0], याlen(df.index)
len(df)
# 5
df.shape[0]
# 5
len(df.index)
# 5
यह निरंतर समय के संचालन के प्रदर्शन की तुलना करने के लिए मूर्खतापूर्ण लगता है, खासकर जब अंतर "गंभीरता से, इसके बारे में चिंता न करें" के स्तर पर है। लेकिन यह अन्य उत्तरों के साथ एक प्रवृत्ति प्रतीत होती है, इसलिए मैं पूर्णता के लिए भी ऐसा ही कर रहा हूं।
उपरोक्त 3 विधियों में से, len(df.index)(जैसा कि अन्य उत्तरों में उल्लेख किया गया है) सबसे तेज़ है।
ध्यान दें
- उपरोक्त सभी विधियां निरंतर समय संचालन हैं क्योंकि वे सरल विशेषता लुकअप हैं।
df.shape(इसी तरह ndarray.shape) एक विशेषता है जो एक टपल देता है (# Rows, # Cols)। उदाहरण के लिए, उदाहरण के लिए यहां df.shapeलौटता (8,
2)है।
स्तंभ एक DataFrame की गणना: df.shape[1],len(df.columns)
df.shape[1]
# 2
len(df.columns)
# 2
के अनुरूप len(df.index), len(df.columns)दो विधियों का तेज है (लेकिन टाइप करने के लिए अधिक वर्ण लेता है)।
पंक्ति एक श्रृंखला की गणना: len(s), s.size,len(s.index)
len(s)
# 5
s.size
# 5
len(s.index)
# 5
s.sizeऔर len(s.index)गति के संदर्भ में समान हैं। लेकिन मैं सलाह देता हूं len(df)।
नोट
size एक विशेषता है, और यह तत्वों की संख्या (किसी भी श्रृंखला के लिए पंक्तियों की गिनती) को लौटाता है। DataFrames भी एक आकार विशेषता को परिभाषित करता है जो उसी के समान परिणाम देता है df.shape[0] * df.shape[1]।
गैर-नल पंक्ति गणना: DataFrame.countऔरSeries.count
यहां बताए गए तरीके केवल गैर-शून्य मानों की गणना करते हैं (जिसका अर्थ है NaNs की अनदेखी)।
कॉलिंग प्रत्येक कॉलम के DataFrame.countलिए गैर-NaN काउंट लौटाएगी :
df.count()
A 5
B 3
dtype: int64
श्रृंखला के लिए, Series.countसमान प्रभाव का उपयोग करें:
s.count()
# 3
समूहवार पंक्ति गणना: GroupBy.size
के लिए DataFrames, DataFrameGroupBy.sizeप्रति समूह पंक्तियों की संख्या गिनने के लिए उपयोग करें।
df.groupby('A').size()
A
a 2
b 2
c 1
dtype: int64
इसी तरह, Seriesआप उपयोग करेंगे SeriesGroupBy.size।
s.groupby(df.A).size()
A
a 2
b 2
c 1
Name: B, dtype: int64
दोनों मामलों में, एक Seriesवापस कर दिया जाता है। यह तब तक के लिए समझ में आता है DataFramesजब से सभी समूह एक ही पंक्ति-गणना साझा करते हैं।
समूह-वार गैर-नल पंक्ति गणना: GroupBy.count
उपरोक्त के समान, लेकिन उपयोग करें GroupBy.count, नहीं GroupBy.size। ध्यान दें कि sizeहमेशा एक रिटर्न देता है Series, जबकि countरिटर्न Seriesअगर एक विशिष्ट कॉलम पर कहा जाता है, या फिर ए DataFrame।
निम्नलिखित तरीके एक ही चीज़ लौटाते हैं:
df.groupby('A')['B'].size()
df.groupby('A').size()
A
a 2
b 2
c 1
Name: B, dtype: int64
इस बीच, के लिए count, हमारे पास है
df.groupby('A').count()
B
A
a 2
b 1
c 0
... पूरे GroupBy ऑब्जेक्ट, v / s पर कॉल किया गया,
df.groupby('A')['B'].count()
A
a 2
b 1
c 0
Name: B, dtype: int64
एक विशिष्ट कॉलम पर कॉल किया गया।