मैं numpy
का उपयोग करके अजगर में मानों की एक सरणी के लिए चतुर्थक की गणना करने का प्रयास कर रहा हूं।
X = [1, 1, 1, 3, 4, 5, 5, 7, 8, 9, 10, 1000]
मैं निम्नलिखित करूँगा:
quartiles = np.percentile(X, range(0, 100, 25))
quartiles
# array([1. , 2.5 , 5. , 8.25])
लेकिन यह गलत है, क्योंकि पहला और तीसरा चतुर्थक क्रमशः 2 और 8.5 होना चाहिए।
इसे निम्नलिखित के रूप में दिखाया जा सकता है:
Q1 = np.median(X[:len(X)/2])
Q3 = np.median(X[len(X):])
Q1, Q3
# (2.0, 8.5)
एक अलग उत्तर देने के लिए np.percentile
क्या कर रहा है, इसके बारे में मैं सोच नहीं पा रहा हूं। इस पर कोई प्रकाश डाला जाए, मैं इसके लिए बहुत आभारी रहूंगा।
1 उत्तर
कोई सही या गलत नहीं है, लेकिन पर्सेंटाइल की गणना के बस अलग-अलग तरीके हैं। पर्सेंटाइल निरंतर मामले में एक अच्छी तरह से परिभाषित अवधारणा है, असतत नमूनों के लिए कम: विभिन्न तरीकों से बहुत बड़ी संख्या में अवलोकनों के लिए कोई फर्क नहीं पड़ेगा (की तुलना में डुप्लिकेट की संख्या), लेकिन वास्तव में छोटे नमूनों के लिए महत्वपूर्ण हो सकता है और आपको यह पता लगाने की आवश्यकता है कि मामले के आधार पर क्या अधिक समझ में आता है।
वांछित आउटपुट प्राप्त करने के लिए, आपको पर्सेंटाइल फ़ंक्शन में इंटरपोलेशन = 'मिडपॉइंट' निर्दिष्ट करना चाहिए:
quartiles = np.percentile(X, range(0, 100, 25), interpolation = 'midpoint')
quartiles # array([ 1. , 2. , 5. , 8.5])
मेरा सुझाव है कि आप दस्तावेज़ों पर एक नज़र डालें http: //docs.scipy.org/doc/numpy/reference/generated/numpy.percentile.html
संबंधित सवाल
नए सवाल
python-3.x
पायथन प्रोग्रामिंग के बारे में प्रश्नों के लिए जो भाषा के संस्करण 3+ के लिए विशिष्ट हैं। सभी पायथन सवालों पर अधिक जेनेरिक [अजगर] टैग का उपयोग करें, और केवल यह जोड़ें यदि आपका प्रश्न संस्करण-विशिष्ट है। पायथन 2 प्रश्नों के लिए [अजगर -2] टैग का उपयोग करें।