जवाबों:
आप इस तरह पंक्तियों पर एक गिनती लागू कर सकते हैं:
test_df.apply(lambda x: x.count(), axis=1)
test_df:
A B C
0: 1 1 3
1: 2 nan nan
2: nan nan nan
उत्पादन:
0: 3
1: 1
2: 0
आप परिणाम को इस तरह एक कॉलम के रूप में जोड़ सकते हैं:
test_df['full_count'] = test_df.apply(lambda x: x.count(), axis=1)
परिणाम:
A B C full_count
0: 1 1 3 3
1: 2 nan nan 1
2: nan nan nan 0
पांडा का उपयोग करते समय, सहित एक पाश, में प्रदर्शन के संचालन से बचने की कोशिश apply
, map
, applymap
आदि यही कारण है कि धीमी गति से है!
यदि आप प्रत्येक कॉलम में लापता मानों को गिनना चाहते हैं, तो कोशिश करें:
df.isnull().sum()
या df.isnull().sum(axis=0)
दूसरी ओर, आप प्रत्येक पंक्ति में (जो आपका प्रश्न है) गिन सकते हैं:
df.isnull().sum(axis=1)
जन वैन डेर वेज के समाधान की तुलना में यह लगभग 10 गुना तेज है (बीटीडब्ल्यू वह मान्य मानों को गिनता है, बजाय लापता मानों के)
In [18]: %timeit -n 1000 df.apply(lambda x: x.count(), axis=1)
1000 loops, best of 3: 3.31 ms per loop
In [19]: %timeit -n 1000 df.isnull().sum(axis=1)
1000 loops, best of 3: 329 µs per loop
सरल तरीका:
df.isnull().sum(axis=1)
या, आप डेटाफ़्रेम ऑब्जेक्ट्स के लिए बस सूचना पद्धति का उपयोग कर सकते हैं:
df.info()
जो प्रत्येक कॉलम के लिए गैर-शून्य मानों की गिनती प्रदान करता है।
स्तंभ के साथ शून्य मान,
df.isnull().sum(axis=0)
कॉलम के साथ रिक्त मान,
c = (df == '').sum(axis=0)
पंक्ति के साथ शून्य मान,
df.isnull().sum(axis=1)
पंक्ति के साथ रिक्त मान,
c = (df == '').sum(axis=1)
यह स्निपेट अनुपलब्ध मान के साथ कुल स्तंभों का पूर्णांक मान लौटाएगा:
(df.isnull().sum() > 0).astype(np.int64).sum()
>>> df = pd.DataFrame([[1, 2, np.nan],
... [np.nan, 3, 4],
... [1, 2, 3]])
>>> df
0 1 2
0 1 2 NaN
1 NaN 3 4
2 1 2 3
>>> df.count(axis=1)
0 2
1 2
2 3
dtype: int64