course
वाइड फ़ॉर्मेट पढ़ने में आसान होता है, लेकिन कई विश्लेषण और विज़ुअलाइज़ेशन कार्य लंबे फ़ॉर्मेट वाले डेटा के साथ बेहतर काम करते हैं।
pandas.melt() फ़ंक्शन एक DataFrame को reshape करता है—एक या अधिक कॉलम्स को पंक्तियों में बदलता है, जबकि चुने हुए पहचानकर्ता कॉलम वही रखते हैं। इससे आपका डेटा फ़िल्टर, ग्रुप, विज़ुअलाइज़, और विश्लेषण करना आसान हो जाता है।
इस ट्यूटोरियल में, मैं आपको pandas.melt() फ़ंक्शन का उपयोग करना दिखाऊंगा। साथ ही, मैं यह भी दिखाऊंगा कि यह pivot(), stack(), और wide_to_long() जैसे विकल्पों से कैसे तुलना करता है। यदि आप Python में शुरुआत कर रहे हैं, तो मैं हमारी Introduction to Python कोर्स लेने की सलाह देता/देती हूँ, जिसमें डेटा टाइप्स, लिस्ट्स, बेसिक फ़ंक्शंस, और पैकेज जैसी स्किल्स कवर होती हैं।
pandas.melt() का उपयोग कैसे करें
pandas.melt() फ़ंक्शन कॉलम हैडर को एक नए कॉलम में वैल्यू में बदलकर DataFrame को वाइड फ़ॉर्मेट से लॉन्ग फ़ॉर्मेट में बदल देता है।
इसका सिंटैक्स इस प्रकार है:
pandas.melt(
frame,
id_vars=None,
value_vars=None,
var_name=None,
value_name="value",
col_level=None,
ignore_index=True
)
जहाँ:
-
frame: वह DataFrame जिसे reshape करना है। केवलpandas.melt()का उपयोग करते समय आवश्यक। -
id_vars: वे कॉलम (या कॉलमों की सूची) जो अपरिवर्तित रखे जाते हैं। reshape होने के बाद ये कॉलम प्रत्येक पंक्ति की पहचान करते हैं। -
value_vars: वे कॉलम (या कॉलमों की सूची) जिन्हें अनपिवट करना है। यदि छोड़ा गया, तो pandas उन सभी कॉलमों को melt करता है जोid_varsमें नहीं हैं। -
var_name: नए कॉलम का नाम जिसमें मूल कॉलम नाम संग्रहीत होंगे। निर्दिष्ट न होने पर डिफ़ॉल्ट"variable"होता है। -
value_name: नए कॉलम का नाम जिसमें वैल्यू संग्रहीत होंगी। निर्दिष्ट न होने पर डिफ़ॉल्ट"value"होता है। -
col_level: वैकल्पिक; MultiIndex कॉलम्स के साथ काम करते समय किस लेवल को melt करना है यह बताता है। -
ignore_index: यदिTrue(डिफ़ॉल्ट) है, तो नया क्रमिक इंडेक्स बनता है। यदिFalseहै, तो मूल इंडेक्स सुरक्षित रहता है।
ऊपर दिए गए सिंटैक्स से डेटा कैसे reshape होता है, इसे समझाने के लिए एक उदाहरण दिखाता/दिखाती हूँ।
मान लीजिए आपके पास नीचे दिया गया डेटासेट है, जिसमें प्रत्येक उत्पाद की मासिक बिक्री अलग-अलग कॉलम्स में संग्रहीत है।

आप महीनों वाले कॉलम्स को पंक्तियों में बदलने के लिए pandas.melt() का उपयोग कर सकते हैं।
# Convert the DataFrame from wide format to long format
products_sales_2025_melted = products_sales_2025.melt(
# Keep the Product and Category columns unchanged
id_vars=["Product", "Category"],
# Convert the month columns into rows
value_vars=["January", "February", "March", "April", "May", "June"],
# Name of the new column that stores the original column names
var_name="Month",
# Name of the new column that stores the corresponding sales values
value_name="Sales"
)
# Display the reshaped DataFrame
products_sales_2025_melted.head(10)
परिणामी DataFrame अब प्रत्येक महीने को एक अलग पंक्ति के रूप में संग्रहीत करता है।

सामान्य pandas.melt() उदाहरण
अब जबकि आपने समझ लिया कि pandas.melt() का सिंटैक्स कैसे काम करता है, मैं आपको दिखाता/दिखाती हूँ कि प्रत्येक पैरामीटर अकेले में कैसा व्यवहार करता है। हम नीचे दी गई तालिका का उपयोग अगली मिसालों में करेंगे।
चुने हुए कॉलम्स को melt करें
value_vars पैरामीटर आपको यह निर्दिष्ट करने देता है कि किन कॉलम्स को अनपिवट करना है। हर महीने को melt करने के बजाय, आप केवल आवश्यक कॉलम्स को बदल सकते हैं।
इस उदाहरण में, केवल January और February कॉलम्स को melt किया गया है। बाकी महीनों के कॉलम्स को अनदेखा किया गया है।
# Convert only the January and February columns into rows
product_sales_3month = products_sales_2025.melt(
id_vars="Product",
value_vars=["January", "February",]
)
product_sales_3month.head(20)

पहचानकर्ता कॉलम्स को रखें
id_vars पैरामीटर का उपयोग करके एक या अधिक कॉलम्स को अपरिवर्तित रखें, जबकि शेष कॉलम्स reshape हों।
नीचे दिए गए उदाहरण में, “Product” और “Category” अपरिवर्तित रहते हैं, जबकि मासिक बिक्री के कॉलम्स पंक्तियों में बदले जाते हैं।
# Keep the Product and Category columns while melting the monthly sales
product_sales_cat = products_sales_2025.melt(
id_vars=["Product", "Category"]
)
product_sales_cat.head()

आउटपुट कॉलम्स का नाम बदलें
यदि आपने गौर किया हो, तो आउटपुट कॉलम्स का डिफ़ॉल्ट नाम variable और value होता है। उन्हें वर्णनात्मक नाम देने के लिए var_name और value_name आर्ग्युमेंट्स का उपयोग करें।
उदाहरण के लिए, हमने नीचे के आउटपुट में variable कॉलम का नाम “Month” और value का “Sales” कर दिया है।
# Keep the Product and Category columns while melting the monthly sales
# Rename Month and Sales columns
product_sales_cat = products_sales_2025.melt(
id_vars=["Product", "Category"],
var_name="Month",
value_name="Sales"
)
product_sales_cat.head()

मूल इंडेक्स सुरक्षित रखें
डिफ़ॉल्ट रूप से, pandas.melt() नया क्रमिक इंडेक्स बनाता है। मूल पंक्ति इंडेक्स बनाए रखने के लिए ignore_index=False सेट करें।
# Keep the original row index after reshaping
product_sales_index = products_sales_2025.melt(
id_vars=["Product", "Category"],
var_name="Month",
value_name="Sales",
ignore_index=False
)
product_sales_index.head(10)

ऊपर के उदाहरण में, मूल पंक्ति लेबल (0–5) प्रत्येक महीने के लिए दोहराए जाते हैं, बजाय इसके कि उन्हें नए क्रमिक इंडेक्स से बदला जाए।
आपको pandas.melt() कब उपयोग करना चाहिए?
pandas.melt() तब उपयोगी होता है जब आपका डेटा वाइड फ़ॉर्मेट में हो और विश्लेषण या विज़ुअलाइज़ेशन के लिए उसे लॉन्ग फ़ॉर्मेट में बदलने की आवश्यकता हो। मुझे यह फ़ंक्शन निम्नलिखित उपयोग मामलों में भी महत्वपूर्ण लगता है:
-
वाइड डेटा को लॉन्ग फ़ॉर्मेट में बदलें: कई डेटासेट संबंधित वैल्यूज़ को कई कॉलम्स में रखते हैं। यह फ़ॉर्मेट पढ़ने में आसान है, लेकिन विश्लेषण कठिन बना सकता है।
pandas.melt()उन कॉलम्स को एक कॉलम में संयोजित कर देता है, जबकि पहचानकर्ता कॉलम्स को सुरक्षित रखता है, जिससे आगे की प्रोसेसिंग के लिए संरचना साफ़-सुथरी हो जाती है। -
प्लॉटिंग के लिए डेटा तैयार करें: Seaborn जैसी कई plotting लाइब्रेरीज़ चार्ट बनाते समय लॉन्ग-फ़ॉर्म डेटा के साथ बेहतर काम करती हैं। कई कॉलम्स को मैन्युअली संयोजित करने के बजाय, आप
pandas.melt()का उपयोग करके डेटा को उस फ़ॉर्मेट में reshape कर सकते हैं जिसकी इन लाइब्रेरीज़ को अपेक्षा होती है। -
सांख्यिकीय विश्लेषण के लिए डेटा तैयार करें: कई pandas ऑपरेशंस, जैसे
groupby(), एग्रीगेशंस, फ़िल्टरिंग, और सार-सांख्यिकी, तब सरल हो जाते हैं जब मापन एक ही कॉलम में संग्रहीत हों, न कि कई कॉलम्स में बिखरे हुए। यदि आपpandas.melt()के साथ डेटा reshape करते हैं, तो विभिन्न वेरिएबल्स का विश्लेषण करने के लिए आवश्यक कोड कम हो जाता है। -
टाइडि डेटासेट बनाएं: एक टाइडि डेटासेट में प्रत्येक वेरिएबल अपना कॉलम रखता है और प्रत्येक ऑब्ज़र्वेशन अपनी पंक्ति। यदि आपके डेटासेट में कई कॉलम्स में दोहराए गए मापन हैं, तो
pandas.melt()अक्सर उसे टाइडि फ़ॉर्मेट में बदलने का सबसे तेज़ तरीका है।
मैं हमारा Introduction to Data Visualization with Seaborn कोर्स लेने की सिफारिश करता/करती हूँ, ताकि आप Python में scatter, count, bar, और box प्लॉट सहित विभिन्न प्लॉट बनाना और कस्टमाइज़ करना सीख सकें।
pandas.melt() बनाम अन्य reshaping फ़ंक्शंस
Pandas डेटा को reshape करने के लिए कई फ़ंक्शंस देता है, और हर एक का अलग उद्देश्य होता है। आइए प्रत्येक विधि के बीच के फ़र्क देखें।
pandas.melt() बनाम pivot()
नीचे दी गई तालिका pandas.melt() और pivot() फंक्शनों के अंतर को दिखाती है।
|
|
|
|
वाइड डेटा को लॉन्ग डेटा में बदलता है। |
लॉन्ग डेटा को वाइड डेटा में बदलता है। |
|
कॉलम्स को पंक्तियों में बदलता है। |
पंक्ति की वैल्यूज़ को कॉलम्स में बदलता है। |
|
विश्लेषण और विज़ुअलाइज़ेशन के लिए डेटा तैयार करने में उपयोगी। |
रिपोर्ट में डेटा को संक्षेपित या प्रस्तुत करने में उपयोगी। |
इसलिए, जब आपके माप कई कॉलम्स में फैले हों तो melt() चुनें, या जब आप पंक्ति की वैल्यूज़ को कॉलम्स में फैलाना चाहें तो pivot() चुनें।
pandas.melt() बनाम stack()
हालाँकि दोनों फ़ंक्शंस डेटा को reshape करते हैं, वे इस तरह अलग हैं।
|
|
|
|
साधारण कॉलम्स को पंक्तियों में reshape करता है। |
एक या अधिक कॉलम लेवल्स को इंडेक्स में ले जाता है। |
|
मानक DataFrame उत्पन्न करता है। |
MultiIndex के साथ Series या DataFrame उत्पन्न करता है। |
|
अधिकांश विश्लेषण कार्यों के लिए पढ़ने और उपयोग करने में आसान। |
इंडेक्स-आधारित reshaping कार्यों के लिए अधिक उपयुक्त। |
आप जब hierarchical इंडेक्स या MultiIndex ऑब्जेक्ट्स के साथ काम करने की आवश्यकता हो, तब stack() का उपयोग कर सकते हैं।
pandas.melt() बनाम wide_to_long()
दोनों फ़ंक्शंस वाइड डेटा को लॉन्ग फ़ॉर्मेट में बदलते हैं, लेकिन वे अलग परिस्थितियों के लिए बनाए गए हैं, जैसा कि नीचे दिखाया गया है।
|
|
|
|
लचीला है और लगभग हर DataFrame के साथ काम करता है। |
सुसंगत कॉलम-नेमिंग पैटर्न वाले डेटासेट्स के लिए डिज़ाइन किया गया। |
|
सामान्य-उद्देश्य reshaping के लिए उपयुक्त। |
दोहराए गए माप जैसे Sales_2023, Sales_2024, और Sales_2025 के लिए आदर्श। |
यदि आपके डेटासेट में अनियमित कॉलम नाम हैं, तो melt() का उपयोग करें। यदि आपके कॉलम एक अनुमानित नेमिंग कन्वेंशन का पालन करते हैं, तो कम कोड में डेटा reshape करने के लिए wide_to_long() का उपयोग करें।
pandas.melt() के साथ सामान्य गलतियाँ
हालाँकि pandas.melt() उपयोग में सीधा-सादा है, यहाँ वे सामान्य गलतियाँ हैं जो मैंने देखी हैं और उन्हें कैसे ठीक किया जा सकता है।
-
id_vars भूल जाना: यदि आप
id_varsनिर्दिष्ट नहीं करते, तो pandas हर उस कॉलम को वैल्यू कॉलम मानता है जोvalue_varsमें सूचीबद्ध नहीं है। इससे वे कॉलम भी reshape हो सकते हैं जिन्हें आप पहचानकर्ता रखना चाहते थे। इसे ठीक करने के लिए, हमेशा उन कॉलम्स की पहचान करें जो प्रत्येक रिकॉर्ड का अनूठा वर्णन करते हैं और उन्हेंid_varsमें पास करें। -
अनचाहे कॉलम्स को melt कर देना: यदि आप
value_varsछोड़ देते हैं, तो pandas उन सभी कॉलम्स को melt कर देता है जोid_varsमें शामिल नहीं हैं। इसमें वे कॉलम भी हो सकते हैं जिन्हें आप reshape नहीं करना चाहते थे। इसलिए, जब भी आप केवल कुछ कॉलम्स को melt करना चाहते हों, तो हमेशाvalue_varsनिर्दिष्ट करें। -
आउटपुट आकार को गलत समझना: melt करने के बाद पंक्तियों की संख्या बढ़ जाती है क्योंकि चयनित प्रत्येक कॉलम हर रिकॉर्ड के लिए एक अलग पंक्ति बन जाता है। उदाहरण के लिए, 10 पंक्तियों और 12 महीने वाले कॉलम्स वाले DataFrame में महीनों को melt करने के बाद 120 पंक्तियाँ हो जाएँगी। इसलिए, reshape से पहले और बाद में shape जाँचें ताकि पुष्टि हो सके कि डेटा ठीक से melt हुआ।
-
वाइड और लॉन्ग फ़ॉर्मेट में भ्रम: हमेशा याद रखें कि वाइड फ़ॉर्मेट में, समान प्रकार की वैल्यूज़ कई कॉलम्स में संग्रहीत होती हैं। लॉन्ग फ़ॉर्मेट में, समान वैल्यूज़ एक ही कॉलम में संग्रहीत होती हैं, और दूसरा कॉलम वेरिएबल की पहचान करता है।
pandas.melt() का उपयोग करते समय सर्वोत्तम अभ्यास
अपने reshaping कोड को समझने और बनाए रखने में आसान बनाने के लिए, मैं pandas.melt() फ़ंक्शन का उपयोग करते समय निम्न सर्वोत्तम अभ्यासों का पालन करने की अनुशंसा करता/करती हूँ:
-
पहले पहचानकर्ता कॉलम्स की पहचान करें: तय करें कि किन कॉलम्स को अपरिवर्तित रहना चाहिए, फिर उन्हें
id_varsमें पास करें। -
निर्मित कॉलम का नाम बदलें: डिफ़ॉल्ट variable और value नामों पर निर्भर रहने के बजाय
var_nameऔरvalue_nameका उपयोग करें। -
melt करने के बाद पंक्तियों की संख्या जाँचें: खासकर जब कई कॉलम्स को melt कर रहे हों, तो यह सत्यापित करें कि पंक्तियों की संख्या आपकी अपेक्षा के अनुरूप है।
-
डेटा को वापस reshape करने के लिए pivot() का उपयोग करें: यदि आपको विश्लेषण के बाद मूल वाइड फ़ॉर्मेट में वापस जाना हो, तो
pivot()फ़ंक्शन का उपयोग करें।
हमारा Writing Efficient Python Code कोर्स लें ताकि आप ऐसा कुशल कोड लिखना सीखें जो डिबग और मेंटेन करने में आसान हो।
निष्कर्ष
pandas.melt() वाइड-फ़ॉर्मेट डेटा को लॉन्ग-फ़ॉर्मेट में बदलने के लिए मानक pandas फ़ंक्शन है। और एक बार जब आप id_vars और value_vars की भूमिकाएँ समझ लेते हैं, तो आप नियंत्रित कर सकते हैं कि कौन से कॉलम पहचानकर्ता बने रहें और किन्हें पंक्तियों में बदला जाए।
Python की व्यापक समझ के लिए, आप हमारे Python Data Fundamentals और Python Programming Fundamentals स्किल ट्रैक्स से और सीख सकते हैं।
FAQs
मुझे pandas.melt() कब उपयोग करना चाहिए?
इसे तब उपयोग करें जब आपके डेटा में दोहराई गई वैल्यूज़ कॉलम्स में फैली हों, और आप विश्लेषण या विज़ुअलाइज़ेशन के लिए लॉन्ग-फ़ॉर्मेट DataFrame चाहते हों।
var_name और value_name क्या हैं?
ये पैरामीटर्स उन निर्मित कॉलम्स का नाम बदलते हैं जो मूल कॉलम नाम और उनकी संबंधित वैल्यूज़ संग्रहीत करते हैं।
क्या pandas.melt() मूल DataFrame को संशोधित करता है?
नहीं। यह एक नया reshaped DataFrame लौटाता है और मूल को अपरिवर्तित छोड़ता है।
melt() और pivot() में क्या अंतर है?
melt() वाइड डेटा को लॉन्ग फ़ॉर्मेट में बदलता है, जबकि pivot() लॉन्ग डेटा को वापस वाइड फ़ॉर्मेट में बदलता है।
melt() और stack() में क्या अंतर है?
melt() कॉलम्स को पंक्तियों में reshape करता है और एक सामान्य DataFrame बनाए रखता है। stack() कॉलम्स को इंडेक्स में ले जाता है और एक hierarchical (MultiIndex) संरचना बनाता है।