2015-12-30 8 views
5

पांडा डेटाफ्रेम में (संख्या नहीं) नैन मानों के लिए खाते का सबसे अच्छा तरीका क्या है?पांडा डेटाफ्रेम में नैन मानों को कैसे गिनें?

निम्नलिखित कोड:

import numpy as np 
import pandas as pd 
dfd = pd.DataFrame([1, np.nan, 3, 3, 3, np.nan], columns=['a']) 
dfv = dfd.a.value_counts().sort_index() 
print("nan: %d" % dfv[np.nan].sum()) 
print("1: %d" % dfv[1].sum()) 
print("3: %d" % dfv[3].sum()) 
print("total: %d" % dfv[:].sum()) 

आउटपुट:

nan: 0 
1: 1 
3: 3 
total: 4 

जबकि वांछित आउटपुट है:

nan: 2 
1: 1 
3: 3 
total: 6 

मैं पांडा 0.17 उपयोग कर रहा हूँ अजगर 3.5.0 के साथ एनाकोंडा 2.4 के साथ .0।

उत्तर

2

बताएँ value_countsनहीं dropna=False की स्थापना करके NaN मूल्यों ड्रॉप करने (0.14.1 में जोड़ा):

dfv = dfd['a'].value_counts(dropna=False) 

यह कॉलम में लापता मूल्यों की अनुमति देता है भी गिना जा रहे हैं:

3  3 
NaN 2 
1  1 
Name: a, dtype: int64 

आपके शेष कोड को तब काम करना चाहिए जब आप उम्मीद करते हैं (ध्यान दें कि sum पर कॉल करना आवश्यक नहीं है; बस print("nan: %d" % dfv[np.nan]) पर्याप्तताएं)।

+0

और() गिनता सभी मूल्यों ऊपर dfv.values.sum विधि का उपयोग कर के बाद से, यानी धन्यवाद। ;) – SpeedCoder5

+0

कोई समस्या नहीं! हाँ, यह काम करता है। वास्तव में, आप सभी मानों को गिनने के लिए बस 'dfv.sum() 'लिख सकते हैं। या इससे भी अधिक कुशलता से, बस 'लेन (डीएफडी) 'की जांच करें। –

11

सिर्फ शून्य मान गिनती के लिए, आपको isnull() उपयोग कर सकते हैं:

In [11]: 
dfd.isnull().sum() 

Out[11]: 
a 2 
dtype: int64 

यहाँ a स्तंभ नाम है, और कॉलम में शून्य मान के 2 घटनाओं रहे हैं।

संबंधित मुद्दे