Last chance! 50% off DataCamp Premium
Sale ends in
चाहे हमारे एनालिटिक्स या प्रेडिक्टिव एल्गोरिद्म कितने भी उन्नत क्यों न हों, आउटपुट की गुणवत्ता इनपुट डेटा पर निर्भर करती है। दूसरे शब्दों में, '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 डेटा को डाउनलोड और रीड करेंगे।
#pandas
import 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()

इस डेटा फ़्रेम में उल्लेखनीय समस्याएँ शामिल हैं:
हालाँकि, 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 issues
for 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 डेटा के हमारे डेटा फ़्रेम में प्रत्येक कॉलम के डेटा टाइप्स का पूर्वावलोकन करें।
#data types
df.dtypes

नोट: देखें कि हम अब डॉट मेथड (df.Year_Built) का उपयोग करके कॉलम नामों को कितनी आसानी से चुन पा रहे हैं।
सभी डेटा टाइप्स क्रम में दिखते हैं, सिवाय Year_Built कॉलम के, जिसे श्रेणीबद्ध होना चाहिए। जबकि इसका बड़ा प्रभाव नहीं है, एग्रीगेशन करते समय Year_Built संभवतः शामिल हो जाएगा।
#Fix Year_Built column
df.Year_Built = df.Year_Built.astype("str")
#Check
df.dtypes

कभी-कभी ऐसी पंक्तियाँ (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())

प्लॉट दृश्य रूप से दिखाता है कि:
#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 values
for col in replace_cols:
#if column is year built we replace with median otherwise the mean
if 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 मानों से निपटना सभी प्रकार के डेटासेट्स के लिए सीधी, स्पष्ट प्रक्रिया नहीं है। नीचे दी गई छवि दिखाती है कि किन अलग-अलग परिदृश्यों में डिलीशन तकनीक या इम्प्यूटेशन तकनीक लागू की जाए।

हमें प्रत्येक ऑब्ज़र्वेशन के लिए एक ही स्रोत-ए-वास्तविकता सुनिश्चित करनी चाहिए। ऐसे परिदृश्य होते हैं जहाँ हमारे पास किसी एक ग्राहक के बारे में कई ऑब्ज़र्वेशन होते हैं, या तो इसलिए कि उपयोगकर्ता ने फॉर्म दो बार सबमिट कर दिया, या डेटा एंट्री के दौरान त्रुटियाँ हुईं। यह कैसे भी हुआ हो, हमें सच्चाई का एकल, पूर्ण संस्करण विकसित करना चाहिए। इससे व्यवसाय सुनिश्चित कर सकते हैं कि:
आउट्लायर्स अत्यधिक डेटा पॉइंट्स होते हैं। ये आमतौर पर बहुत कम या बहुत अधिक मान होते हैं जो डेटा में बाकी पैटर्न के अनुरूप नहीं होते, जैसे:
आउट्लायर्स की पहचान आउट्लायर्स की पहचान के लिए विभिन्न तकनीकें हैं, चाहे विज़ुअल माध्यम से हों या सांख्यिकीय तकनीकों से
डेटासेट को सॉर्ट करना: केवल डेटा को सॉर्ट करके, कोई भी आसानी से डेटासेट या रुचि के वेरिएबल्स के भीतर आउट्लायर्स को देख सकता है। हालाँकि, यह तकनीक बड़े डेटासेट्स पर विफल हो सकती है और एक नज़र में सभी मानों का पूर्वावलोकन करना कठिन हो सकता है।
विज़ुअलाइज़ेशन: बॉक्सप्लॉट्स, हिस्टोग्राम्स और स्कैटरप्लॉट्स जैसी विज़ुअल तकनीकों का उपयोग आउट्लायर्स का पता लगाना आसान बना सकता है।
Z-स्कोर का उपयोग: यह एक सांख्यिकीय तकनीक है जो यह मापती है कि कोई अवलोकित मान, सामान्य वितरण मानते हुए, कितना असामान्य है। यह उन मानक विचलनों की संख्या है जितना अवलोकित मान औसत से ऊपर या नीचे गिरते हैं।
आउट्लायर ट्रीटमेंट प्रक्रिया आउट्लायर ट्रीटमेंट हमारे डेटा में दर्शाए गए आउट्लायर्स को हटाने या बदलने की प्रक्रिया के रूप में कार्य करता है:
यदि आउट्लायर आपके विश्लेषण के परिणाम नहीं बदलता, तो आप इसे हटा सकते हैं। यह तब भी विचारणीय है जब डेटासेट में आउट्लायर्स की संख्या कुल डेटा की तुलना में बहुत अधिक न हो।
आउट्लायर्स को बदलें: इसमें इन चरम मानों को औसत, माध्यिका या मोड मानों से बदलना शामिल है। यदि आउट्लायर्स की संख्या वास्तविक डेटा की तुलना में उल्लेखनीय आकार की है, तो आउट्लायर्स को हटाना विफल होगा। ध्यान दें: औसत मान आउट्लायर्स के प्रति संवेदनशील होते हैं। इसलिए, प्रतिस्थापन के लिए माध्यिका या मोड मान पर विचार करना उचित है।
डेटा क्लीनिंग हो जाने के बाद, डेटा एक्सप्लोरेशन विधि के माध्यम से डेटा की गुणवत्ता का पुनः आकलन करना महत्वपूर्ण है। यह डेटा क्लीनिंग प्रक्रिया की शुद्धता और पूर्णता को सत्यापित करने के लिए है—आंशिक रूप से यह सुनिश्चित करने के लिए कि हमने कोई चरण नहीं छोड़ा, और यह भी सुनिश्चित करने के लिए कि हम डेटा के प्रसंग के अनुरूप हैं।
रिपोर्टिंग में सफाई के बाद डेटा के स्वास्थ्य का दस्तावेजीकरण करना, साथ ही सफाई प्रक्रिया में शामिल चरणों का दस्तावेजीकरण करना शामिल है। रिपोर्टिंग यह सुनिश्चित करती है कि भविष्य में समान डेटा क्लीनिंग आवश्यकताओं के लिए एक मार्गदर्शिका (reproducibility) मौजूद हो, ताकि आवश्यकता पड़ने पर इस प्रक्रिया को स्वचालित किया जा सके।
ऑटोमेशन का उद्देश्य डेटा क्लीनिंग को पुनरुत्पादन योग्य बनाना है। डेटा क्लीनिंग प्रक्रिया का अधिकांश हिस्सा पुन: उपयोग योग्य स्क्रिप्ट्स से बना होता है, जिन्हें आवश्यकता पड़ने पर कुछ मामूली बदलावों के साथ फिर से उपयोग किया जा सकता है।
हमने डेटा क्लीनिंग पर विस्तार से चर्चा की है और वे सभी घटक कवर किए हैं जिनका सफल डेटा क्लीनिंग प्रोजेक्ट के लिए ध्यान रखना आवश्यक है। यह समय लेने वाला चरण है जिस पर डेटा प्रोफेशनल्स पूरे डेटा साइंस प्रोजेक्ट का अनुमानित 60% समय बिताते हैं। यह वह नींव है जो अकेले किसी डेटा साइंस प्रोजेक्ट के नतीजे को निर्धारित करेगी। अलग-अलग स्रोतों से आया डेटा अलग-अलग ज़रूरतें रखता है और आपको अपने उपयोगप्रकरण के अनुरूप प्रक्रियाओं को अनुकूलित करना होगा।
संसाधन:
DataCamp के साथ डेटा क्लीनिंग सीखें
{count, plural, one {कोर्स} other {कोर्स}}
{count, plural, one {कोर्स} other {कोर्स}}
{count, plural, one {कोर्स} other {कोर्स}}