पांडस डेटाफ्रेम में प्रत्येक पंक्ति में लापता मानों की संख्या कैसे गिना जाए?


17

मैं पंडों के डेटाफ्रेम में प्रत्येक पंक्ति में लापता मूल्य की संख्या कैसे प्राप्त कर सकता हूं। मैं डेटाफ़्रेम को अलग-अलग डेटाफ़्रेमों में विभाजित करना चाहूंगा जिनके पास प्रत्येक पंक्ति में समान संख्या में लापता मान हैं।

कोई उपाय?

जवाबों:


19

आप इस तरह पंक्तियों पर एक गिनती लागू कर सकते हैं:

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

पूरी तरह से काम किया! धन्यवाद।
कागल जूल

41

पांडा का उपयोग करते समय, सहित एक पाश, में प्रदर्शन के संचालन से बचने की कोशिश 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


4

या, आप डेटाफ़्रेम ऑब्जेक्ट्स के लिए बस सूचना पद्धति का उपयोग कर सकते हैं:

df.info()

जो प्रत्येक कॉलम के लिए गैर-शून्य मानों की गिनती प्रदान करता है।


2

स्तंभ के साथ शून्य मान,

df.isnull().sum(axis=0)

कॉलम के साथ रिक्त मान,

c = (df == '').sum(axis=0)

पंक्ति के साथ शून्य मान,

df.isnull().sum(axis=1)

पंक्ति के साथ रिक्त मान,

c = (df == '').sum(axis=1)


-1
>>> 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

-1

यदि आप लापता मानों की गिनती चाहते हैं:

np.logical_not(df.isnull()).sum()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.