पायथन में डेटा सफाई की कला में महारत हासिल करना - केडीनगेट्स

पायथन में डेटा सफाई की कला में महारत हासिल करना - केडीनगेट्स

स्रोत नोड: 2939047

पायथन में डेटा सफाई की कला में महारत हासिल करना
लेखक द्वारा छवि
 

डेटा सफ़ाई किसी भी डेटा विश्लेषण प्रक्रिया का एक महत्वपूर्ण हिस्सा है। यह वह चरण है जहां आप त्रुटियां दूर करते हैं, गुम डेटा को संभालते हैं, और सुनिश्चित करते हैं कि आपका डेटा उस प्रारूप में है जिसके साथ आप काम कर सकते हैं। अच्छी तरह से साफ किए गए डेटासेट के बिना, बाद का कोई भी विश्लेषण विकृत या गलत हो सकता है।

यह आलेख आपको पांडा, नम्पी, सीबॉर्न और मैटप्लोटलिब जैसी शक्तिशाली लाइब्रेरी का उपयोग करके पायथन में डेटा सफाई के लिए कई प्रमुख तकनीकों से परिचित कराता है।

डेटा सफ़ाई की प्रक्रिया में उतरने से पहले, आइए इसके महत्व को समझें। वास्तविक दुनिया का डेटा अक्सर गड़बड़ होता है। इसमें डुप्लिकेट प्रविष्टियाँ, गलत या असंगत डेटा प्रकार, अनुपलब्ध मान, अप्रासंगिक सुविधाएँ और आउटलेर शामिल हो सकते हैं। डेटा का विश्लेषण करते समय ये सभी कारक भ्रामक निष्कर्ष निकाल सकते हैं। यह डेटा सफ़ाई को डेटा विज्ञान जीवनचक्र का एक अनिवार्य हिस्सा बनाता है।

हम निम्नलिखित डेटा सफ़ाई कार्यों को कवर करेंगे।
 

पायथन में डेटा सफाई की कला में महारत हासिल करना
लेखक द्वारा छवि

आरंभ करने से पहले, आइए आवश्यक पुस्तकालयों को आयात करें। हम डेटा हेरफेर के लिए पांडा का उपयोग करेंगे, और विज़ुअलाइज़ेशन के लिए सीबॉर्न और मैटप्लोटलिब का उपयोग करेंगे।

हम तारीखों में हेरफेर करने के लिए डेटाटाइम पायथन मॉड्यूल भी आयात करेंगे।

import pandas as pd
import seaborn as sns
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

सबसे पहले, हमें अपना डेटा लोड करना होगा। इस उदाहरण में, हम पांडा का उपयोग करके एक CSV फ़ाइल लोड करने जा रहे हैं। हम सीमांकक तर्क भी जोड़ते हैं।

df = pd.read_csv('F:KDNuggetsKDN Mastering the Art of Data Cleaning in Pythonproperty.csv', delimiter= ';')

इसके बाद, इसकी संरचना को समझने के लिए डेटा का निरीक्षण करना महत्वपूर्ण है, हम किस प्रकार के चर के साथ काम कर रहे हैं, और क्या कोई लापता मान हैं। चूँकि हमारे द्वारा आयात किया गया डेटा बहुत बड़ा नहीं है, आइए संपूर्ण डेटासेट पर एक नज़र डालें।

# Look at all the rows of the dataframe
display(df)

यहां बताया गया है कि डेटासेट कैसा दिखता है।

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

आप तुरंत देख सकते हैं कि कुछ मान गायब हैं। साथ ही, दिनांक प्रारूप भी असंगत हैं।

अब, आइए info() विधि का उपयोग करके डेटाफ़्रेम सारांश पर एक नज़र डालें।

# Get a concise summary of the dataframe
print(df.info())

यहां कोड आउटपुट है।

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

हम देख सकते हैं कि केवल कॉलम स्क्वायर_फीट में कोई NULL मान नहीं है, इसलिए हमें किसी तरह इसे संभालना होगा। इसके अलावा, कॉलम विज्ञापन_दिनांक, और बिक्री_दिनांक ऑब्जेक्ट डेटा प्रकार हैं, भले ही यह एक तिथि होनी चाहिए।

स्तंभ स्थान पूर्णतः रिक्त है. क्या हमें इसकी आवश्यकता है?

हम आपको दिखाएंगे कि इन मुद्दों से कैसे निपटा जाए. हम यह सीखकर शुरुआत करेंगे कि अनावश्यक कॉलमों को कैसे हटाया जाए।

डेटासेट में दो कॉलम हैं जिनकी हमें अपने डेटा विश्लेषण में आवश्यकता नहीं है, इसलिए हम उन्हें हटा देंगे।

पहला कॉलम खरीदार है. हमें इसकी आवश्यकता नहीं है, क्योंकि खरीदार का नाम विश्लेषण को प्रभावित नहीं करता है।

हम निर्दिष्ट कॉलम नाम के साथ ड्रॉप() विधि का उपयोग कर रहे हैं। हम यह निर्दिष्ट करने के लिए अक्ष को 1 पर सेट करते हैं कि हम एक कॉलम को हटाना चाहते हैं। साथ ही, इनप्लेस तर्क को सत्य पर सेट किया गया है ताकि हम मौजूदा डेटाफ़्रेम को संशोधित कर सकें, और हटाए गए कॉलम के बिना एक नया डेटाफ़्रेम नहीं बना सकें।

df.drop('buyer', axis = 1, inplace = True)

दूसरा कॉलम जिसे हम हटाना चाहते हैं वह स्थान है। हालाँकि यह जानकारी रखना उपयोगी हो सकता है, यह एक पूरी तरह से खाली कॉलम है, तो आइए इसे हटा दें।

हम पहले कॉलम जैसा ही दृष्टिकोण अपनाते हैं।

df.drop('location', axis = 1, inplace = True)

निःसंदेह, आप इन दोनों स्तंभों को एक साथ हटा सकते हैं।

df = df.drop(['buyer', 'location'], axis=1)

दोनों दृष्टिकोण निम्नलिखित डेटाफ़्रेम लौटाते हैं।

 

पायथन में डेटा सफाई की कला में महारत हासिल करना

डुप्लिकेट डेटा आपके डेटासेट में विभिन्न कारणों से हो सकता है और आपके विश्लेषण को ख़राब कर सकता है।

आइए हमारे डेटासेट में डुप्लिकेट का पता लगाएं। यह कैसे करना है यहां बताया गया है।

नीचे दिया गया कोड विधि का उपयोग करता है डुप्लीकेट () संपूर्ण डेटासेट में डुप्लिकेट पर विचार करना। इसकी डिफ़ॉल्ट सेटिंग किसी मान की पहली घटना को अद्वितीय और बाद की घटनाओं को डुप्लिकेट के रूप में मानना ​​है। आप इसका उपयोग करके इस व्यवहार को संशोधित कर सकते हैं रखना पैरामीटर. उदाहरण के लिए, df.duplication(keep=False) पहली घटना सहित सभी डुप्लिकेट को सही के रूप में चिह्नित करेगा।

# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates

यहाँ आउटपुट है.

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

अनुक्रमणिका 3 वाली पंक्ति को डुप्लिकेट के रूप में चिह्नित किया गया है क्योंकि समान मान वाली पंक्ति 2 इसकी पहली घटना है।

अब हमें डुप्लिकेट हटाने की जरूरत है, जो हम निम्नलिखित कोड के साथ करते हैं।

# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates

RSI ड्रॉप_डुप्लिकेट्स() फ़ंक्शन डुप्लिकेट की पहचान करते समय सभी कॉलमों पर विचार करता है। यदि आप केवल कुछ कॉलमों पर विचार करना चाहते हैं, तो आप उन्हें इस फ़ंक्शन की सूची के रूप में इस तरह से पास कर सकते हैं: df.drop_dulicates(subset=['column1', 'column2'])।

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

जैसा कि आप देख सकते हैं, डुप्लिकेट पंक्ति हटा दी गई है। हालाँकि, अनुक्रमण वही रहा, सूचकांक 3 गायब था। हम सूचकांकों को रीसेट करके इसे व्यवस्थित कर देंगे।

df = df.reset_index(drop=True)

यह कार्य का उपयोग करके किया जाता है रीसेट_इंडेक्स() समारोह। मूल सूचकांक को त्यागने के लिए ड्रॉप=ट्रू तर्क का उपयोग किया जाता है। यदि आप इस तर्क को शामिल नहीं करते हैं, तो पुराना इंडेक्स आपके डेटाफ़्रेम में एक नए कॉलम के रूप में जोड़ा जाएगा। ड्रॉप = ट्रू सेट करके, आप पांडा को पुराने इंडेक्स को भूलने और इसे डिफ़ॉल्ट पूर्णांक इंडेक्स पर रीसेट करने के लिए कह रहे हैं।

अभ्यास के लिए, प्रयास करें इस Microsoft डेटासेट से डुप्लिकेट हटाएँ.

कभी-कभी, डेटा प्रकार गलत तरीके से सेट हो सकते हैं। उदाहरण के लिए, दिनांक कॉलम की व्याख्या स्ट्रिंग के रूप में की जा सकती है। आपको इन्हें उनके उपयुक्त प्रकारों में परिवर्तित करने की आवश्यकता है।

हमारे डेटासेट में, हम विज्ञापन_दिनांक और बिक्री_दिनांक कॉलम के लिए ऐसा करेंगे, क्योंकि उन्हें ऑब्जेक्ट डेटा प्रकार के रूप में दिखाया गया है। साथ ही, तारीख की तारीखें सभी पंक्तियों में अलग-अलग रूप में स्वरूपित की जाती हैं। हमें इसे आज के अनुरूप बनाने के साथ-साथ सुसंगत भी बनाना होगा।

इसका उपयोग करना सबसे आसान तरीका है to_datetime() तरीका। दोबारा, आप उस कॉलम को कॉलम दर कॉलम कर सकते हैं, जैसा कि नीचे दिखाया गया है।

ऐसा करते समय, हम पहले दिन के तर्क को सत्य पर सेट करते हैं क्योंकि कुछ तारीखें पहले दिन से शुरू होती हैं।

# Converting advertisement_date column to datetime
df['advertisement_date'] = pd.to_datetime(df['advertisement_date'], dayfirst = True) # Converting sale_date column to datetime
df['sale_date'] = pd.to_datetime(df['sale_date'], dayfirst = True)

आप इसका उपयोग करके एक ही समय में दोनों कॉलमों को परिवर्तित भी कर सकते हैं लागू() विधि के साथ to_datetime().

# Converting advertisement_date and sale_date columns to datetime
df[['advertisement_date', 'sale_date']] = df[['advertisement_date', 'sale_date']].apply(pd.to_datetime, dayfirst = True)

दोनों दृष्टिकोण आपको समान परिणाम देते हैं।

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

अब तारीखें एक सुसंगत प्रारूप में हैं। हम देखते हैं कि सारा डेटा परिवर्तित नहीं किया गया है। विज्ञापन_दिनांक में एक NaT मान और Sale_date में दो NaT मान हैं। इसका मतलब है कि तारीख गायब है.

आइए जांचें कि क्या कॉलम का उपयोग करके तारीखों में परिवर्तित किया गया है जानकारी () विधि.

# Get a concise summary of the dataframe
print(df.info())

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

जैसा कि आप देख सकते हैं, दोनों कॉलम datetime64[ns] प्रारूप में नहीं हैं।

अब इसमें डेटा को TEXT से NUMERIC में बदलने का प्रयास करें एयरबीएनबी डेटासेट.

वास्तविक दुनिया के डेटासेट में अक्सर गायब मान होते हैं। गुम डेटा को संभालना महत्वपूर्ण है, क्योंकि कुछ एल्गोरिदम ऐसे मूल्यों को संभाल नहीं सकते हैं।

हमारे उदाहरण में कुछ लुप्त मान भी हैं, तो आइए लुप्त डेटा को संभालने के दो सबसे सामान्य तरीकों पर एक नज़र डालें।

लुप्त मानों वाली पंक्तियों को हटाना

यदि गायब डेटा वाली पंक्तियों की संख्या अवलोकनों की कुल संख्या की तुलना में नगण्य है, तो आप इन पंक्तियों को हटाने पर विचार कर सकते हैं।

हमारे उदाहरण में, अंतिम पंक्ति में वर्ग फ़ुट और विज्ञापन दिनांक के अलावा कोई मान नहीं है। हम ऐसे डेटा का उपयोग नहीं कर सकते, तो आइए इस पंक्ति को हटा दें।

यहां वह कोड है जहां हम पंक्ति के सूचकांक को इंगित करते हैं।

df = df.drop(8)

डेटाफ़्रेम अब इस तरह दिखता है।

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

अंतिम पंक्ति हटा दी गई है, और हमारा डेटाफ़्रेम अब बेहतर दिखता है। हालाँकि, अभी भी कुछ डेटा गायब हैं जिन्हें हम दूसरे दृष्टिकोण का उपयोग करके संभाल लेंगे।

लुप्त मूल्यों का आरोपण

यदि आपके पास महत्वपूर्ण डेटा गायब है, तो उसे हटाने से बेहतर रणनीति आरोपण हो सकती है। इस प्रक्रिया में अन्य डेटा के आधार पर लुप्त मानों को भरना शामिल है। संख्यात्मक डेटा के लिए, सामान्य प्रतिरूपण विधियों में केंद्रीय प्रवृत्ति (माध्य, माध्यिका, मोड) के माप का उपयोग करना शामिल है।

हमारे पहले से बदले गए डेटाफ़्रेम में, हमारे पास विज्ञापन_दिनांक और बिक्री_दिनांक कॉलम में NaT (समय नहीं) मान हैं। हम इन लुप्त मानों को का उपयोग करके आरोपित करेंगे अर्थ() विधि.

कोड का उपयोग करता है फिल्ना () शून्य मानों को खोजने और उन्हें माध्य मान से भरने की विधि।

# Imputing values for numerical columns
df['advertisement_date'] = df['advertisement_date'].fillna(df['advertisement_date'].mean())
df['sale_date'] = df['sale_date'].fillna(df['sale_date'].mean())

आप यही कार्य कोड की एक पंक्ति में भी कर सकते हैं. हम उपयोग करते हैं लागू() का उपयोग करके परिभाषित फ़ंक्शन को लागू करने के लिए लैम्ब्डा. उपरोक्त के समान, यह फ़ंक्शन उपयोग करता है फिल्ना () और अर्थ() लुप्त मानों को भरने की विधियाँ।

# Imputing values for multiple numerical columns
df[['advertisement_date', 'sale_date']] = df[['advertisement_date', 'sale_date']].apply(lambda x: x.fillna(x.mean()))

दोनों मामलों में आउटपुट इस तरह दिखता है।

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

हमारे बिक्री दिनांक कॉलम में अब ऐसे समय हैं जिनकी हमें आवश्यकता नहीं है। आइए उन्हें हटा दें.

हम उपयोग करेंगे स्ट्रैटटाइम () विधि, जो तिथियों को उनके स्ट्रिंग प्रतिनिधित्व और एक विशिष्ट प्रारूप में परिवर्तित करती है।

df['sale_date'] = df['sale_date'].dt.strftime('%Y-%m-%d')

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

अब तारीखें बिल्कुल साफ-सुथरी दिख रही हैं।

यदि आपको उपयोग करने की आवश्यकता है स्ट्रैटटाइम () एकाधिक स्तंभों पर, आप फिर से उपयोग कर सकते हैं लैम्ब्डा निम्नलिखित तरीके से.

df[['date1_formatted', 'date2_formatted']] = df[['date1', 'date2']].apply(lambda x: x.dt.strftime('%Y-%m-%d'))

अब, आइए देखें कि हम लुप्त श्रेणीबद्ध मानों को कैसे आरोपित कर सकते हैं।

श्रेणीबद्ध डेटा एक प्रकार का डेटा है जिसका उपयोग समान विशेषताओं वाली जानकारी को समूहीकृत करने के लिए किया जाता है। इनमें से प्रत्येक समूह एक श्रेणी है। श्रेणीबद्ध डेटा संख्यात्मक मान ले सकता है (जैसे कि "1" "पुरुष" को दर्शाता है और "2" "महिला" को दर्शाता है), लेकिन उन संख्याओं का गणितीय अर्थ नहीं होता है। उदाहरण के लिए, आप उन्हें एक साथ नहीं जोड़ सकते।

श्रेणीबद्ध डेटा को आम तौर पर दो श्रेणियों में विभाजित किया जाता है:

  1. नाममात्र का आकड़ा: ऐसा तब होता है जब श्रेणियों को केवल लेबल किया जाता है और किसी विशेष क्रम में व्यवस्थित नहीं किया जा सकता है। उदाहरणों में लिंग (पुरुष, महिला), रक्त प्रकार (ए, बी, एबी, ओ), या रंग (लाल, हरा, नीला) शामिल हैं।
  1. सामान्य डेटा: यह तब होता है जब श्रेणियों को क्रमबद्ध या रैंक किया जा सकता है। हालाँकि श्रेणियों के बीच का अंतराल समान रूप से नहीं है, श्रेणियों के क्रम का एक अर्थ है। उदाहरणों में रेटिंग स्केल (किसी फिल्म की 1 से 5 रेटिंग), शिक्षा स्तर (हाई स्कूल, स्नातक, ग्रेजुएट), या कैंसर के चरण (स्टेज I, स्टेज II, स्टेज III) शामिल हैं।

लुप्त श्रेणीबद्ध डेटा को आरोपित करने के लिए, मोड का आमतौर पर उपयोग किया जाता है। हमारे उदाहरण में, कॉलम प्रॉपर्टी_कैटेगरी श्रेणीबद्ध (नाममात्र) डेटा है, और दो पंक्तियों में डेटा गायब है।

आइए लुप्त मानों को मोड से बदलें।

# For categorical columns
df['property_category'] = df['property_category'].fillna(df['property_category'].mode()[0])

यह कोड का उपयोग करता है फिल्ना () प्रॉपर्टी_श्रेणी कॉलम में सभी NaN मानों को बदलने के लिए फ़ंक्शन। यह इसे मोड से बदल देता है।

इसके अतिरिक्त, [0] भाग का उपयोग इस श्रृंखला से पहला मान निकालने के लिए किया जाता है। यदि एकाधिक मोड हैं, तो यह पहले वाले का चयन करेगा। यदि केवल एक ही मोड है, तो यह अभी भी ठीक काम करता है।

यहाँ आउटपुट है.

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

डेटा अब काफी अच्छा लग रहा है. केवल एक चीज जो शेष है वह यह देखना है कि क्या आउटलेयर हैं।

आप इस पर शून्य से निपटने का अभ्यास कर सकते हैं मेटा साक्षात्कार प्रश्न, जहां आपको NULL को शून्य से बदलना होगा।

आउटलेयर किसी डेटासेट में डेटा बिंदु होते हैं जो अन्य अवलोकनों से स्पष्ट रूप से भिन्न होते हैं। वे समग्र पैटर्न के बाहर रहते हुए, डेटा सेट में अन्य मूल्यों से असाधारण रूप से दूर हो सकते हैं। उन्हें असामान्य माना जाता है क्योंकि उनका मान बाकी डेटा की तुलना में या तो काफी अधिक या कम होता है।

आउटलेयर विभिन्न कारणों से उत्पन्न हो सकते हैं जैसे:

  • माप या इनपुट त्रुटियाँ
  • डेटा दूषण
  • सच्ची सांख्यिकीय विसंगतियाँ

आउटलेयर आपके डेटा विश्लेषण और सांख्यिकीय मॉडलिंग के परिणामों को महत्वपूर्ण रूप से प्रभावित कर सकते हैं। वे विषम वितरण, पूर्वाग्रह को जन्म दे सकते हैं, या अंतर्निहित सांख्यिकीय मान्यताओं को अमान्य कर सकते हैं, अनुमानित मॉडल फिट को विकृत कर सकते हैं, पूर्वानुमानित मॉडल की पूर्वानुमान सटीकता को कम कर सकते हैं और गलत निष्कर्ष निकाल सकते हैं।

आउटलेर्स का पता लगाने के लिए आमतौर पर इस्तेमाल की जाने वाली कुछ विधियां जेड-स्कोर, आईक्यूआर (इंटरक्वेर्टाइल रेंज), बॉक्स प्लॉट, स्कैटर प्लॉट और डेटा विज़ुअलाइज़ेशन तकनीक हैं। कुछ उन्नत मामलों में, मशीन लर्निंग विधियों का भी उपयोग किया जाता है।

डेटा को विज़ुअलाइज़ करने से आउटलेर्स की पहचान करने में मदद मिल सकती है। सीबॉर्न का बॉक्सप्लॉट इसके लिए उपयोगी है।

plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])

हम आकृति की चौड़ाई और ऊंचाई को इंच में सेट करने के लिए plt.figure() का उपयोग करते हैं।

फिर हम विज्ञापन_प्राइस और सेल_प्राइस कॉलम के लिए बॉक्सप्लॉट बनाते हैं, जो इस तरह दिखता है।

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

इसे उपरोक्त कोड में जोड़कर आसान उपयोग के लिए प्लॉट में सुधार किया जा सकता है।

plt.xlabel('Prices')
plt.ylabel('USD')
plt.ticklabel_format(style='plain', axis='y')
formatter = ticker.FuncFormatter(lambda x, p: format(x, ',.2f'))
plt.gca().yaxis.set_major_formatter(formatter)

हम दोनों अक्षों के लिए लेबल सेट करने के लिए उपरोक्त कोड का उपयोग करते हैं। हम यह भी देखते हैं कि y-अक्ष पर मान वैज्ञानिक संकेतन में हैं, और हम इसका उपयोग मूल्य मानों के लिए नहीं कर सकते हैं। इसलिए हम इसे plt.ticklabel_format() फ़ंक्शन का उपयोग करके सादे शैली में बदलते हैं।

फिर हम फ़ॉर्मेटर बनाते हैं जो y-अक्ष पर मानों को हजार विभाजक और दशमलव बिंदुओं के रूप में अल्पविराम के साथ दिखाएगा। अंतिम कोड पंक्ति इसे अक्ष पर लागू करती है।

आउटपुट अब इस तरह दिखता है.

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

अब, हम बाह्य को कैसे पहचानें और हटाएँ?

इनमें से एक तरीका IQR पद्धति का उपयोग करना है।

IQR, या इंटरक्वेर्टाइल रेंज, एक सांख्यिकीय पद्धति है जिसका उपयोग डेटा सेट को चतुर्थक में विभाजित करके परिवर्तनशीलता को मापने के लिए किया जाता है। चतुर्थक रैंक-क्रमबद्ध डेटा सेट को चार समान भागों में विभाजित करते हैं, और पहले चतुर्थक (25वें प्रतिशतक) और तीसरे चतुर्थक (75वें प्रतिशतक) की सीमा के भीतर के मान अंतरचतुर्थक श्रेणी बनाते हैं।

डेटा में आउटलेर्स की पहचान करने के लिए इंटरक्वेर्टाइल रेंज का उपयोग किया जाता है। यह ऐसे काम करता है:

  1. सबसे पहले, पहले चतुर्थक (Q1), तीसरे चतुर्थक (Q3) की गणना करें, और फिर IQR निर्धारित करें। IQR की गणना Q3 - Q1 के रूप में की जाती है।
  2. Q1 - 1.5IQR से नीचे या Q3 + 1.5IQR से ऊपर का कोई भी मान बाह्य माना जाता है।

हमारे बॉक्सप्लॉट पर, बॉक्स वास्तव में IQR का प्रतिनिधित्व करता है। बॉक्स के अंदर की रेखा माध्यिका (या द्वितीय चतुर्थक) है। बॉक्सप्लॉट की 'मूंछें' Q1.5 और Q1 से 3*IQR के भीतर की सीमा का प्रतिनिधित्व करती हैं।

इन मूंछों के बाहर किसी भी डेटा बिंदु को आउटलेयर माना जा सकता है। हमारे मामले में, यह $12,000,000 का मूल्य है। यदि आप बॉक्सप्लॉट को देखते हैं, तो आप देखेंगे कि इसे कितनी स्पष्टता से दर्शाया गया है, जो दर्शाता है कि आउटलेर्स का पता लगाने में डेटा विज़ुअलाइज़ेशन महत्वपूर्ण क्यों है।

अब, आइए पायथन कोड में IQR विधि का उपयोग करके आउटलेर्स को हटा दें। सबसे पहले, हम विज्ञापित मूल्य आउटलेर्स को हटा देंगे।

Q1 = df['advertised_price'].quantile(0.25)
Q3 = df['advertised_price'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['advertised_price'] (Q1 - 1.5 * IQR)) |(df['advertised_price'] > (Q3 + 1.5 * IQR)))]

हम पहले इसका उपयोग करके प्रथम चतुर्थक (या 25वाँ प्रतिशतक) की गणना करते हैं मात्रा() समारोह। हम तीसरे चतुर्थक या 75वें प्रतिशतक के लिए भी ऐसा ही करते हैं।

वे वे मान दिखाते हैं जिनके नीचे क्रमशः 25% और 75% डेटा आता है।

फिर हम चतुर्थकों के बीच अंतर की गणना करते हैं। अब तक सब कुछ सिर्फ IQR चरणों का पायथन कोड में अनुवाद करना है।

अंतिम चरण के रूप में, हम आउटलेर्स को हटा देते हैं। दूसरे शब्दों में, Q1 से कम - 1.5 * IQR या Q3 + 1.5 * IQR से अधिक सभी डेटा।

'~' ऑपरेटर शर्त को नकार देता है, इसलिए हमारे पास केवल वही डेटा बचता है जो आउटलेयर नहीं है।

फिर हम बिक्री मूल्य के साथ भी ऐसा ही कर सकते हैं।

Q1 = df['sale_price'].quantile(0.25)
Q3 = df['sale_price'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['sale_price'] (Q1 - 1.5 * IQR)) |(df['sale_price'] > (Q3 + 1.5 * IQR)))]

निःसंदेह, आप इसका उपयोग करके इसे अधिक संक्षिप्त तरीके से कर सकते हैं पाश के लिए.

for column in ['advertised_price', 'sale_price']: Q1 = df[column].quantile(0.25) Q3 = df[column].quantile(0.75) IQR = Q3 - Q1 df = df[~((df[column] (Q1 - 1.5 * IQR)) |(df[column] > (Q3 + 1.5 * IQR)))]

लूप दो स्तंभों को पुनरावृत्त करता है। प्रत्येक कॉलम के लिए, यह IQR की गणना करता है और फिर डेटाफ़्रेम में पंक्तियों को हटा देता है।

कृपया ध्यान दें कि यह कार्रवाई क्रमिक रूप से की जाती है, पहले विज्ञापित_कीमत के लिए और फिर बिक्री_कीमत के लिए। परिणामस्वरूप, प्रत्येक कॉलम के लिए डेटाफ़्रेम को उसी स्थान पर संशोधित किया जाता है, और किसी भी कॉलम में बाहरी होने के कारण पंक्तियों को हटाया जा सकता है। इसलिए, इस ऑपरेशन के परिणामस्वरूप कम पंक्तियाँ हो सकती हैं यदि विज्ञापन_प्राइस और सेल_प्राइस के आउटलेर्स को स्वतंत्र रूप से हटा दिया गया था और परिणाम बाद में संयुक्त किए गए थे।

हमारे उदाहरण में, आउटपुट दोनों मामलों में समान होगा। यह देखने के लिए कि बॉक्स प्लॉट कैसे बदल गया, हमें पहले की तरह उसी कोड का उपयोग करके इसे फिर से प्लॉट करना होगा।

plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])
plt.xlabel('Prices')
plt.ylabel('USD')
plt.ticklabel_format(style='plain', axis='y')
formatter = ticker.FuncFormatter(lambda x, p: format(x, ',.2f'))
plt.gca().yaxis.set_major_formatter(formatter)

यहाँ आउटपुट है.

 

पायथन में डेटा सफाई की कला में महारत हासिल करना
 

आप इसे हल करके पायथन में प्रतिशत की गणना करने का अभ्यास कर सकते हैं सामान्य सभा साक्षात्कार प्रश्न.

डेटा विश्लेषण प्रक्रिया में डेटा सफाई एक महत्वपूर्ण कदम है। हालाँकि इसमें समय लग सकता है, लेकिन आपके निष्कर्षों की सटीकता सुनिश्चित करना आवश्यक है।

सौभाग्य से, पायथन के पुस्तकालयों का समृद्ध पारिस्थितिकी तंत्र इस प्रक्रिया को अधिक प्रबंधनीय बनाता है। हमने सीखा कि अनावश्यक पंक्तियों और स्तंभों को कैसे हटाया जाए, डेटा को पुन: स्वरूपित किया जाए और लुप्त मूल्यों और आउटलेर्स से कैसे निपटा जाए। ये सामान्य चरण हैं जिन्हें अधिकांश डेटा पर निष्पादित किया जाना है। हालाँकि, कभी-कभी आपको इसकी आवश्यकता भी पड़ेगी दो स्तंभों को एक में संयोजित करें, मौजूदा डेटा को सत्यापित करें, इसे लेबल निर्दिष्ट करेंया, सफेद स्थानों से छुटकारा पाएं.

यह सब डेटा की सफ़ाई है, क्योंकि यह आपको अव्यवस्थित, वास्तविक दुनिया के डेटा को एक अच्छी तरह से संरचित डेटासेट में बदलने की अनुमति देता है जिसका आप आत्मविश्वास के साथ विश्लेषण कर सकते हैं। बस उस डेटासेट की तुलना करें जिसके साथ हमने शुरुआत की थी और जिस पर हम समाप्त हुए थे।

यदि आप इस परिणाम में संतुष्टि नहीं देखते हैं और स्वच्छ डेटा आपको अजीब तरह से उत्साहित नहीं करता है, तो आप डेटा विज्ञान में क्या कर रहे हैं!?
 

नैट रोसीडि एक डेटा वैज्ञानिक और उत्पाद रणनीति में है। वह एनालिटिक्स पढ़ाने वाले एक सहायक प्रोफेसर भी हैं, और के संस्थापक हैं स्ट्रैट स्क्रैच, शीर्ष कंपनियों के वास्तविक साक्षात्कार प्रश्नों के साथ डेटा वैज्ञानिकों को उनके साक्षात्कार के लिए तैयार करने में मदद करने वाला एक मंच। उसके साथ जुड़ें ट्विटर: स्ट्रैट स्क्रैच or लिंक्डइन.

समय टिकट:

से अधिक केडनगेट्स