चाहे हमारे एनालिटिक्स या प्रेडिक्टिव एल्गोरिद्म कितने भी उन्नत क्यों न हों, आउटपुट की गुणवत्ता इनपुट डेटा पर निर्भर करती है। दूसरे शब्दों में, 'garbage in, garbage out.'
क्योंकि डेटा इन सभी प्रक्रियाओं की नींव है, इसलिए यह सुनिश्चित करने में पर्याप्त समय लगाना महत्वपूर्ण है कि डेटा ठीक से परिष्कृत हो।
डेटा क्लीनिंग डेटा साइंस लाइफसाइकल में एक बुनियादी प्रक्रिया है, और जब हम अंतर्दृष्टि खोजने और विश्वसनीय जवाब बनाने की कोशिश करते हैं, तो इसकी भूमिका का महत्व कम करके नहीं आँका जा सकता। अक्सर वास्तविक दुनिया में डेटा हमेशा गंदा होगा, और डेटा क्लीनिंग पूरी तरह टाली नहीं जा सकती।
इस लेख में, हम कुछ महत्वपूर्ण विचारों को कवर करेंगे, जैसे missing मान, डुप्लीकेट्स, और आउट्लायर्स को कैसे संभालें। अधिक व्यापक निर्देशों के लिए, हमारे Cleaning Data in Python या Cleaning Data in R कोर्स ज़रूर लें।
गंदे डेटा का कारण क्या है?
सरल शब्दों में, डेटा क्लीनिंग (या क्लेंज़िंग) डेटा विश्लेषण की तैयारी के लिए आवश्यक प्रक्रिया है। इसमें डुप्लीकेट और अधूरे रिकॉर्ड ढूँढना और हटाना, तथा गलत रिकॉर्ड को सुधारने के लिए डेटा में संशोधन करना शामिल हो सकता है।
गंदा डेटा हमेशा से एक समस्या रहा है, फिर भी पिछले दशक में डेटा जेनरेशन में जबरदस्त वृद्धि हुई है। सिर्फ 2020 में ही दुनिया ने 64 ज़ेटाबाइट्स से अधिक डेटा उत्पन्न किया, जो 6.4 ट्रिलियन गीगाबाइट्स के बराबर है। हालांकि इस सभी डेटा में से 2% से भी कम संरक्षित रहता है, यह फिर भी निस्संदेह "गंदे डेटा" की पहले से मौजूद आम समस्या को और बढ़ाता है। डेटा क्लीनिंग ठीक से करने से पहले, यह समझना महत्वपूर्ण है कि वह पहले स्थान पर गंदा कैसे हुआ। यह निम्नलिखित आम स्रोतों से आ सकता है:
डेटा एंट्री, रिकॉर्डिंग, या एन्कोडिंग के दौरान मानवीय त्रुटि
खराब सेंसर डिवाइस, जैसा कि इंटरनेट ऑफ थिंग्स (IoT) में होता है
हार्डवेयर या सॉफ्टवेयर क्षति के परिणामस्वरूप करप्शन
जिस गंदे डेटा को हम साफ करना चाहते हैं उसकी जड़ कारणों से अवगत होना, हमारे डेटासेट से जुड़ी विभिन्न समस्याओं को वर्गीकृत करने की अनुमति देने वाले डेटा गुणवत्ता मानदंड लागू करने की एक अच्छी नींव रखता है।
डेटा क्लीनिंग इतनी महत्वपूर्ण क्यों है?
डेटा क्लीनिंग की प्रक्रिया महत्वपूर्ण है क्योंकि यह किसी संगठन के डेटा की सफाई के लिए एक टेम्पलेट बनाने में मदद करती है। जैसा कि पहले उल्लेख किया गया, किसी भी डेटा एनालिटिक्स या डेटा साइंस प्रक्रिया में garbage in, garbage out लागू होता है। जब इसे नज़रअंदाज़ किया जाता है, तो परिणाम समय, धन और अन्य संसाधनों की दृष्टि से महँगे, त्रुटिपूर्ण विश्लेषणात्मक नतीजे होते हैं।
डेटा गुणवत्ता क्या है?
डेटा गुणवत्ता एक गुणात्मक और/या मात्रात्मक माप है कि हमारा डेटा उस उद्देश्य के लिए कितना उपयुक्त है जिसे उसे पूरा करना है। ये माप व्यावहारिक टेम्पलेट्स हैं जिनका उपयोग हम यह आँकने के लिए कर सकते हैं कि उपलब्ध डेटा हमारे वांछित उद्देश्यों के लिए कितना उपयुक्त है। इन डेटा गुणवत्ता मापों को मेट्रिक टेस्ट के रूप में देखें जिन्हें डेटा साइंस प्रक्रियाओं के लिए उपयुक्त ठहराने हेतु हमारे डेटा को पास करना चाहिए।
डेटा गुणवत्ता के मानदंड
सटीकता: सटीकता की जाँच के लिए हम एक आसान प्रश्न पूछ सकते हैं — क्या डेटा में निहित जानकारी हर विवरण में सही ढंग से प्रदान की गई है? डेटा के साथ, हम वास्तविक दुनिया के पैटर्न का अनुमान लगाने की कोशिश कर रहे हैं; सटीकता बताती है कि ये अनुमान कितने सच्चे हैं।
प्रासंगिकता: क्या यह जानकारी हमारे वांछित अंतिम लक्ष्य पर प्रभाव डालती है?
संगति: क्या इस डेटा का स्रोत सत्यापित है और क्या इसमें निहित जानकारी पर भरोसा किया जा सकता है? उदाहरण के लिए, किसी ग्राहक की उम्र 15 है लेकिन वैवाहिक स्थिति शादीशुदा बताई गई है।
पूर्णता: क्या डेटा हमारे वांछित अंतिम लक्ष्य के लिए पर्याप्त और व्यापक रूप से उपलब्ध है? यह missing डेटा से जुड़ी एक आम समस्या है और इसे हल करने का एक तरीका डेटा स्रोत की जाँच करना है।
एकरूपता: मान लें कि हमारे पास एक सेल्स कॉलम है लेकिन सभी लेनदेन एक ही मुद्रा में नहीं किए गए। ऐसे में सभी सेल्स मानों को एक ही मुद्रा में बदलना आवश्यक हो जाता है और यही एकरूपता का सार है; यह सुनिश्चित करना कि सभी सिस्टमों में डेटा माप एक ही इकाइयों में निर्दिष्ट हों।
डेटा क्लीनिंग बनाम डेटा ट्रांसफॉर्मेशन
डेटा क्लीनिंग और डेटा ट्रांसफॉर्मेशन के बीच अंतर स्पष्ट करना महत्वपूर्ण है। डेटा ट्रांसफॉर्मेशन ऐसी प्रक्रियाओं का समूह है जो हमें उपलब्ध डेटा से अधिक अंतर्दृष्टि निकालने में मदद कर सकता है। ये प्रक्रियाएँ आम तौर पर डेटा के कच्चे प्रारूप को किसी अन्य प्रारूप में बदलती हैं, कुछ उदाहरण शामिल हैं:
एन्कोडिंग: यह श्रेणीबद्ध मानों को बाइनरी मानों में बदलने की प्रक्रिया है ताकि उन्हें मशीन लर्निंग के लिए गणनाओं में उपयोग किया जा सके। चित्र दिखाता है कि जेंडर कॉलम एन्कोड होने पर कैसा दिखेगा। जबकि यह वही जानकारी वहन करता है, इसे एक अलग प्रारूप में बदल दिया गया है।
डेटा बिनिंग: जिसे बकेटिंग भी कहा जाता है, यह प्रक्रिया मामूली अवलोकनों के प्रभाव/आकार को कम करने में मदद करती है। इसमें निरंतर मानों को बिन्स (या कैटेगरी) में समूहित करना शामिल है।
स्केलिंग: यह मशीन लर्निंग में एक सामान्य तकनीक है जो अलग-अलग स्केल के मानों को एक निश्चित रेंज में मानकीकृत करने में मदद करती है।
ध्यान दें कि अधिकांश डेटा ट्रांसफॉर्मेशन प्रक्रियाओं में डेटा के मूल प्रतिनिधित्व को बदला जाता है। जबकि डेटा वही रहता है, कुछ तकनीकों को अपनाकर इसे मशीन लर्निंग या किसी अन्य उद्देश्य के लिए उपयोगी प्रारूप में बदला जाता है।
डेटा क्लीनिंग कैसे की जाती है
उच्च-गुणवत्ता वाले डेटा को प्राप्त करने के लिए दिशानिर्देशों का एक सेट होना महत्वपूर्ण है। इन दिशानिर्देशों को डेटा क्लीनिंग वर्कफ़्लो कहा जा सकता है। ये हमें डेटा क्लीनिंग के लिए आवश्यक सभी प्रक्रियाओं को ध्यान में रखने में मदद करते हैं। इस वर्कफ़्लो में शामिल प्रक्रियाएँ हैं:
डेटा एक्सप्लोरेशन
डेटा क्लीनिंग
डेटा वेरिफिकेशन
डेटा क्लीनिंग रिपोर्टिंग इनमें से कुछ प्रक्रियाएँ Python में भी प्रदर्शित की जाएँगी
डेटा एक्सप्लोरेशन
डेटा एक्सप्लोरेशन का मतलब डेटा में मौजूद वेरिएबल्स का गहन अन्वेषण करके डेटा को समझना है। डेटा में अंतर्निहित समस्याओं को ठीक से उजागर करने के लिए इसमें कई विज़ुअल और एग्रीगेशन तकनीकों की आवश्यकता होती है। उचित अन्वेषण के लिए, यहाँ कुछ बिंदु ध्यान देने योग्य हैं:
डेटा प्रसंग
हम किसी भी डेटा को साफ करने से पहले, हमें उसके प्रसंग को समझना चाहिए। डेटा प्रसंग डेटा में निहित सभी एंटिटीज़ का स्रोत है। यह उन परिस्थितियों के सेट को कैद करता है जो बताते हैं कि डेटा कैसे एकत्र किया गया, और उसे कैसे एकत्र किया गया यह बताता है कि इसका उपयोग कैसे और किसलिए किया जा सकता है।
यह इस बात के लिए मार्गदर्शक का काम करता है कि सफाई (और विश्लेषण) में क्या स्वीकार्य है ताकि हम ऐसे डेटा से सही अंतर्दृष्टि प्राप्त कर सकें। एक बार जब हमें स्पष्ट हो जाए कि डेटा कैसे/कब एकत्र किया गया, तब हमें उस डेटा का अन्वेषण करना चाहिए।
एक्सप्लोरेटरी डेटा एनालिसिस
एक्सप्लोरेटरी डेटा एनालिसिस डेटा पर प्रारंभिक जाँच-पड़ताल करने की महत्वपूर्ण प्रक्रिया है ताकि सारांश सांख्यिकी और ग्राफिकल प्रतिनिधित्व की मदद से पैटर्न खोजे जा सकें, विसंगतियाँ पहचानी जा सकें, परिकल्पनाओं का परीक्षण किया जा सके, और अनुमानों की जाँच की जा सके। अन्वेषण के बिना खोज नहीं। यदि हम अपने डेटा का अन्वेषण नहीं करते, तो उसके भीतर मौजूद विभिन्न समस्याओं का पता लगाना कठिन होता है।
उदाहरण के लिए, हमारे पास यहाँ उपलब्ध कराया गया एक डेटासेट है। Department of Finance की Rolling Sales फाइलें, न्यूयॉर्क सिटी में पिछले बारह महीनों की अवधि में बेची गई संपत्तियों को टैक्स क्लास 1, 2, और 4 के लिए सूचीबद्ध करती हैं। हम उपलब्ध Bronx डेटा को डाउनलोड और रीड करेंगे।
#pandasimport pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#read excel file
df = pd.read_excel("rollingsales_bronx.xls")#preview data
df.head()संचालित द्वारा
इस डेटा फ़्रेम में उल्लेखनीय समस्याएँ शामिल हैं:
अनामित कॉलम
पहली तीन पंक्तियों में missing मान
हालाँकि, Excel में वास्तविक डेटा का अन्वेषण करने पर पता चलता है कि वर्कबुक में वास्तविक तालिका 4वीं पंक्ति तक शुरू ही नहीं होती। इसलिए, डेटा को दोबारा पढ़ते समय कुछ पैरामीटर्स सेट करने से हम यह निर्दिष्ट कर सकते हैं कि किन पंक्तियों को स्किप करना है और किस पंक्ति को हेडर बनाना है:
#we read the data in again but skill 3 rows this time
df = pd.read_excel("rollingsales_bronx.xls", skiprows =4, header =[0])
df.head()संचालित द्वारा
अब डेटा कैसे दिख रहा है, इसमें एक महत्वपूर्ण बदलाव है। जबकि हम पहली इम्पोर्ट को भी साफ कर सकते थे, डेटा एक्सप्लोरेशन ने हमें Python में हमारे डेटा इम्पोर्ट फ़ंक्शन में कुछ छोटे बदलावों से ही पर्याप्त समय बचाने में मदद की है।
डेटा एक्सप्लोरेशन किसी जाँच एजेंट की तरह अपराध स्थल पर प्रवेश करने जैसा है, जहाँ हम निष्क्रिय रूप से सभी गड़बड़ चीज़ों को देखते हैं; और डेटा क्लीनिंग वास्तविक अपराध को सुलझाने की सक्रिय प्रक्रिया है।
डेटा क्लीनिंग
डेटा एक्सप्लोरेशन आमतौर पर डेटा क्लीनिंग प्रक्रियाओं के साथ-साथ चलता है। जैसे ही हम विज़ुअल, एग्रीगेशन, या सांख्यिकीय तरीकों से अपने डेटा में समस्याएँ उजागर करते हैं, हमें उन्हें ठीक करना होता है। इस चरण में, डेटा या तो हटाया जाएगा, सुधारा जाएगा, या इम्प्यूट किया जाएगा।
असंगत रिकॉर्ड
असंगत रिकॉर्ड का एक सामान्य उदाहरण वह फॉर्म है जहाँ व्यक्तियों को अपना जेंडर दर्ज करना होता है। एक ही चीज़ के लिए अलग-अलग प्रारूप मिल सकते हैं, जैसे 'M', 'm', 'Male', या 'MALE', और क्या हमने इस महीने 'aples', 'apples', या 'APPLES' बेचे। इन्हें पहचानने का सबसे अच्छा तरीका फ़्रीक्वेंसी चार्ट के ज़रिए या कॉलम के सभी विशिष्ट मानों को प्रदर्शित करके हो सकता है। असंगत रिकॉर्ड पर कुछ कार्रवाइयाँ शामिल हैं, लेकिन इन्हीं तक सीमित नहीं हैं:
स्ट्रिंग्स को लोअर या प्रॉपर केस में बदलना
व्हाइट स्पेसेज़ हटाना
कॉलम नामों का पुनर्नामकरण
Python उदाहरण: ऊपर डेटा एक्सप्लोरेशन में इम्पोर्ट किए गए डेटासेट का उपयोग करते हुए, देखें कि कॉलम नाम असंगत रूप से लिखे गए हैं:
हालाँकि यह बड़ी बात नहीं लगती, लेकिन कॉलम नामों को लगातार सुलभ बनाना महत्वपूर्ण है। उदाहरण के लिए, EASE-MENT में हर शब्द के बीच हाइफ़न (-) है, जबकि बाकी में केवल स्पेसेज़ हैं।
डेटा क्लीनिंग का एक हिस्सा संगति सुनिश्चित करना है। आइए इसे दो चरणों में ठीक करने का प्रयास करें:
शब्दों के बीच स्पेस को अंडरस्कोर से बदलें
प्रॉपर केस में बदलें
# Extract columns
cols = df.columns
# Create empty list for new column names
new_cols =[]# Iterate over each column name to fix issuesfor column in cols:# Convert column name to title case
proper_cols = column.title()# Replace spaces and hyphens with underscores
proper_cols_hyphen = proper_cols.replace(" ","_")
clean_col = proper_cols_hyphen.replace("-","_")# Append the cleaned column name to the list
new_cols.append(clean_col)# Display the transformed column names
new_cols
# Replace existing columns in the dataframe with the cleaned list
df.columns = new_cols
# Preview the updated dataframe
df.head()संचालित द्वारा
डेटा टाइप्स और टाइप कन्वर्ज़न
डेटा टाइप इस बात का प्रतिनिधित्व है कि डेटा कैसा है, जो कंपाइलर को बताता है कि डेटा का उपयोग कैसे किया जाना है। डेटा का प्रतिनिधित्व यह निर्धारित करता है कि ऐसे डेटा के साथ किस प्रकार के ऑपरेशन्स संभव हैं। आइए Bronx डेटा के हमारे डेटा फ़्रेम में प्रत्येक कॉलम के डेटा टाइप्स का पूर्वावलोकन करें।
नोट: देखें कि हम अब डॉट मेथड (df.Year_Built) का उपयोग करके कॉलम नामों को कितनी आसानी से चुन पा रहे हैं।
सभी डेटा टाइप्स क्रम में दिखते हैं, सिवाय Year_Built कॉलम के, जिसे श्रेणीबद्ध होना चाहिए। जबकि इसका बड़ा प्रभाव नहीं है, एग्रीगेशन करते समय Year_Built संभवतः शामिल हो जाएगा।
#Fix Year_Built column
df.Year_Built = df.Year_Built.astype("str")#Check
df.dtypes
संचालित द्वारा
Missing डेटा
कभी-कभी ऐसी पंक्तियाँ (observations) होती हैं जिनमें डेटा missing होता है और कभी-कभी पूरे कॉलम ही पूरी तरह missing हो सकते हैं। तो ऐसी स्थितियों में हम क्या करें? क्या हम इसे नज़रअंदाज़ कर दें? इसकी तुलना एक टपकती छत से की जा सकती है जो बारिश होने पर रिसती है।
Missing मान अलग-अलग टूल्स में अलग-अलग रूप में दिखाई देते हैं। इनमें NULL, खाली स्ट्रिंग्स, NaN, NA, #NA, आदि शामिल हैं। missing डेटा से निपटने में डेटा प्रसंग महत्वपूर्ण है, और यह समझना कि डेटा क्यों missing है, बेहद ज़रूरी है। missing डेटा से निपटने के दो प्राथमिक तरीके हैं:
डेटा को हटाना
डेटा का इम्प्यूटेशन
किसी भी तरीके पर निर्णय लेने से पहले, सबसे पहले कॉलम्स में missing मानों के पैटर्न की जाँच करनी चाहिए। हम इन्हें आँकने के लिए विज़ुअल और वर्णनात्मक तकनीकों का उपयोग करेंगे।
#extract the column names
cols = df.columns
#plot a heatmap of missing values with seaborn
plt.figure(figsize =(10,5))
sns.heatmap(df[cols].isnull())संचालित द्वारा
प्लॉट दृश्य रूप से दिखाता है कि:
Ease_ment में सभी मान और Apartment_Number में लगभग सभी मान missing हैं
Units और Square_Feet से संबंधित कॉलम्स में missing मान फैले हुए हैं बहुत बड़े डेटासेट्स के लिए यह प्लॉट आदर्श नहीं हो सकता। इसे संभालने का एक और तरीका यह देखना है कि ये missing मान वास्तविक डेटा आकार की तुलना में कितने महत्वपूर्ण हैं।
#Get the percentage of missing values in each column
missing_pct =round(df.isnull().sum()/len(df)*100,1)print(missing_pct)संचालित द्वारा
हम Ease_Ment और Apartment_Number कॉलम्स को ड्रॉप करेंगे और फिर शेष कॉलम्स में missing मानों को बदलेंगे।
#columns with more than 30% missing values
drop_cols = missing_pct[missing_pct >30].index
#We can drop these columns with greater than 30 percent missing values
df_new = df.drop(columns = drop_cols)#Extract columns with mising values between 1 and 30%
replace_cols = missing_pct[(missing_pct >0)&(missing_pct <30)].index
#Iterate to replace missing valuesfor col in replace_cols:#if column is year built we replace with median otherwise the meanif col =="Year_Built":
df_new.fillna(df_new[col].median(), inplace =True)else:
mean_value = df_new[col].mean()
df_new.fillna(mean_value, inplace =True)
df_new.isnull().sum()#preview for missing valuesसंचालित द्वारा
बेशक, missing मानों से निपटने के लिए और भी बहुत कुछ है, जैसा कि इस Datacamp कोर्स Dealing with Missing Values in Python में कवर किया गया है। अलग-अलग डेटासेट्स, टाइप्स और स्ट्रक्चर्स की अलग-अलग ज़रूरतें होती हैं, इसलिए missing मानों से निपटना सभी प्रकार के डेटासेट्स के लिए सीधी, स्पष्ट प्रक्रिया नहीं है। नीचे दी गई छवि दिखाती है कि किन अलग-अलग परिदृश्यों में डिलीशन तकनीक या इम्प्यूटेशन तकनीक लागू की जाए।
डुप्लीकेट्स
हमें प्रत्येक ऑब्ज़र्वेशन के लिए एक ही स्रोत-ए-वास्तविकता सुनिश्चित करनी चाहिए। ऐसे परिदृश्य होते हैं जहाँ हमारे पास किसी एक ग्राहक के बारे में कई ऑब्ज़र्वेशन होते हैं, या तो इसलिए कि उपयोगकर्ता ने फॉर्म दो बार सबमिट कर दिया, या डेटा एंट्री के दौरान त्रुटियाँ हुईं। यह कैसे भी हुआ हो, हमें सच्चाई का एकल, पूर्ण संस्करण विकसित करना चाहिए। इससे व्यवसाय सुनिश्चित कर सकते हैं कि:
एक ही ग्राहक को दो बार टार्गेट करने में समय और पैसा बर्बाद न हो
सच्चाई का एक भरोसेमंद और पूर्ण संस्करण विकसित हो, और विश्लेषण के परिणामों के आधार पर विश्वसनीय व्यावसायिक निर्णय लिए जा सकें।
आउट्लायर्स
आउट्लायर्स अत्यधिक डेटा पॉइंट्स होते हैं। ये आमतौर पर बहुत कम या बहुत अधिक मान होते हैं जो डेटा में बाकी पैटर्न के अनुरूप नहीं होते, जैसे:
200 वर्ष की आयु वाला ग्राहक
अंटार्कटिका क्षेत्र में 40° सेल्सियस का सेंसर रीडिंग
आउट्लायर्स की पहचान आउट्लायर्स की पहचान के लिए विभिन्न तकनीकें हैं, चाहे विज़ुअल माध्यम से हों या सांख्यिकीय तकनीकों से
डेटासेट को सॉर्ट करना: केवल डेटा को सॉर्ट करके, कोई भी आसानी से डेटासेट या रुचि के वेरिएबल्स के भीतर आउट्लायर्स को देख सकता है। हालाँकि, यह तकनीक बड़े डेटासेट्स पर विफल हो सकती है और एक नज़र में सभी मानों का पूर्वावलोकन करना कठिन हो सकता है।
विज़ुअलाइज़ेशन: बॉक्सप्लॉट्स, हिस्टोग्राम्स और स्कैटरप्लॉट्स जैसी विज़ुअल तकनीकों का उपयोग आउट्लायर्स का पता लगाना आसान बना सकता है।
Z-स्कोर का उपयोग: यह एक सांख्यिकीय तकनीक है जो यह मापती है कि कोई अवलोकित मान, सामान्य वितरण मानते हुए, कितना असामान्य है। यह उन मानक विचलनों की संख्या है जितना अवलोकित मान औसत से ऊपर या नीचे गिरते हैं।
आउट्लायर ट्रीटमेंट प्रक्रिया आउट्लायर ट्रीटमेंट हमारे डेटा में दर्शाए गए आउट्लायर्स को हटाने या बदलने की प्रक्रिया के रूप में कार्य करता है:
डेटा से आउट्लायर्स हटाएँ: इसमें आपके डेटा के निचले या ऊपरी X_percentile पर स्थित मानों को हटाना शामिल हो सकता है। कुछ परिदृश्य जहाँ आउट्लायर्स हटाए जा सकते हैं:
जब यह स्पष्ट हो कि डेटा गलत मापा गया है। जैसा कि पहले उल्लेख किया गया, 200 वर्ष का सक्रिय ग्राहक एक मान्य इनपुट नहीं है—यह हटाए जाने योग्य एक विशिष्ट आउट्लायर का उदाहरण है।
यदि आउट्लायर आपके विश्लेषण के परिणाम नहीं बदलता, तो आप इसे हटा सकते हैं। यह तब भी विचारणीय है जब डेटासेट में आउट्लायर्स की संख्या कुल डेटा की तुलना में बहुत अधिक न हो।
आउट्लायर्स को बदलें: इसमें इन चरम मानों को औसत, माध्यिका या मोड मानों से बदलना शामिल है। यदि आउट्लायर्स की संख्या वास्तविक डेटा की तुलना में उल्लेखनीय आकार की है, तो आउट्लायर्स को हटाना विफल होगा। ध्यान दें: औसत मान आउट्लायर्स के प्रति संवेदनशील होते हैं। इसलिए, प्रतिस्थापन के लिए माध्यिका या मोड मान पर विचार करना उचित है।
डेटा वेरिफिकेशन
डेटा क्लीनिंग हो जाने के बाद, डेटा एक्सप्लोरेशन विधि के माध्यम से डेटा की गुणवत्ता का पुनः आकलन करना महत्वपूर्ण है। यह डेटा क्लीनिंग प्रक्रिया की शुद्धता और पूर्णता को सत्यापित करने के लिए है—आंशिक रूप से यह सुनिश्चित करने के लिए कि हमने कोई चरण नहीं छोड़ा, और यह भी सुनिश्चित करने के लिए कि हम डेटा के प्रसंग के अनुरूप हैं।
डेटा क्लीनिंग, रिपोर्टिंग, और ऑटोमेशन
रिपोर्टिंग में सफाई के बाद डेटा के स्वास्थ्य का दस्तावेजीकरण करना, साथ ही सफाई प्रक्रिया में शामिल चरणों का दस्तावेजीकरण करना शामिल है। रिपोर्टिंग यह सुनिश्चित करती है कि भविष्य में समान डेटा क्लीनिंग आवश्यकताओं के लिए एक मार्गदर्शिका (reproducibility) मौजूद हो, ताकि आवश्यकता पड़ने पर इस प्रक्रिया को स्वचालित किया जा सके।
ऑटोमेशन का उद्देश्य डेटा क्लीनिंग को पुनरुत्पादन योग्य बनाना है। डेटा क्लीनिंग प्रक्रिया का अधिकांश हिस्सा पुन: उपयोग योग्य स्क्रिप्ट्स से बना होता है, जिन्हें आवश्यकता पड़ने पर कुछ मामूली बदलावों के साथ फिर से उपयोग किया जा सकता है।
निष्कर्ष
हमने डेटा क्लीनिंग पर विस्तार से चर्चा की है और वे सभी घटक कवर किए हैं जिनका सफल डेटा क्लीनिंग प्रोजेक्ट के लिए ध्यान रखना आवश्यक है। यह समय लेने वाला चरण है जिस पर डेटा प्रोफेशनल्स पूरे डेटा साइंस प्रोजेक्ट का अनुमानित 60% समय बिताते हैं। यह वह नींव है जो अकेले किसी डेटा साइंस प्रोजेक्ट के नतीजे को निर्धारित करेगी। अलग-अलग स्रोतों से आया डेटा अलग-अलग ज़रूरतें रखता है और आपको अपने उपयोगप्रकरण के अनुरूप प्रक्रियाओं को अनुकूलित करना होगा।
संसाधन:
डेटा ट्रांसफॉर्मेशन से संबंधित छवियाँ यहाँ उपलब्ध एक Excel वर्कबुक से ली गई हैं: यहाँ
चाहे हमारे एनालिटिक्स या प्रेडिक्टिव एल्गोरिद्म कितने भी उन्नत क्यों न हों, आउटपुट की गुणवत्ता इनपुट डेटा पर निर्भर करती है। दूसरे शब्दों में, 'garbage in, garbage out.'
क्योंकि डेटा इन सभी प्रक्रियाओं की नींव है, इसलिए यह सुनिश्चित करने में पर्याप्त समय लगाना महत्वपूर्ण है कि डेटा ठीक से परिष्कृत हो।
डेटा क्लीनिंग डेटा साइंस लाइफसाइकल में एक बुनियादी प्रक्रिया है, और जब हम अंतर्दृष्टि खोजने और विश्वसनीय जवाब बनाने की कोशिश करते हैं, तो इसकी भूमिका का महत्व कम करके नहीं आँका जा सकता। अक्सर वास्तविक दुनिया में डेटा हमेशा गंदा होगा, और डेटा क्लीनिंग पूरी तरह टाली नहीं जा सकती।
इस लेख में, हम कुछ महत्वपूर्ण विचारों को कवर करेंगे, जैसे missing मान, डुप्लीकेट्स, और आउट्लायर्स को कैसे संभालें। अधिक व्यापक निर्देशों के लिए, हमारे Cleaning Data in Python या Cleaning Data in R कोर्स ज़रूर लें।
गंदे डेटा का कारण क्या है?
सरल शब्दों में, डेटा क्लीनिंग (या क्लेंज़िंग) डेटा विश्लेषण की तैयारी के लिए आवश्यक प्रक्रिया है। इसमें डुप्लीकेट और अधूरे रिकॉर्ड ढूँढना और हटाना, तथा गलत रिकॉर्ड को सुधारने के लिए डेटा में संशोधन करना शामिल हो सकता है।
गंदा डेटा हमेशा से एक समस्या रहा है, फिर भी पिछले दशक में डेटा जेनरेशन में जबरदस्त वृद्धि हुई है। सिर्फ 2020 में ही दुनिया ने 64 ज़ेटाबाइट्स से अधिक डेटा उत्पन्न किया, जो 6.4 ट्रिलियन गीगाबाइट्स के बराबर है। हालांकि इस सभी डेटा में से 2% से भी कम संरक्षित रहता है, यह फिर भी निस्संदेह "गंदे डेटा" की पहले से मौजूद आम समस्या को और बढ़ाता है। डेटा क्लीनिंग ठीक से करने से पहले, यह समझना महत्वपूर्ण है कि वह पहले स्थान पर गंदा कैसे हुआ। यह निम्नलिखित आम स्रोतों से आ सकता है:
जिस गंदे डेटा को हम साफ करना चाहते हैं उसकी जड़ कारणों से अवगत होना, हमारे डेटासेट से जुड़ी विभिन्न समस्याओं को वर्गीकृत करने की अनुमति देने वाले डेटा गुणवत्ता मानदंड लागू करने की एक अच्छी नींव रखता है।
डेटा क्लीनिंग इतनी महत्वपूर्ण क्यों है?
डेटा क्लीनिंग की प्रक्रिया महत्वपूर्ण है क्योंकि यह किसी संगठन के डेटा की सफाई के लिए एक टेम्पलेट बनाने में मदद करती है। जैसा कि पहले उल्लेख किया गया, किसी भी डेटा एनालिटिक्स या डेटा साइंस प्रक्रिया में garbage in, garbage out लागू होता है। जब इसे नज़रअंदाज़ किया जाता है, तो परिणाम समय, धन और अन्य संसाधनों की दृष्टि से महँगे, त्रुटिपूर्ण विश्लेषणात्मक नतीजे होते हैं।
डेटा गुणवत्ता क्या है?
डेटा गुणवत्ता एक गुणात्मक और/या मात्रात्मक माप है कि हमारा डेटा उस उद्देश्य के लिए कितना उपयुक्त है जिसे उसे पूरा करना है। ये माप व्यावहारिक टेम्पलेट्स हैं जिनका उपयोग हम यह आँकने के लिए कर सकते हैं कि उपलब्ध डेटा हमारे वांछित उद्देश्यों के लिए कितना उपयुक्त है। इन डेटा गुणवत्ता मापों को मेट्रिक टेस्ट के रूप में देखें जिन्हें डेटा साइंस प्रक्रियाओं के लिए उपयुक्त ठहराने हेतु हमारे डेटा को पास करना चाहिए।
डेटा गुणवत्ता के मानदंड
डेटा क्लीनिंग बनाम डेटा ट्रांसफॉर्मेशन
डेटा क्लीनिंग और डेटा ट्रांसफॉर्मेशन के बीच अंतर स्पष्ट करना महत्वपूर्ण है। डेटा ट्रांसफॉर्मेशन ऐसी प्रक्रियाओं का समूह है जो हमें उपलब्ध डेटा से अधिक अंतर्दृष्टि निकालने में मदद कर सकता है। ये प्रक्रियाएँ आम तौर पर डेटा के कच्चे प्रारूप को किसी अन्य प्रारूप में बदलती हैं, कुछ उदाहरण शामिल हैं:
ध्यान दें कि अधिकांश डेटा ट्रांसफॉर्मेशन प्रक्रियाओं में डेटा के मूल प्रतिनिधित्व को बदला जाता है। जबकि डेटा वही रहता है, कुछ तकनीकों को अपनाकर इसे मशीन लर्निंग या किसी अन्य उद्देश्य के लिए उपयोगी प्रारूप में बदला जाता है।
डेटा क्लीनिंग कैसे की जाती है
उच्च-गुणवत्ता वाले डेटा को प्राप्त करने के लिए दिशानिर्देशों का एक सेट होना महत्वपूर्ण है। इन दिशानिर्देशों को डेटा क्लीनिंग वर्कफ़्लो कहा जा सकता है। ये हमें डेटा क्लीनिंग के लिए आवश्यक सभी प्रक्रियाओं को ध्यान में रखने में मदद करते हैं। इस वर्कफ़्लो में शामिल प्रक्रियाएँ हैं:
डेटा एक्सप्लोरेशन
डेटा एक्सप्लोरेशन का मतलब डेटा में मौजूद वेरिएबल्स का गहन अन्वेषण करके डेटा को समझना है। डेटा में अंतर्निहित समस्याओं को ठीक से उजागर करने के लिए इसमें कई विज़ुअल और एग्रीगेशन तकनीकों की आवश्यकता होती है। उचित अन्वेषण के लिए, यहाँ कुछ बिंदु ध्यान देने योग्य हैं:
डेटा प्रसंग
हम किसी भी डेटा को साफ करने से पहले, हमें उसके प्रसंग को समझना चाहिए। डेटा प्रसंग डेटा में निहित सभी एंटिटीज़ का स्रोत है। यह उन परिस्थितियों के सेट को कैद करता है जो बताते हैं कि डेटा कैसे एकत्र किया गया, और उसे कैसे एकत्र किया गया यह बताता है कि इसका उपयोग कैसे और किसलिए किया जा सकता है।
यह इस बात के लिए मार्गदर्शक का काम करता है कि सफाई (और विश्लेषण) में क्या स्वीकार्य है ताकि हम ऐसे डेटा से सही अंतर्दृष्टि प्राप्त कर सकें। एक बार जब हमें स्पष्ट हो जाए कि डेटा कैसे/कब एकत्र किया गया, तब हमें उस डेटा का अन्वेषण करना चाहिए।
एक्सप्लोरेटरी डेटा एनालिसिस
एक्सप्लोरेटरी डेटा एनालिसिस डेटा पर प्रारंभिक जाँच-पड़ताल करने की महत्वपूर्ण प्रक्रिया है ताकि सारांश सांख्यिकी और ग्राफिकल प्रतिनिधित्व की मदद से पैटर्न खोजे जा सकें, विसंगतियाँ पहचानी जा सकें, परिकल्पनाओं का परीक्षण किया जा सके, और अनुमानों की जाँच की जा सके। अन्वेषण के बिना खोज नहीं। यदि हम अपने डेटा का अन्वेषण नहीं करते, तो उसके भीतर मौजूद विभिन्न समस्याओं का पता लगाना कठिन होता है।
उदाहरण के लिए, हमारे पास यहाँ उपलब्ध कराया गया एक डेटासेट है। Department of Finance की Rolling Sales फाइलें, न्यूयॉर्क सिटी में पिछले बारह महीनों की अवधि में बेची गई संपत्तियों को टैक्स क्लास 1, 2, और 4 के लिए सूचीबद्ध करती हैं। हम उपलब्ध Bronx डेटा को डाउनलोड और रीड करेंगे।
इस डेटा फ़्रेम में उल्लेखनीय समस्याएँ शामिल हैं:
हालाँकि, Excel में वास्तविक डेटा का अन्वेषण करने पर पता चलता है कि वर्कबुक में वास्तविक तालिका 4वीं पंक्ति तक शुरू ही नहीं होती। इसलिए, डेटा को दोबारा पढ़ते समय कुछ पैरामीटर्स सेट करने से हम यह निर्दिष्ट कर सकते हैं कि किन पंक्तियों को स्किप करना है और किस पंक्ति को हेडर बनाना है:
अब डेटा कैसे दिख रहा है, इसमें एक महत्वपूर्ण बदलाव है। जबकि हम पहली इम्पोर्ट को भी साफ कर सकते थे, डेटा एक्सप्लोरेशन ने हमें Python में हमारे डेटा इम्पोर्ट फ़ंक्शन में कुछ छोटे बदलावों से ही पर्याप्त समय बचाने में मदद की है।
डेटा एक्सप्लोरेशन किसी जाँच एजेंट की तरह अपराध स्थल पर प्रवेश करने जैसा है, जहाँ हम निष्क्रिय रूप से सभी गड़बड़ चीज़ों को देखते हैं; और डेटा क्लीनिंग वास्तविक अपराध को सुलझाने की सक्रिय प्रक्रिया है।
डेटा क्लीनिंग
डेटा एक्सप्लोरेशन आमतौर पर डेटा क्लीनिंग प्रक्रियाओं के साथ-साथ चलता है। जैसे ही हम विज़ुअल, एग्रीगेशन, या सांख्यिकीय तरीकों से अपने डेटा में समस्याएँ उजागर करते हैं, हमें उन्हें ठीक करना होता है। इस चरण में, डेटा या तो हटाया जाएगा, सुधारा जाएगा, या इम्प्यूट किया जाएगा।
असंगत रिकॉर्ड
असंगत रिकॉर्ड का एक सामान्य उदाहरण वह फॉर्म है जहाँ व्यक्तियों को अपना जेंडर दर्ज करना होता है। एक ही चीज़ के लिए अलग-अलग प्रारूप मिल सकते हैं, जैसे 'M', 'm', 'Male', या 'MALE', और क्या हमने इस महीने 'aples', 'apples', या 'APPLES' बेचे। इन्हें पहचानने का सबसे अच्छा तरीका फ़्रीक्वेंसी चार्ट के ज़रिए या कॉलम के सभी विशिष्ट मानों को प्रदर्शित करके हो सकता है। असंगत रिकॉर्ड पर कुछ कार्रवाइयाँ शामिल हैं, लेकिन इन्हीं तक सीमित नहीं हैं:
Python उदाहरण: ऊपर डेटा एक्सप्लोरेशन में इम्पोर्ट किए गए डेटासेट का उपयोग करते हुए, देखें कि कॉलम नाम असंगत रूप से लिखे गए हैं:
हालाँकि यह बड़ी बात नहीं लगती, लेकिन कॉलम नामों को लगातार सुलभ बनाना महत्वपूर्ण है। उदाहरण के लिए, EASE-MENT में हर शब्द के बीच हाइफ़न (-) है, जबकि बाकी में केवल स्पेसेज़ हैं।
डेटा क्लीनिंग का एक हिस्सा संगति सुनिश्चित करना है। आइए इसे दो चरणों में ठीक करने का प्रयास करें:
डेटा टाइप्स और टाइप कन्वर्ज़न
डेटा टाइप इस बात का प्रतिनिधित्व है कि डेटा कैसा है, जो कंपाइलर को बताता है कि डेटा का उपयोग कैसे किया जाना है। डेटा का प्रतिनिधित्व यह निर्धारित करता है कि ऐसे डेटा के साथ किस प्रकार के ऑपरेशन्स संभव हैं। आइए Bronx डेटा के हमारे डेटा फ़्रेम में प्रत्येक कॉलम के डेटा टाइप्स का पूर्वावलोकन करें।
नोट: देखें कि हम अब डॉट मेथड (
df.Year_Built) का उपयोग करके कॉलम नामों को कितनी आसानी से चुन पा रहे हैं।सभी डेटा टाइप्स क्रम में दिखते हैं, सिवाय Year_Built कॉलम के, जिसे श्रेणीबद्ध होना चाहिए। जबकि इसका बड़ा प्रभाव नहीं है, एग्रीगेशन करते समय Year_Built संभवतः शामिल हो जाएगा।
Missing डेटा
कभी-कभी ऐसी पंक्तियाँ (observations) होती हैं जिनमें डेटा missing होता है और कभी-कभी पूरे कॉलम ही पूरी तरह missing हो सकते हैं। तो ऐसी स्थितियों में हम क्या करें? क्या हम इसे नज़रअंदाज़ कर दें? इसकी तुलना एक टपकती छत से की जा सकती है जो बारिश होने पर रिसती है।
Missing मान अलग-अलग टूल्स में अलग-अलग रूप में दिखाई देते हैं। इनमें NULL, खाली स्ट्रिंग्स, NaN, NA, #NA, आदि शामिल हैं। missing डेटा से निपटने में डेटा प्रसंग महत्वपूर्ण है, और यह समझना कि डेटा क्यों missing है, बेहद ज़रूरी है। missing डेटा से निपटने के दो प्राथमिक तरीके हैं:
किसी भी तरीके पर निर्णय लेने से पहले, सबसे पहले कॉलम्स में missing मानों के पैटर्न की जाँच करनी चाहिए। हम इन्हें आँकने के लिए विज़ुअल और वर्णनात्मक तकनीकों का उपयोग करेंगे।
प्लॉट दृश्य रूप से दिखाता है कि:
हम Ease_Ment और Apartment_Number कॉलम्स को ड्रॉप करेंगे और फिर शेष कॉलम्स में missing मानों को बदलेंगे।
बेशक, missing मानों से निपटने के लिए और भी बहुत कुछ है, जैसा कि इस Datacamp कोर्स Dealing with Missing Values in Python में कवर किया गया है। अलग-अलग डेटासेट्स, टाइप्स और स्ट्रक्चर्स की अलग-अलग ज़रूरतें होती हैं, इसलिए missing मानों से निपटना सभी प्रकार के डेटासेट्स के लिए सीधी, स्पष्ट प्रक्रिया नहीं है। नीचे दी गई छवि दिखाती है कि किन अलग-अलग परिदृश्यों में डिलीशन तकनीक या इम्प्यूटेशन तकनीक लागू की जाए।
डुप्लीकेट्स
हमें प्रत्येक ऑब्ज़र्वेशन के लिए एक ही स्रोत-ए-वास्तविकता सुनिश्चित करनी चाहिए। ऐसे परिदृश्य होते हैं जहाँ हमारे पास किसी एक ग्राहक के बारे में कई ऑब्ज़र्वेशन होते हैं, या तो इसलिए कि उपयोगकर्ता ने फॉर्म दो बार सबमिट कर दिया, या डेटा एंट्री के दौरान त्रुटियाँ हुईं। यह कैसे भी हुआ हो, हमें सच्चाई का एकल, पूर्ण संस्करण विकसित करना चाहिए। इससे व्यवसाय सुनिश्चित कर सकते हैं कि:
आउट्लायर्स
आउट्लायर्स अत्यधिक डेटा पॉइंट्स होते हैं। ये आमतौर पर बहुत कम या बहुत अधिक मान होते हैं जो डेटा में बाकी पैटर्न के अनुरूप नहीं होते, जैसे:
आउट्लायर्स की पहचान आउट्लायर्स की पहचान के लिए विभिन्न तकनीकें हैं, चाहे विज़ुअल माध्यम से हों या सांख्यिकीय तकनीकों से
डेटासेट को सॉर्ट करना: केवल डेटा को सॉर्ट करके, कोई भी आसानी से डेटासेट या रुचि के वेरिएबल्स के भीतर आउट्लायर्स को देख सकता है। हालाँकि, यह तकनीक बड़े डेटासेट्स पर विफल हो सकती है और एक नज़र में सभी मानों का पूर्वावलोकन करना कठिन हो सकता है।
विज़ुअलाइज़ेशन: बॉक्सप्लॉट्स, हिस्टोग्राम्स और स्कैटरप्लॉट्स जैसी विज़ुअल तकनीकों का उपयोग आउट्लायर्स का पता लगाना आसान बना सकता है।
Z-स्कोर का उपयोग: यह एक सांख्यिकीय तकनीक है जो यह मापती है कि कोई अवलोकित मान, सामान्य वितरण मानते हुए, कितना असामान्य है। यह उन मानक विचलनों की संख्या है जितना अवलोकित मान औसत से ऊपर या नीचे गिरते हैं।
आउट्लायर ट्रीटमेंट प्रक्रिया आउट्लायर ट्रीटमेंट हमारे डेटा में दर्शाए गए आउट्लायर्स को हटाने या बदलने की प्रक्रिया के रूप में कार्य करता है:
यदि आउट्लायर आपके विश्लेषण के परिणाम नहीं बदलता, तो आप इसे हटा सकते हैं। यह तब भी विचारणीय है जब डेटासेट में आउट्लायर्स की संख्या कुल डेटा की तुलना में बहुत अधिक न हो।
आउट्लायर्स को बदलें: इसमें इन चरम मानों को औसत, माध्यिका या मोड मानों से बदलना शामिल है। यदि आउट्लायर्स की संख्या वास्तविक डेटा की तुलना में उल्लेखनीय आकार की है, तो आउट्लायर्स को हटाना विफल होगा। ध्यान दें: औसत मान आउट्लायर्स के प्रति संवेदनशील होते हैं। इसलिए, प्रतिस्थापन के लिए माध्यिका या मोड मान पर विचार करना उचित है।
डेटा वेरिफिकेशन
डेटा क्लीनिंग हो जाने के बाद, डेटा एक्सप्लोरेशन विधि के माध्यम से डेटा की गुणवत्ता का पुनः आकलन करना महत्वपूर्ण है। यह डेटा क्लीनिंग प्रक्रिया की शुद्धता और पूर्णता को सत्यापित करने के लिए है—आंशिक रूप से यह सुनिश्चित करने के लिए कि हमने कोई चरण नहीं छोड़ा, और यह भी सुनिश्चित करने के लिए कि हम डेटा के प्रसंग के अनुरूप हैं।
डेटा क्लीनिंग, रिपोर्टिंग, और ऑटोमेशन
रिपोर्टिंग में सफाई के बाद डेटा के स्वास्थ्य का दस्तावेजीकरण करना, साथ ही सफाई प्रक्रिया में शामिल चरणों का दस्तावेजीकरण करना शामिल है। रिपोर्टिंग यह सुनिश्चित करती है कि भविष्य में समान डेटा क्लीनिंग आवश्यकताओं के लिए एक मार्गदर्शिका (reproducibility) मौजूद हो, ताकि आवश्यकता पड़ने पर इस प्रक्रिया को स्वचालित किया जा सके।
ऑटोमेशन का उद्देश्य डेटा क्लीनिंग को पुनरुत्पादन योग्य बनाना है। डेटा क्लीनिंग प्रक्रिया का अधिकांश हिस्सा पुन: उपयोग योग्य स्क्रिप्ट्स से बना होता है, जिन्हें आवश्यकता पड़ने पर कुछ मामूली बदलावों के साथ फिर से उपयोग किया जा सकता है।
निष्कर्ष
हमने डेटा क्लीनिंग पर विस्तार से चर्चा की है और वे सभी घटक कवर किए हैं जिनका सफल डेटा क्लीनिंग प्रोजेक्ट के लिए ध्यान रखना आवश्यक है। यह समय लेने वाला चरण है जिस पर डेटा प्रोफेशनल्स पूरे डेटा साइंस प्रोजेक्ट का अनुमानित 60% समय बिताते हैं। यह वह नींव है जो अकेले किसी डेटा साइंस प्रोजेक्ट के नतीजे को निर्धारित करेगी। अलग-अलग स्रोतों से आया डेटा अलग-अलग ज़रूरतें रखता है और आपको अपने उपयोगप्रकरण के अनुरूप प्रक्रियाओं को अनुकूलित करना होगा।
संसाधन: