कोर्स
डेटा मैनिपुलेशन की दुनिया में pandas के साथ काम करते समय, .explode() मेथड अक्सर DataFrames में लिस्ट के साथ काम करते हुए उपयोगी साबित होती है। यह ट्यूटोरियल .explode() मेथड को बुनियादी यांत्रिकी से लेकर उन्नत उपयोग और सामान्य गलतियों तक साधने के लिए एक हैंडबुक का काम करता है।
संक्षिप्त उत्तर: .explode() ऐसे काम करती है
यदि आप त्वरित जवाब के लिए आए हैं, तो केवल इस सेक्शन को पढ़ें। .explode() मेथड किसी लिस्ट-जैसे कॉलम की एंट्रियों को कई पंक्तियों में विस्तारित करने के लिए डिज़ाइन की गई है, जिससे लिस्ट के प्रत्येक तत्व के लिए एक अलग पंक्ति बनती है। उदाहरण के लिए, प्रक्रिया को दर्शाने के लिए हम निम्न DataFrame df का उपयोग करेंगे:
|
ID |
Interests |
|
1 |
['Python', 'Data Science'] |
|
2 |
['Machine Learning', 'AI'] |
.explode() मेथड Interests कॉलम के तत्वों को इस प्रकार विस्तारित कर देगी:
# Explode the Interests column
exploded_df = df.explode('Interests')
|
ID |
Interests |
|
1 |
Python |
|
1 |
Data Science |
|
2 |
Machine Learning |
|
2 |
AI |
Pandas की .explode() मेथड क्या है?
.explode() मेथड pandas DataFrames के भीतर नेस्टेड डेटा, जैसे लिस्ट या ट्यूपल, को संभालना आसान बनाने के लिए बनाई गई है। लिस्ट जैसी संरचना के प्रत्येक तत्व को अलग पंक्ति में बदलकर, .explode() डेटा की उपलब्धता और विश्लेषण-तत्परता को बढ़ाती है।
.explode() मेथड कैसे काम करती है?
.explode() की कार्यक्षमता शक्तिशाली होने के साथ-साथ सीधी भी है, और डेटा मैनिपुलेशन के कार्यों में उपयोगकर्ता-मित्रता और दक्षता पर केंद्रित है।
Column: उस कॉलम को निर्दिष्ट करता है जिसमें लिस्ट-जैसी एंट्रियाँ हैं जिन्हें एक्सप्लोड करना है।ignore_index: जबTrueकिया जाता है, तो मेथड इंडेक्स को डिफ़ॉल्ट पूर्णांक इंडेक्स पर रीसेट कर देती है, जिससे एक्सप्लोजन के बाद DataFrame की अखंडता बनाए रखने में मदद मिलती है। डिफ़ॉल्ट मानFalseहै।
Pandas की .explode() मेथड का उपयोग करने के दो तरीके
Pandas में सिंगल कॉलम को एक्सप्लोड करना
सबसे सामान्य उपयोग मामला एक सिंगल कॉलम को एक्सप्लोड करना है, जिससे उसकी लिस्ट-जैसी प्रत्येक एंट्री अलग-अलग पंक्तियों में फैल जाती है। संक्षिप्त उत्तर वाले सेक्शन में हमने यही कवर किया था। चलिए इस उदाहरण को फिर देखते हैं। यहाँ हमारे पास DataFrame df है, जिसमें व्यक्तियों के ID और उनके सीखने के रुचि-क्षेत्र हैं। जैसा कि आप देख सकते हैं, सीखने की रुचियाँ लिस्ट के रूप में स्वरूपित हैं।
|
ID |
Interests |
|
1 |
['Python', 'Data Science'] |
|
2 |
['Machine Learning', 'AI'] |
.explode() मेथड Interests कॉलम के तत्वों को इस प्रकार अलग-अलग पंक्तियों में विस्तारित कर देगी:
# Explode the Interests column
exploded_df = df.explode('Interests')
|
ID |
Interests |
|
1 |
Python |
|
1 |
Data Science |
|
2 |
Machine Learning |
|
2 |
AI |
यह तरीका विशेष रूप से उन कॉलमों के लिए उपयोगी है जिनमें श्रेणीगत डेटा या प्रति ऑब्ज़र्वेशन एकाधिक विशेषताएँ होती हैं।
Pandas में मल्टीपल कॉलम को एक्सप्लोड करना
आपको ऐसे परिदृश्य भी मिल सकते हैं जहाँ आपको किसी DataFrame में कई कॉलम एक्सप्लोड करने पड़ें। यह तब खास तौर पर उपयोगी है जब कई कॉलमों में लिस्ट-जैसी संरचनाएँ हों जिन्हें एक साथ अनपैक करना हो। इसे दर्शाने के लिए df में एक अतिरिक्त Tools कॉलम जोड़ते हैं:
|
ID |
Interests |
Tools |
|
1 |
['Python', 'Data Science'] |
['Pandas', 'NumPy'] |
|
2 |
['Machine Learning', 'AI'] |
['Scikit-learn', 'TensorFlow'] |
मल्टीपल कॉलम को एक्सप्लोड करने के लिए, जिन कॉलमों को एक्सप्लोड करना है उन्हें सूची में शामिल करें
# Explode the Interests & Tools columns
exploded_df = df.explode(['Interests', 'Tools'])
|
ID |
Interests |
Tools |
|
1 |
Python |
Pandas |
|
1 |
Data Science |
NumPy |
|
2 |
Machine Learning |
Scikit-learn |
|
2 |
AI |
TensorFlow |
यह तरीका तब विशेष रूप से काम आता है जब आप ऐसे कई कॉलमों के साथ काम कर रहे हों जिनमें लिस्ट हों। फिर भी, .explode() के साथ काम करते हुए कुछ मुश्किलें आ सकती हैं, जिन्हें हम अगले सेक्शन में देखेंगे।
Pandas की .explode() का उपयोग करते समय सामान्य त्रुटियाँ और समाधान
डुप्लिकेट कॉलमों को एक्सप्लोड करना
.explode() के साथ काम करते समय एक आम गलती यह है कि मेथड इस्तेमाल करते हुए अनजाने में डुप्लिकेट कॉलमों को एक्सप्लोड कर दिया जाता है। याद दिलाने के लिए, हमेशा सुनिश्चित करें कि जिन कॉलमों की सूची आप दे रहे हैं, वे अद्वितीय हों!
# Incorrect, exploding duplicate columns
df.explode(['Interests','Tools','Interests'])
# Correct, exploding unique columns
df.explode(['Interests','Tools'])
ऐसी स्ट्रिंग्स को एक्सप्लोड करना जो लिस्ट जैसी दिखती हैं
अक्सर, आपके DataFrames में ऐसी पंक्तियाँ हो सकती हैं जो स्ट्रिंग्स होती हैं पर लिस्ट जैसी दिखती हैं। ऐसी स्ट्रिंग्स वाले कॉलम को एक्सप्लोड करने की कोशिश करना, जैसे "['Python', 'AI']", कोई बदलाव नहीं लाता क्योंकि .explode() मेथड असली लिस्ट-जैसे ऑब्जेक्ट्स की अपेक्षा करती है, न कि लिस्ट जैसी दिखने वाली स्ट्रिंग्स की। यह इसका एक उदाहरण और समाधान है! मान लीजिए df में निम्न मान हैं:
|
ID |
Interests |
|
1 |
"['Python', 'Data Science']" |
|
2 |
"['Machine Learning', 'AI']" |
जैसा कि आप देख सकते हैं, Interests कॉलम में मान ऐसी स्ट्रिंग्स हैं जो लिस्ट जैसी दिखती हैं। Interests पर .explode() इस्तेमाल करने से कोई बदलाव नहीं होगा क्योंकि मान सिंगल स्ट्रिंग हैं। इसे ठीक करने के लिए, हम Interests के मानों को लिस्ट में बदलते हैं।
import ast
df['Interests'] = df['Interests'].apply(ast.literal_eval)
exploded_df = df.explode('Interests')
print(exploded_df) # This will work
मल्टीपल कॉलम में असमान लंबाई
pandas DataFrames के साथ काम करते समय एक आम समस्या यह होती है कि उन पंक्तियों का सामना करना पड़ता है जहाँ एक्सप्लोड के लिए निर्दिष्ट कॉलमों में लिस्ट-जैसी संरचनाओं की लंबाई मेल नहीं खाती। यह असंगति कई कॉलमों पर .explode() इस्तेमाल करने के बाद गलत-संरेखित या अपूर्ण डेटा का कारण बन सकती है। उदाहरण के लिए, मान लीजिए df इस प्रकार है:
|
ID |
Interests |
Tools |
|
1 |
['Python', 'Data Science'] |
['Pandas'] |
|
2 |
['Machine Learning'] |
['Scikit-learn', 'TensorFlow'] |
जैसा कि दिख रहा है, Interests और Tools कॉलमों में अलग-अलग लंबाई की लिस्ट हैं। इन कॉलमों पर इसी तरह .explode() का उपयोग करने से त्रुटि होगी, क्योंकि कॉलमों में लिस्ट के मानों की संख्या मेल खानी चाहिए। इसे ठीक करने के लिए, आप एक कस्टम फ़ंक्शन से लिस्टों को None से पैड कर सकते हैं, जैसा यहाँ दिखाया गया है:
# Function to pad lists to the same length
def pad_lists(row):
max_len = max(len(row['Interests']), len(row['Tools']))
row['Interests'] += [None] * (max_len - len(row['Interests']))
row['Tools'] += [None] * (max_len - len(row['Tools']))
return row
# Apply the padding function to each row
df = df.apply(pad_lists, axis=1)
# Now, safely explode both columns
df.explode(['Interests','Tools'])
|
ID |
Interests |
Tools |
|
1 |
Python |
Pandas |
|
1 |
Data Science |
None |
|
2 |
Machine Learning |
Scikit-learn |
|
2 |
None |
TensorFlow |
अंतिम विचार
सारांश में, .explode() मेथड तब उपयोगी होती है जब आप मानों की लिस्ट के तत्वों को Pandas DataFrame में पंक्तियों के रूप में अनपैक करना चाहते हैं। pandas सीखने के लिए, ये संसाधन देखें:
एडेल एक डेटा साइंस शिक्षक, वक्ता, और DataCamp में मीडिया के वीपी हैं। एडेल ने डेटा विश्लेषण, मशीन लर्निंग, और डेटा इंजीनियरिंग पर कई पाठ्यक्रम और लाइव प्रशिक्षण जारी किए हैं। वह संगठनों में डेटा कौशल और डेटा साक्षरता फैलाने, तथा तकनीक और समाज के संगम के प्रति उत्साही हैं। उनके पास डेटा साइंस और बिज़नेस एनालिटिक्स में एमएससी है। खाली समय में, आप उन्हें अपने बिल्ली लुई के साथ समय बिताते हुए पा सकते हैं।
