जवाबों:
आप इस तरह पंक्तियों पर एक गिनती लागू कर सकते हैं:
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