2025, Oct 02 19:31
Pandas Styler के बार Excel में क्यों नहीं दिखते और क्या करें
Pandas Styler की CSS बार Jupyter में दिखती हैं, पर Excel to_excel में नहीं। कारण जानें, Excel data bars अपनाएँ और स्टाइल शेयर करने के लिए to_html का उपयोग करें
जब Pandas Styler Jupyter नोटबुक में संख्यात्मक कॉलमों पर सुंदर बार दिखाता है, तो स्वाभाविक है कि हम वही चीज़ निर्यात किए गए Excel फ़ाइल में भी देखें। पर स्प्रेडशीट खोलते ही जब बार गायब मिलते हैं, तो हैरानी होती है। यह गाइड बताता है कि ऐसा क्यों होता है, वास्तव में क्या‑क्या समर्थित है, और स्टाइल किया गया परिणाम भरोसेमंद तरीके से कैसे साझा करें।
Notebook बनाम Excel: वही डेटा, अलग रेंडरिंग इंजन
Jupyter में Styler, DataFrame को दिखाने के लिए HTML और CSS का उपयोग करता है। दूसरी तरफ Excel उन CSS शैलियों को नहीं समझता। नतीजा यह है कि नोटबुक में जो विज़ुअलाइज़ेशन शानदार दिखते हैं, वे .xlsx फ़ाइल तक जाते‑आते टिकते नहीं।
समस्या को दिखाने वाला पुनरुत्पादित करने योग्य उदाहरण
नीचे दिया गया स्निपेट एक CSV पढ़ता है, close कॉलम पर Styler.bar() लगाता है, और फिर Excel फ़ाइल में लिखता है। नोटबुक में बार दिखाई देते हैं; Excel में नहीं।
import pandas as pd
quotes = pd.read_csv('./sp500.csv')
view = quotes.style
view.bar(subset=['close'], color='#6399ae',
         vmin=0, vmax=quotes['close'].max())
view.to_excel('./sp500.csv', index=False)
Excel में बार क्यों गायब हो जाते हैं
Excel, Styler द्वारा उपयोग की जाने वाली CSS आधारित शैलियों को सपोर्ट नहीं करता। to_excel() के जरिए केवल Styler आउटपुट का सीमित हिस्सा ही निर्यात किया जा सकता है, और उस सूची में Styler.bar() शामिल नहीं है। आधिकारिक दस्तावेज़ भी यही बताते हैं कि Excel निर्यात के लिए केवल कुछ फीचर समर्थित हैं। Pandas Table Visualization दस्तावेज़ में Export to Excel अनुभाग देखें: https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html#Export-to-Excel.
यदि आपको Excel की कोशिकाओं के भीतर बार चाहिए, तो Styler द्वारा बनाए गए CSS बार के बजाय Excel के नैेटिव conditional formatting (data bars) का सहारा लें।
इसके बजाय क्या किया जा सकता है
अगर लक्ष्य एक क्लिक में “चलाएँ और देखें” जैसा हस्तांतरण है जो विज़ुअल स्टाइलिंग को जस‑का‑तस रखे, तो HTML में निर्यात करना सबसे सीधा रास्ता है। HTML, नोटबुक में दिखने वाले CSS बार को ठीक उसी तरह प्रदर्शित करेगा। बनी हुई फ़ाइल किसी भी आधुनिक ब्राउज़र में खुल जाती है। वहाँ से आप रेंडर की गई तालिका चुनकर, Microsoft Word में Paste Special के जरिए HTML Format में पेस्ट कर सकते हैं। Excel में भी पेस्ट करने के तरीके हो सकते हैं, लेकिन यहाँ बताया गया भरोसेमंद रास्ता Word तक का है।
import pandas as pd
quotes = pd.read_csv('./sp500.csv')
view = quotes.style
view.bar(subset=['close'], color='#6399ae',
         vmin=0, vmax=quotes['close'].max())
html_out = view.to_html()
with open('sp500.html', 'w', encoding='utf-8') as fh:
    fh.write(html_out)
इस तरह Styler द्वारा बनाई गई स्टाइलिंग बिल्कुल उसी रूप में बची रहती है—शेयर करने, देखने और ज़रूरत पड़ने पर उन टूल्स में कॉपी‑पेस्ट के लिए जो HTML फॉर्मैटिंग स्वीकार करते हैं।
रिपोर्टिंग वर्कफ़्लो के लिए यह क्यों मायने रखता है
डेटा प्रस्तुति लक्ष्य माध्यम के रेंडरिंग इंजन पर निर्भर करती है। नोटबुक‑केंद्रित विज़ुअल फीचर अपने‑आप Excel में पोर्ट नहीं हो जाते। यह बात पहले से पता होने पर आप बंद गलियों से बचते हैं और श्रोताओं के हिसाब से सही आउटपुट चैनल चुन पाते हैं—स्प्रेडशीट के लिए Excel के नैेटिव फीचर, या वेब‑जैसी, पिक्सेल‑सटीक प्रस्तुति के लिए HTML।
मुख्य बातें
Styler.bar() एक CSS आधारित विज़ुअलाइज़ेशन है और to_excel() के जरिए Excel में निर्यात होने पर नहीं टिकता। Excel की कोशिकाओं में असली बार चाहिए तो conditional formatting के माध्यम से Excel के data bars का उपयोग करें। Pandas की स्टाइलिंग को सुरक्षित रखते हुए तेज़ी से साझा करना हो तो to_html() से HTML निर्यात करें और वही फ़ाइल बाँटें। आउटपुट फ़ॉर्मैट को अंतिम गंतव्य के अनुरूप रखें—समय बचेगा, अप्रत्याशितताओं से बचेंगे, और समीक्षक वही देखेंगे जिसकी उन्हें उम्मीद है।
यह लेख StackOverflow पर प्रश्न (द्वारा ludovico) और Ashish Chandpa के उत्तर पर आधारित है।