2013-02-28 5 views
20

मेरे पास डेटा फ्रेम है और मैं जानना चाहता हूं कि दिए गए कॉलम में कितनी बार सबसे अधिक मूल्य होता है। मैंकॉलम में सबसे अधिक मूल्यवान मूल्य की संख्या कैसे प्राप्त करें?

items_counts = df['item'].value_counts() 
max_item = items_counts.max() 

नतीजतन:

मैं निम्नलिखित तरीके से करने की कोशिश

ValueError: cannot convert float NaN to integer 

जहां तक ​​मैं समझता हूँ, पहली पंक्ति के साथ मैं श्रृंखला प्राप्त है, जिसमें कॉलम से मानों का उपयोग कुंजी के रूप में किया जाता है और इन मानों की आवृत्ति मान के रूप में उपयोग की जाती है। इसलिए, मुझे श्रृंखला में सबसे बड़ा मूल्य खोजने की जरूरत है और, किसी कारण से, यह काम नहीं करता है। क्या कोई जानता है कि इस समस्या को कैसे हल किया जा सकता है?

+0

क्या आपके कॉलम में 'na' है? यदि ऐसा है तो आपको उन्हें 'ड्रॉपना' या 'भरना' से छुटकारा पाना चाहिए। – beardc

उत्तर

22

ऐसा लगता है कि आपके पास कॉलम में कुछ नल हो सकते हैं। आप उन्हें df = df.dropna(subset=['item']) से छोड़ सकते हैं। फिर df['item'].value_counts().max() आपको अधिकतम गणना देनी चाहिए, और df['item'].value_counts().idxmax() आपको सबसे अधिक मूल्य प्रदान करना चाहिए।

+0

और ... क्या मैं ऐसा कर सकता हूं ताकि एनए को मूल्य के रूप में गिना जा सके? अर्थात। मुझे एनए वापस करने में खुशी है अगर यह सबसे आम मूल्य है। –

+0

@FullDecent '.dropna()' के बजाय '.fillna()' का उपयोग करें। – beardc

8

आप scipy के mode फ़ंक्शन का उपयोग करने पर भी विचार कर सकते हैं जो NaN को अनदेखा करता है।

from scipy.stats import mode 
from numpy import nan 
df = DataFrame({"a": [1,2,2,4,2], "b": [nan, nan, nan, 3, 3]}) 
print mode(df) 

उत्पादन की तरह

(array([[ 2., 3.]]), array([[ 3., 2.]])) 

लगेगा जिसका अर्थ है कि सबसे आम मूल्यों पल के लिए पहले कॉलम के लिए 2 और 3 हैं, आवृत्तियों 3 और 2 साथ: इसे का उपयोग एक समाधान की तरह लग सकता है क्रमशः।

7

@jonathanrocher उत्तर जारी रखने के लिए आप पांडा डेटाफ्रेम में mode का उपयोग कर सकते हैं। यह पंक्तियों या स्तंभों में सबसे अधिक लगातार मूल्य (एक या दो) प्रदान करेगा:

import pandas as pd 
import numpy as np 
df = pd.DataFrame({"a": [1,2,2,4,2], "b": [np.nan, np.nan, np.nan, 3, 3]}) 

In [2]: df.mode() 
Out[2]: 
    a b 
0 2 3.0 
संबंधित मुद्दे