पायथन में आउटलेर्स कैसे हटाएं
आउटलायर एक ऐसा अवलोकन है जो डेटा सेट में अन्य मानों से असामान्य रूप से दूर होता है। आउटलेर्स समस्याग्रस्त हो सकते हैं क्योंकि वे विश्लेषण के परिणामों को प्रभावित कर सकते हैं।
यह ट्यूटोरियल बताता है कि पायथन में आउटलेर्स को कैसे पहचाना और हटाया जाए।
पायथन में आउटलेर्स की पहचान कैसे करें
इससे पहले कि आप आउटलेयर को हटा सकें, आपको पहले यह तय करना होगा कि आप किसे आउटलेयर मानते हैं। ऐसा करने के दो सामान्य तरीके हैं:
1. अंतरचतुर्थक श्रेणी का उपयोग करें।
इंटरक्वेर्टाइल रेंज (IQR) एक डेटा सेट में 75वें प्रतिशतक (Q3) और 25वें प्रतिशतक (Q1) के बीच का अंतर है। यह औसत 50% मूल्यों के वितरण को मापता है।
आप एक अवलोकन को बाह्य के रूप में परिभाषित कर सकते हैं यदि यह तीसरे चतुर्थक (Q3) के ऊपर अंतरचतुर्थक सीमा का 1.5 गुना है या पहले चतुर्थक (Q1) के नीचे अंतरचतुर्थक सीमा का 1.5 गुना है।
आउटलेयर = अवलोकन > Q3 + 1.5*IQR या Q1 – 1.5*IQR
2. z-स्कोर का प्रयोग करें.
एक z-स्कोर आपको बताता है कि दिया गया मान माध्य से कितने मानक विचलन है। हम z-स्कोर की गणना के लिए निम्नलिखित सूत्र का उपयोग करते हैं:
z = (एक्स – μ) / σ
सोना:
- X एकल कच्चा डेटा मान है
- μ जनसंख्या माध्य है
- σ जनसंख्या मानक विचलन है
आप किसी अवलोकन को आउटलायर के रूप में परिभाषित कर सकते हैं यदि उसका z-स्कोर -3 से कम या 3 से अधिक है।
आउटलेयर = z-स्कोर वाले अवलोकन > 3 या < -3
पायथन में आउटलेर्स कैसे हटाएं
एक बार जब आप तय कर लेते हैं कि आप किसे बाहरी मानते हैं, तो आप उन्हें पहचान सकते हैं और डेटासेट से हटा सकते हैं। यह कैसे करें यह समझाने के लिए, हम निम्नलिखित पांडा डेटाफ़्रेम का उपयोग करेंगे:
import numpy as np import pandas as pd import scipy.stats as stats #create dataframe with three columns 'A', 'B', 'C' np.random.seed(10) data = pd.DataFrame(np.random.randint(0, 10, size=(100, 3)), columns=['A', 'B', 'C']) #view first 10 rows data[:10] ABC 0 13.315865 7.152790 -15.454003 1 -0.083838 6.213360 -7.200856 2 2.655116 1.085485 0.042914 3 -1.746002 4.330262 12.030374 4 -9.650657 10.282741 2.286301 5 4.451376 -11.366022 1.351369 6 14.845370 -10.798049 -19.777283 7 -17.433723 2.660702 23.849673 8 11.236913 16.726222 0.991492 9 13.979964 -2.712480 6.132042
फिर हम z-स्कोर विधि या इंटरक्वेर्टाइल रेंज विधि का उपयोग करके आउटलेर्स को परिभाषित और हटा सकते हैं:
Z-स्कोर विधि:
#find absolute value of z-score for each observation z = np.abs(stats.zscore(data)) #only keep rows in dataframe with all z-scores less than absolute value of 3 data_clean = data[(z<3).all(axis=1)] #find how many rows are left in the dataframe data_clean.shape (99.3)
अंतरचतुर्थक श्रेणी विधि:
#find Q1, Q3, and interquartile range for each column Q1 = data.quantile(q=.25) Q3 = data.quantile(q=.75) IQR = data.apply(stats.iqr) #only keep rows in dataframe that have values within 1.5*IQR of Q1 and Q3 data_clean = data[~((data < (Q1-1.5*IQR)) | (data > (Q3+1.5*IQR))).any(axis=1)] #find how many rows are left in the dataframe data_clean.shape (89.3)
हम देख सकते हैं कि za स्कोर विधि ने एक अवलोकन को आउटलेयर के रूप में पहचाना और हटा दिया, जबकि इंटरक्वेर्टाइल रेंज विधि ने कुल मिलाकर 11 अवलोकनों को आउटलेयर के रूप में पहचाना और हटा दिया।
आउटलेर्स को कब हटाना है
यदि आपके डेटा में एक या अधिक आउटलेयर मौजूद हैं, तो आपको पहले यह सुनिश्चित करना होगा कि वे डेटा प्रविष्टि त्रुटि का परिणाम नहीं हैं। कभी-कभी कोई व्यक्ति डेटा सहेजते समय गलत डेटा मान दर्ज कर देता है।
यदि आउटलेयर डेटा प्रविष्टि त्रुटि का परिणाम बनता है, तो आप इसे एक नया मान निर्दिष्ट करने का निर्णय ले सकते हैं जैसे कि डेटा सेट का माध्य या माध्यिका ।
यदि मान वास्तव में एक बाहरी है, तो आप इसे हटाने का विकल्प चुन सकते हैं यदि इसका आपके समग्र विश्लेषण पर महत्वपूर्ण प्रभाव पड़ेगा। बस अपनी अंतिम रिपोर्ट या विश्लेषण में यह उल्लेख करना सुनिश्चित करें कि आपने एक बाहरी चीज़ हटा दी है।
अतिरिक्त संसाधन
यदि आप एक साथ कई वेरिएबल्स के साथ काम कर रहे हैं, तो आप आउटलेर्स का पता लगाने के लिए महालनोबिस दूरी का उपयोग करना चाह सकते हैं।