नमस्कार मित्रों!
डेटा एनालिसिस श्रृंखला के पिछले दो भागों में हमने डेटा एनालिसिस की बुनियादी समझ बनाई और अव्यवस्थित डेटा को साफ़ (Clean) करना सीखा।
अब आपके पास एक ऐसा डेटासेट है जिसमें कोई ग़लत या छूटी हुई वैल्यूज़ नहीं हैं। लेकिन केवल साफ़ डेटा होना ही काफ़ी नहीं होता। असली चुनौती तब शुरू होती है जब आपको उस विशाल डेटासेट में से अपनी ज़रूरत की खास जानकारी खोजनी हो, नए कॉलम बनाने हों या डेटा को अलग-अलग कोणों से पुनर्गठित (Reshape) करना हो।
Excel में जो काम करने के लिए आपको दर्जनों फ़ॉर्मूले, VLOOKUP और जटिल फ़िल्टर लगाने पड़ते हैं, वही काम Python की Pandas लाइब्रेरी में कोड की महज़ एक या दो पंक्तियों में हो जाता है।
आज AI Bodh पर इस 5-भागीय श्रृंखला के भाग 3 में हम सीखेंगे कि Pandas DataFrames को अपनी आवश्यकतानुसार कैसे छांटा, बदला और तराशा जाता है।
1. सटीक चयन: loc बनाम iloc का अंतर
DataFrame से विशिष्ट पंक्तियों और स्तंभों को चुनने के लिए Pandas दो सबसे मुख्य टूल्स देता है:
loc (नाम के ज़रिए खोजना):
जब आप कॉलम या इंडेक्स के असली नाम से डेटा निकालना चाहते हैं:
Python
import pandas as pd
# उन छात्रों का डेटा जिनकी उम्र 20 से अधिक है और केवल 'Name' और 'Marks' देखना है
df.loc[df['Age'] > 20, ['Name', 'Marks']]
iloc (पोजीशन/नंबर के ज़रिए खोजना):
जब आपको कॉलम के नाम की जगह उसकी संख्यात्मक स्थिति (Index Position) से मतलब हो:
Python
# पहली 5 पंक्तियाँ और पहले 3 कॉलम निकालना
df.iloc[0:5, 0:3]
2. मल्टीपल कंडीशनल फ़िल्टरिंग (शर्तों के आधार पर डेटा छांटना)
वास्तविक एनालिसिस में अक्सर कई शर्तें एक साथ लगानी पड़ती हैं। Pandas में लॉजिकल ऑपरेटर्स (& for AND, | for OR) का उपयोग करके सटीक रिकॉर्ड्स निकाले जाते हैं:
Python
# शर्त: जयपुर शहर के छात्र जिनके अंक 80 से अधिक हों
top_jaipur_students = df[(df['City'] == 'Jaipur') & (df['Marks'] >= 80)]
# शर्त: जो छात्र या तो उदयपुर से हों या जोधपुर से
selected_cities = df[df['City'].isin(['Udaipur', 'Jodhpur'])]
3. फ़ीचर इंजीनियरिंग: नए कॉलम बनाना और ट्रांसफ़ॉर्मेशन
डेटा को तराशने का एक महत्वपूर्ण पहलू है मौजूदा डेटा से नई और अधिक उपयोगी जानकारी तैयार करना। इसे डेटा साइंस में फ़ीचर इंजीनियरिंग (Feature Engineering) कहते हैं।
(क) गणितीय ट्रांसफ़ॉर्मेशन:
Python
# कुल अंकों में से प्रतिशत (Percentage) का नया कॉलम जोड़ना
df['Percentage'] = (df['Total_Marks'] / 500) * 100
(ख) apply() और कस्टम लॉजिक:
जब आपको हर पंक्ति पर कोई विशेष नियम लागू करना हो, तब apply() फ़ंक्शन सबसे उपयोगी साबित होता है:
Python
# अंकों के आधार पर ग्रेड तय करना
def assign_grade(marks):
if marks >= 90:
return 'A+'
elif marks >= 75:
return 'A'
elif marks >= 60:
return 'B'
else:
return 'C'
df['Grade'] = df['Marks'].apply(assign_grade)
4. डेटा को रीशेप करना: सॉर्टिंग और री-इंडेक्सिंग
डेटा को व्यवस्थित रूप में प्रस्तुत करने के लिए उसे क्रमबद्ध करना आवश्यक होता है:
डेटा को सॉर्ट करना (Sorting):
Python
# अंकों के घटते क्रम (Descending Order) में डेटा लगाना
df_sorted = df.sort_values(by='Marks', ascending=False)
कॉलम का नाम बदलना (Renaming):
Python
df.rename(columns={'Marks': 'Final_Score', 'City': 'Location'}, inplace=True)
अनावश्यक कॉलम हटाना (Dropping):
Python
df.drop(columns=['Temporary_ID'], inplace=True)
अगले भाग में
अब आपका डेटा न केवल साफ़ है, बल्कि आपने उसे अपनी ज़रूरतों के हिसाब से फ़िल्टर और ट्रांसफ़ॉर्म करना भी सीख लिया है।
श्रृंखला के भाग 4 में हम डेटा एनालिसिस के सबसे रोमांचक चरण में प्रवेश करेंगे: "GroupBy ऑपरेशन्स, डेटा एग्रीगेशन और तुलनात्मक विश्लेषण।" वहाँ हम जानेंगे कि लाखों पंक्तियों के डेटा को सारांशित (Summarize) करके बड़े ट्रेंड्स को सेकंडों में कैसे समझा जाता है।
Bottom Line
डेटा एनालिसिस केवल डेटा को स्टोर करने के बारे में नहीं है, बल्कि उसमें से सही सवाल पूछकर सही जानकारी बाहर निकालने की कला है। Pandas DataFrames आपको वह लचीलापन देते हैं जिससे आप डेटा को अपनी सोच के अनुरूप किसी भी सांचे में ढाल सकते हैं।
सीखते रहिए, कोड का अभ्यास करते रहिए और डेटा के इस सफ़र में जुड़े रहिए!
–०–
– डॉ. चंद्रेश कुमार छतलानी

No comments:
Post a Comment