Wednesday, 9 September 2026

डेटा एनालिसिस - भाग 2

नमस्कार मित्रों!

डेटा एनालिसिस श्रृंखला के भाग 1 में हमने जाना कि डेटा एनालिसिस क्या है और NumPy व Pandas किस तरह आधुनिक डेटा साइंस के आधार स्तंभ हैं।

जब आप किसी किताब या ट्यूटोरियल में काम करते हैं, तो आपको बना-बनाया, साफ़-सुथरा डेटा मिलता है। लेकिन वास्तविक दुनिया (Real-world) में ऐसा बिल्कुल नहीं होता। वास्तविक डेटा अक्सर अधूरा, बिखरा हुआ और गलतियों से भरा होता है:

  • कहीं ग्राहक का फ़ोन नंबर या उम्र दर्ज नहीं होती (Missing Values)।
  • कहीं उम्र -5 या 250 लिख दी जाती है (Outliers/Errors)।
  • कहीं एक ही छात्र का नाम तीन बार अलग-अलग स्पेलिंग के साथ दर्ज होता है (Duplicate & Inconsistent Data)।

यदि आपने इस ख़राब डेटा पर सीधे AI मॉडल या सांख्यिकीय विश्लेषण लगा दिया, तो आपका निष्कर्ष भी पूरी तरह ग़लत निकलेगा। डेटा साइंस में एक प्रसिद्ध कहावत है: "Garbage In, Garbage Out"।

आज AI Bodh पर इस 5-भागीय श्रृंखला के भाग 2 में हम सीखेंगे कि NumPy Arrays के ज़रिए गणनाओं को गति कैसे दी जाती है और बिखरे हुए कच्चे डेटा को विश्लेषण योग्य (Clean Data) कैसे बनाया जाता है।

1. NumPy Arrays: अव्यवस्थित संख्याओं का अनुशासन

सामान्य Python की List लचीली ज़रूर होती है, लेकिन लाखों संख्याओं पर काम करते समय वह अत्यधिक मेमोरी और समय लेती है। NumPy का ndarray डेटा को एक निश्चित प्रकार (Homogeneous Data Type) में मेमोरी के भीतर एक कतार में रखता है।

Python List:  [ 10 (int) ] ──> [ "A" (str) ] ──> [ 3.14 (float) ]  (बिखरी हुई मेमोरी)

NumPy Array:  [ 10 | 20 | 30 | 40 | 50 ]                             (क्रमबद्ध व तेज़ मेमोरी)

NumPy के 3 मुख्य बुनियादी हथियार:

Array का निर्माण और रीशेपिंग (Reshaping):

डेटा को 1D (एक रेखा) से 2D (मैट्रिक्स) में बदलना:

Python

import numpy as np

# 6 संख्याओं का 1D Array

arr = np.array([10, 20, 30, 40, 50, 60])

# इसे 2 पंक्तियों और 3 स्तंभों (2x3) के 2D Matrix में बदलना

matrix = arr.reshape(2, 3)

बुलियन इंडेक्सिंग (फ़िल्टरिंग का शॉर्टकट):

बिना किसी जटिल लूप के केवल एक शर्त लगाकर गलत डेटा छांटना:

Python

scores = np.array([45, 88, -5, 92, 120, 76])

# केवल वैध अंक (0 से 100 के बीच) अलग निकालना

valid_scores = scores[(scores >= 0) & (scores <= 100)]

# Output: [45, 88, 92, 76]

सांख्यिकीय गणनाएँ (Fast Statistics):

Python

print("औसत:", np.mean(valid_scores))

print("अधिकतम:", np.max(valid_scores))

print("मानक विचलन (Std Dev):", np.std(valid_scores))


2. डेटा क्लीनिंग (Data Cleaning): चार प्रमुख कदम

जब हम किसी डेटासेट को लोड करते हैं, तो उसे साफ़ करने के लिए एक व्यवस्थित प्रक्रिया अपनाई जाती है:

[कच्चा डेटा] 

     │

     ├── 1. Missing Data (छूटे हुए मान) पहचानना व भरना

     │

     ├── 2. Data Types (गलत फॉर्मेट) को सही करना

     │

     ├── 3. Duplicates (दोहराव) हटाना

     │

     └── 4. Outliers (अस्वाभाविक मान) को ठीक करना

     │

[विश्लेषण योग्य साफ़ डेटा]


3. छूटे हुए मानों (Missing Values) का प्रबंधन

डेटासेट में खाली जगहों को आमतौर पर NaN (Not a Number) या None से दर्शाया जाता है। इन्हें संभालने के दो मुख्य तरीके होते हैं:

(क) ड्रॉप करना (Dropping):

यदि किसी पंक्ति में बहुत सारा डेटा गायब है या डेटासेट इतना बड़ा है कि कुछ पंक्तियाँ हटाने से फर्क नहीं पड़ेगा:

Python

import pandas as pd

df = pd.read_csv('students_data.csv')

# जिन पंक्तियों में कोई भी मान छूटा हुआ है, उन्हें हटाना

clean_df = df.dropna()

(ख) इंप्यूटेशन (Imputation - मान भरना):

यदि डेटा महत्वपूर्ण है और आप रिकॉर्ड्स हटाना नहीं चाहते, तो खाली जगह पर औसत (Mean) या मध्यिका (Median) मान भर दिया जाता है:

Python

# छूटे हुए 'अंक' की जगह कक्षा का औसत भरना

average_marks = df['Marks'].mean()

df['Marks'] = df['Marks'].fillna(average_marks)


4. गलत फॉर्मेट और डुप्लिकेट्स को ठीक करना

अक्सर ऐसा होता है कि संख्यात्मक कॉलम (जैसे सैलरी या तारीख) टेक्स्ट (String) के रूप में लोड हो जाते हैं।

डेटा टाइप बदलना (Type Casting):

Python

# टेक्स्ट को संख्या में बदलना

df['Age'] = pd.to_numeric(df['Age'], errors='coerce')

दोहराव (Duplicate Rows) हटाना:

Python

# एक जैसी प्रविष्टियों को साफ़ करना

df = df.drop_duplicates()


डेटा क्लीनिंग चेकलिस्ट (Data Cleaning Checklist)

डेटा पर कोई भी विश्लेषण शुरू करने से पहले हमेशा ये 4 त्वरित कमांड चलाकर स्थिति जाँचें:

कमांड

 कार्य

df.info()

कुल पंक्तियाँ, कॉलम और डेटा टाइप्स की पूरी रूपरेखा

df.isnull().sum()

प्रत्येक कॉलम में कितने मान गायब (Missing) हैं

df.describe()

 न्यूनतम, अधिकतम, औसत और मध्यिका का त्वरित सांख्यिकीय सारांश

df.duplicated().sum()

डेटासेट में कुल कितनी डुप्लीकेट पंक्तियाँ हैं


अब हमारा डेटा साफ़, शुद्ध और व्यवस्थित हो चुका है।

श्रृंखला के भाग 3 में हम जानेंगे: "डेटा को तराशना : Pandas DataFrames के साथ डेटा ट्रांसफ़ॉर्मेशन, रीशेपिंग और एडवांस्ड इंडेक्सिंग।" वहाँ हम सीखेंगे कि बड़े डेटासेट से अपनी मनपसंद जानकारी को चुटकियों में कैसे छांटा और पुनर्गठित किया जाता है।

Bottom Line

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

–०–

– डॉ. चंद्रेश कुमार छतलानी

No comments:

Post a Comment