कोर्स
Excel, मेरे पुराने दोस्त
मैं ऐसा व्यक्ति हूं जो सिर्फ इसलिए स्प्रेडशीट्स में डेटा से छेड़छाड़ करता है क्योंकि मैं कर सकता हूं। पिछले हफ्ते, मेरे टीम लीड ने उन कर्मचारियों की सूची भेजी जिन्होंने अपनी प्रोजेक्ट चेकलिस्ट अपडेट नहीं की थी, और मैंने तुरंत उसे खोला, टेबल बनाना शुरू किया और कर्मचारी-वार सारांश सांख्यिकी निकाली, फिर उन्हें कर्मचारी-वार ब्रेकडाउन के साथ कुछ सारांश डेटा भेज दिया। शायद इससे उन्हें थोड़ी चिढ़ हुई होगी, लेकिन मैं कुछ नहीं कर सकता; मुझे डेटा विश्लेषण पसंद है और मुझे Excel पसंद है। मैं 2001 से Excel का उपयोग कर रहा हूं और कुछ महीनों पहले तक डेटा के संगठन, विश्लेषण और विज़ुअलाइज़ेशन के लिए यह मेरा पसंदीदा टूल था। डेटा को व्यवस्थित करने, गणनाएँ और विश्लेषण करने के लिए यह शानदार है, और एक साधारण डेटाबेस की तरह भी काम करता है। मैंने इसे अपने निजी बजट, खर्चों और वर्कआउट्स का रिकॉर्ड रखने से लेकर आर्मी में मल्टी-पेज पर्सनल स्ट्रेंथ एनालिसिस रिपोर्ट्स तक हर चीज के लिए इस्तेमाल किया है। अधिकांश मामलों में Excel ने वहाँ अच्छा काम किया और वही एकमात्र विकल्प था। सुरक्षा कारणों से, मेरे पास VBA, Python, या किसी अन्य तरह के ऑटोमेशन तक पहुँच नहीं थी। डेटा सेट भी इतने छोटे थे कि Excel संभाल सके।
आज से लगभग एक साल पहले मैंने Cerner के Abilities Lab में सॉफ्टवेयर परफॉर्मेंस टेस्टिंग में सिस्टम इंजीनियर के रूप में काम शुरू किया। जो मैं करता हूं उसका संक्षिप्त संस्करण है—सॉफ्टवेयर परफॉर्मेंस टेस्टिंग। हम अपने क्लाइंट्स तक जाने से पहले नए और अपडेटेड सॉफ्टवेयर का परीक्षण करते हैं और हम सबकुछ टेस्ट करते हैं: Windows और Unix के CPU और मेमोरी, Java Virtual Machine का प्रदर्शन, बैकएंड सेवाओं और यूज़र इंटरफेस—दोनों के रेस्पॉन्स टाइम, डेटाबेस का प्रदर्शन, हमारे मौजूदा सॉफ्टवेयर पर प्रभाव, नेटवर्क प्रदर्शन, और लगभग वह सब कुछ जो आप सोच सकते हैं। कोई भी टेस्ट एक अकेली मशीन तक सीमित नहीं होता, ज़्यादातर समय यह Windows और Unix डिवाइसेज़ (फिजिकल और वर्चुअल), एंड-यूज़र सिस्टम और सर्वरों का संयोजन होता है। जिन प्रोजेक्ट्स में मैं शामिल था, उनमें से एक में हमारे पास 20 से अधिक सिस्टम थे, जिनसे डेटा एकत्र करना था।
किसी प्रोजेक्ट की अवधि पर निर्भर करते हुए, 50 तक टेस्ट हो सकते हैं जिनकी समीक्षा, विश्लेषण, और रिपोर्टिंग करनी होती है। उस सारे डेटा को संक्षेपित करके टेस्ट परिणामों की एक अंतिम रिपोर्ट में डालना होता है, जिसे आंतरिक Jira प्रोजेक्ट पेज पर सॉफ्टवेयर डेवलपमेंट टीम के लिए पोस्ट किया जाता है। हमारे पास कुछ कस्टम इन-हाउस टूल्स हैं जो ज्यादातर डेटा को एग्रीगेट कर सकते हैं, लेकिन सब नहीं, और उन टूल्स में बनी रिपोर्ट्स को उतनी कस्टमाइज़ नहीं किया जा सकता जितनी मेरे प्रकार की टेस्टिंग के लिए ज़रूरी है। इन रिपोर्ट्स को लिखने और डिलीवर करने के लिए मेरा पसंदीदा टूल Excel था, और क्यों नहीं? मेरा Excel में मज़बूत बैकग्राउंड है और उस समय मेरा मानना था कि मैं उससे कुछ भी करा सकता हूं।
Excel, हमें समस्या है...
मैं हमारे इन-हाउस टूल्स से Excel तक डेटा लाने की थकाऊ प्रक्रिया में नहीं जाऊंगा, लेकिन यह मेरे लिए कई घंटों की प्रक्रिया थी और मैं Excel में काफी निपुण हूं। डेटा को कॉपी करना, साफ़ करना, सॉर्ट करना और फ़िल्टर करना पड़ता था। चाहे मैं अपने फ़ॉर्मूले कैसे भी लिखता, उन्हें लगभग हमेशा एडजस्ट करना पड़ता, फिर टेबल्स और ग्राफ़्स को टेस्ट्स, नोड्स, और प्रोजेक्ट के दौरान रिकॉर्ड किए गए विभिन्न रेस्पॉन्स टाइम्स की संख्या के आधार पर समायोजित करना पड़ता। उसके बाद टेस्ट नाम सही करने के लिए फाइंड-एंड-रिप्लेस का प्रोसेस, हर पेज की हर पंक्ति में नंबर फ़ॉर्मेट्स और हाइलाइट्स सही हैं यह सुनिश्चित करना, और सामान्य डेटा की सफ़ाई करनी होती। मैंने टेम्पलेट्स, मैक्रोज़, और VBA स्क्रिप्टिंग लिखने की कोशिश की। जो कुछ भी मैंने किया, वह बिना हर टेस्ट पर भारी सफाई किए, बदलती संख्या के टेस्ट्स, डिवाइसेज़, और परफॉर्मेंस मेट्रिक्स को संभालने के लिए पर्याप्त रूप से अनुकूलनीय नहीं था। मैं एक ऐसा टेम्पलेट बनाने में सफल रहा जिसने प्रक्रिया को तेज़ कर दिया, लेकिन फिर भी चीजें सही करने में आधा दिन लग जाता था।
उस टेम्पलेट में लगे कुछ अति-जटिल फ़ॉर्मूलों और VBA स्क्रिप्ट्स के बारे में सोचकर मुझे अब भी हंसी आती है। जब हमने Java वर्ज़न अपडेट किए और हमारे इन-हाउस टूल्स लॉग्स को सही से प्रोसेस नहीं कर पाए तो हालात और बिगड़ गए। हमने GC Easy नामक एक बाहरी टूल पर स्विच किया जो लॉग्स को बेहतरीन तरीके से JSON फ़ाइल में पार्स करता है जिसे Excel में लोड किया जा सकता है। JSON फ़ाइलों को PowerQuery के साथ लोड किया जा सकता है, लेकिन यह धीमी और थकाऊ प्रक्रिया है, और जब आप 50+ JSON फ़ाइलें जिनमें प्रत्येक में एक मिलियन से अधिक पंक्तियाँ हैं, पार्स करने की कोशिश करते हैं, तो आप अक्सर Excel को तोड़ बैठते हैं। इसके अलावा मुझे इस प्रक्रिया को ऑटोमेट करने का एक तरीका चाहिए था और मुझे इसका कोई अच्छा तरीका नहीं मिला। भले ही मैं Excel में डेटा लोड कर पाता, विज़ुअलाइज़ेशन्स (समय के साथ Heap Size दर्शाने वाले स्टैक्ड एरिया ग्राफ़) फ्रीज़ हो जाते और और भी क्रैश कराते। मान लें कि मैं वह समस्या हल भी कर लेता, तो भी JSON फ़ाइलें तो बस शुरुआत थीं।
डेटा को मैन्युअली कॉपी करना, साफ़ करना, और विश्लेषण करना त्रुटियों का कारण बनने वाला है। हम सब इंसान हैं और चीजें छूट जाती हैं, ध्यान भटक जाता है, गलत क्लिक हो जाता है। मेरी प्रक्रिया काम नहीं कर रही थी और जब तक पूरी टीम Excel में व्यापक प्रशिक्षण से न गुज़रे, वह सभी के लिए कभी काम नहीं करती। शायद यह मेरा सैन्य पृष्ठभूमि है, शायद यह सिर्फ व्यक्तित्व की विशेषता, लेकिन मैं हमेशा प्रक्रियाओं को बेहतर बनाने और अधिक कुशल बनाने का तरीका खोजता हूं, इसलिए मैंने पूरी प्रक्रिया को सुव्यवस्थित करने का तरीका खोजने की कोशिश शुरू की।
हमारे इन-हाउस टूल में उस समय न तो API था और न ही कोई काम करता हुआ एक्सपोर्ट फ़ंक्शन। बिना कॉपी/पेस्ट के मैं सीधे उससे डेटा नहीं खींच सकता था। मेरा अगला विचार था सीधे स्रोत पर जाना: टेस्ट में प्रत्येक डिवाइस की लॉग फ़ाइलें। इसका मतलब था किसी टेस्ट डायरेक्टरी और उसके भीतर की कई सब-डायरेक्टरीज़ को खोजना, अलग-अलग फ़ॉर्मैट में कई फ़ाइल प्रकारों से डेटा खींचना, सभी गणनाएँ करना, और उसे Excel में उसी फ़ॉर्मैट में लिखना जिसकी मुझे ज़रूरत थी, विज़ुअलाइज़ेशन्स और कंडीशनल फ़ॉर्मैटिंग सहित।
मुझे जिन फ़ाइल प्रकारों को पार्स करना था वे थे .txt, .csv, .json (विभिन्न स्ट्रक्चर), .xml (विभिन्न स्ट्रक्चर), .dat, .html, और कुछ डेटा Oracle Database से खींचना था। मुझे बदलती डायरेक्टरी संरचना, फ़ाइलों की बदलती संख्या और संरचना, बंद टैग्स के बिना .xml फ़ाइलें, और 10GB से अधिक आकार की फ़ाइलों का ध्यान रखना था। प्रक्रिया को फॉलो करना आसान होना चाहिए था, यथासंभव ऑटोमेटेड, और लाखों पंक्तियों के डेटा को संभालने में सक्षम। Excel बिल्कुल मेरे इन सभी जरूरतों को पूरा नहीं करने वाला था, इसलिए मैंने कुछ लोकप्रिय BI टूल्स की ओर रुख किया: PowerBI और Tableau। मैं इसे BI टूल्स की प्रोडक्ट रिव्यू नहीं बनाना चाहता, इसलिए बस इतना कहूंगा कि वे सिरे से मेरी जरूरतें पूरी नहीं कर पाए।
तो ऐसा कौन सा टूल है जो Excel की हर क्षमता रखता है, Excel में रिपोर्ट लिख सकता है, और मेरी बताई सभी आवश्यकताओं को पूरा कर सकता है?
मिलिए मेरे नए दोस्तों से: Python और Pandas
यदि आप Excel से ज़रा भी परिचित हैं, तो मुझे लगता है आपको Python के लिए pandas बिल्कुल पसंद आएगा। pandas, Excel की कार्यक्षमता को Python भाषा की ताकत के साथ जोड़ता है। Excel की कॉलम pandas Series बन जाती हैं, टेबल्स DataFrames, और जटिल फ़ॉर्मूले Python फ़ंक्शन्स। pandas वह सब कर सकता है जो Excel कर सकता है:
डेटा पढ़ना
Excel फ्लैट फ़ाइलें पढ़ने में काफ़ी अच्छा है, और PowerQuery के साथ इसमें डेटाबेस क्वेरी करने और कुछ .xml तथा .json फ़ाइलें पढ़ने की सीमित क्षमता है। डॉक्यूमेंटेशन पढ़ें तो यह लगभग सबकुछ पढ़ने का परफेक्ट टूल लगता है, लेकिन वास्तविकता में ऐसा नहीं है। इंटरफ़ेस भद्दा है और उसे सीखने में काफ़ी समय लगता है, प्रक्रिया को ऑटोमेट करने का कोई अच्छा तरीका नहीं है, और डेटा सफाई दंत चिकित्सक के पास जाने जितनी “मज़ेदार” है। दूसरी ओर, pandas डेटा पढ़ना बेहद आसान बना देता है।
यह Python डेटा मैनिपुलेशन लाइब्रेरी मूल रूप से कई स्रोतों से डेटा पढ़ सकती है। पूरी सूची के लिए डॉक्यूमेंटेशन पेज देखें। सबसे बढ़िया बात यह है कि यदि pandas किसी फ़ॉर्मैट को मूल रूप से नहीं पढ़ता, तो अच्छी संभावना है कि आपको कोई Python पैकेज मिल जाएगा जो उसे पढ़ ले, या कुछ पंक्तियों के कोड से आप समस्या सुलझा लेंगे। इस विषय को गहराई से कवर करने के लिए DataCamp का Importing Data in Python कोर्स सीरीज़ देखें, अन्य कोर्सेज़ के साथ।
मैं pandas का उपयोग करके ऊपर बताए हर फ़ाइल प्रकार को पढ़ने में सक्षम था, उन .xml फ़ाइलों सहित जिनमें क्लोज़िंग टैग्स नहीं थे। कुछ रचनात्मक प्राकृतिक भाषा प्रसंस्करण से मैं कच्ची .txt फ़ाइलों से सभी टेस्ट मेटाडेटा भी निकाल सकता हूं, जो Excel से नहीं हो पाया क्योंकि वे डेटा के लिए फ़ॉर्मैट नहीं थीं। स्क्रिप्ट का जो संस्करण मैं अब उपयोग करता हूं, वह न केवल हर आवश्यक फ़ाइल प्रकार पढ़ता है, बल्कि कुछ अतिरिक्त पंक्तियों के Python कोड के साथ मैं GC Easy के API को हिट करके Java Garbage Collection की .json लॉग्स ऑटोमेटिकली भी ले लेता हूं; जो Excel से कभी संभव नहीं था। यह Excel की तुलना में कैसा है? pandas का उपयोग करके मैं पूरी टेस्ट डायरेक्टरी खोज सकता हूं और केवल कुछ ही मिनटों में सारा डेटा सलीकेदार DataFrames में वापस पा सकता हूं। यह उन लॉग फ़ाइलों को भी आसानी से संभाल लेता है जो 10GB से अधिक हैं। यह आकार बड़ा नहीं लगता होगा, लेकिन Excel में इतने बड़े आकार की कोई भी चीज़ पढ़ने के लिए शुभकामनाएँ।
मैंने अब कच्ची फ्लैट फ़ाइलें पढ़ने से हटकर मल्टी-टेराबाइट Oracle Database से डेटा खींचना भी शुरू कर दिया है। उस प्रक्रिया की तुलना मैं Excel से नहीं कर सकता; उसमें एक संक्षिप्त प्रयोग के अलावा मैंने Excel में डेटाबेस क्वेरीज़ से परहेज़ किया है। जो याद है, वह अनुभव दोहराना नहीं चाहूंगा। हालाँकि, Python के माध्यम से कनेक्ट करना SQLAlchemy के साथ बहुत आसान है। कनेक्ट करना सरल है और क्वेरी की गति Excel के मुकाबले बहुत आगे है। इस विषय का शानदार परिचय पाने के लिए Introduction to Relational Databases in Python देखें।
डेटा की सफाई
विज़ुअलाइज़ेशन्स से अलग, मेरा दृढ़ विश्वास है कि डेटा साफ़-सुथरी, सलीकेदार, फ़ॉर्मैटेड और लेबल वाली टेबल्स में होना चाहिए। Pandas में डेटा साफ़ करने और सुंदर फ़ॉर्मैटेड टेबल्स प्रस्तुत करने के लिए बेहतरीन विकल्प हैं। आधिकारिक Pandas वेबसाइट का Styling पेज DataFrames को फ़ॉर्मैट करने के लिए मेरा पसंदीदा मार्गदर्शक है। कुछ पंक्तियों के कोड से आप दशमलव स्थान सेट कर सकते हैं, नंबर फ़ॉर्मैट कर सकते हैं, पंक्ति और कंडीशनल फ़ॉर्मैटिंग जोड़ सकते हैं, और प्रक्रिया अनगिनत दस्तावेज़ों पर दोहराई जा सकती है। डेटा के आकार की परवाह किए बिना, डेटा सफाई के कुछ हिस्सों को ऑटोमेट करने की क्षमता ने मेरे अनगिनत घंटे बचाए हैं।
न्याय की दृष्टि से, आप Excel में निश्चित रूप से डेटा साफ़ कर सकते हैं। इसके लिए उसमें बहुत से बिल्ट-इन टूल्स हैं, और यही मुझे हर बार करना पड़ता था जब मैं अंततः सारी ज़रूरी डेटा उसमें लोड कर पाता था। यह बड़े पैमाने पर मैन्युअल प्रक्रिया थी जिसमें बहुत अधिक माउस क्लिक शामिल थे, और एक बार फिर, बहुत त्रुटि-प्रवण और समय लेने वाली। भले ही आप Excel के सभी टूल्स में अत्यंत निपुण हों, गलतियाँ होना तय है। फ़ॉर्मूला, मैक्रोज़, और VBA स्क्रिप्ट्स से इसे तेज़ करने के तरीके हैं (मैं उस पर अभी आता हूं), लेकिन यह परफेक्ट समाधान से काफ़ी दूर है।
डेटा का विश्लेषण
मैं यहां बिल्कुल स्पष्ट रहूंगा: डेटा के विश्लेषण की बात हो तो pandas, Excel को पूरी तरह पीछे छोड़ देता है। दोनों की निष्पक्ष तुलना का कोई तरीका नहीं है। आप Excel में फ़ॉर्मूले लिखकर और कुछ बिल्ट-इन फ़ंक्शन्स का इस्तेमाल करके डेटा का विश्लेषण कर सकते हैं; मैंने वर्षों तक यही किया और उसे कामयाब बनाया। मैंने Excel में डेटा विश्लेषण पर कुछ कक्षाएँ पढ़ाईं, कई मौकों पर इसके उपयोग की वकालत की, और एक सांख्यिकी कक्षा ली जहाँ Excel पसंदीदा टूल था। मैं यह नहीं कह रहा कि इसे विश्लेषण के लिए इस्तेमाल नहीं किया जा सकता। हालांकि, इसकी तुलना pandas से करना कागज़-कलम की तुलना कैलकुलेटर से करने जैसा है; ये एक ही लीग में नहीं हैं।
पिछले साल अगस्त में, Kaggle ने रिपोर्ट किया कि डेटा साइंस में Python ने R को पीछे छोड़ दिया, और दिसंबर में Quartz ने pandas को 'डेटा साइंस का सबसे महत्वपूर्ण टूल' कहा। मुझे लगता है, विषय पर मुझे और बहुत कुछ कहने की ज़रूरत नहीं।
मैक्रोज़ और VBA
2012 में मैं अब भी एक्टिव ड्यूटी पर था और मुझे टेक्सास के एल पासो में फोर्ट ब्लिस पर एक रूटीन डेंटिस्ट अपॉइंटमेंट के लिए जाना पड़ा। कुर्सी पर बैठते ही दंत चिकित्सक ने बताया कि मेरे अक्ल दाढ़ निकालनी होगी, और चूँकि उनके पास समय था, उन्होंने केवल लोकल एनेस्थेटिक के साथ तुरंत ही प्रक्रिया कर दी। वह भयानक अनुभव था जिसने मुझे कई दिनों तक दर्द में रखा। अगर मुझे फिर से वैसा करवाने और Excel मैक्रोज़ या Visual Basic के साथ काम करने के बीच चुनना पड़े, तो शायद मैं फिर से दांत निकलवाना पसंद करूं।
ऐसे बहुत से लोग हैं जो इन क्षेत्रों में बेहद कुशल हैं और मैंने चतुर VBA स्क्रिप्ट्स के साथ किए गए कुछ अद्भुत काम देखे हैं और मैं उनकी सराहना करता हूं। मैं साफ़ तौर पर इसका प्रशंसक नहीं हूं और मैं इसे किसी को भी सुझाता नहीं, खासकर जब आप Python का उपयोग कर सकते हैं। यह VBA का इतना लोकप्रिय विकल्प है कि Microsoft Excel में Python को आधिकारिक स्क्रिप्टिंग भाषा के रूप में शामिल करने पर विचार कर रहा है।
पर मुझे अब भी Excel का उपयोग करना है
जितना मैं सबकुछ Python में करना चाहूंगा, मेरी स्थिति में यह व्यावहारिक नहीं है। फिलहाल, मेरे विश्लेषण के परिणाम अभी भी Excel में ही डिलीवर करने पड़ते हैं। सौभाग्य से, OpenPyXl और XlsxWriter जैसे पैकेज इसी उद्देश्य के लिए बने हैं। मैं XlsxWriter का रोज़ाना उपयोग करता हूं ताकि DataFrames को Excel में बेहद प्रोफेशनल रिपोर्ट्स में बदला जा सके जिनमें कोई फ़ॉर्मूला, मैक्रो, या VBA स्क्रिप्ट नहीं होती। यह विज़ुअलाइज़ेशन्स भी करता है।
विज़ुअलाइज़ेशन की बात चली है तो...
उबाऊ ग्राफ़ अब नहीं
मैं कभी डेटा विज़ुअलाइज़ेशन का उत्साही नहीं रहा। मुझे हमेशा पंक्तियों और स्तंभों में डेटा देखना पसंद था, रुचि वाले क्षेत्रों पर हाइलाइट्स के साथ, शायद कहीं-कहीं बार ग्राफ़। Excel डेटा विज़ुअलाइज़ करने के लिए पर्याप्त विकल्प देकर ठीक-ठाक काम करता है, लेकिन मेरा ज्ञान स्टैक्ड एरिया ग्राफ़, बार ग्राफ़ और लाइन ग्राफ़ बनाने तक ही सीमित था। इन सभी के लिए, मैं डेटा चुनता, “Insert Chart” दबाता और ज़रूरी चार्ट ढूंढ लेता। वहाँ से, थोड़ा-बहुत फ़िल्टरिंग करता और एक शीर्षक जोड़ता, बस इतना ही।
साफ़गोई से कहूं तो, Excel में ग्राफ़ को कस्टमाइज़ करने के ढेरों विकल्प हैं, लेकिन प्रक्रिया बहुत कठिन हो सकती है और सीखने की तेज़ ढलान है। मुझे अब भी Excel में ग्राफ़ बनाना पसंद नहीं, लेकिन Python के साथ कहानी अलग है।
अब मैं डेटा विज़ुअलाइज़ेशन का प्रबल समर्थक हूं और विश्लेषण के लिए बेहतरीन विज़ुअलाइज़ेशन्स तैयार करने में बहुत मेहनत करता हूं। जब मैंने DataCamp पर कोर्सेज़ लेने शुरू किए और Matplotlib तथा Bokeh जैसे पैकेजों से परिचय हुआ, तो मैं डेटा विज़ुअलाइज़ करने की असल शक्ति और उद्देश्य को समझने लगा। Matplotlib के साथ, विज़ुअलाइज़ेशन्स आसानी से pandas के भीतर से या pyplot इम्पोर्ट करके बनाए जा सकते हैं। pyplot में संभावित विज़ुअलाइज़ेशन्स की सूची कहना मुश्किल है कि कितनी व्यापक है, और प्लॉट के लगभग सभी पहलुओं को कस्टमाइज़ किया जा सकता है। Introduction to Data Visualization With Python दिखाता है कि Matplotlib के साथ बेहतरीन विज़ुअलाइज़ेशन्स कैसे बनाते हैं।
Matplotlib जितना अच्छा है, मुझे अपनी विज़ुअलाइज़ेशन्स में थोड़ा और इंटरेक्टिविटी की ज़रूरत महसूस हुई। मैं चाहता था कि किसी दिए गए विज़ुअलाइज़ेशन में चयन, ज़ूम, होवर, सॉर्ट और फ़िल्टर करने की क्षमता हो, और मुझे निश्चित रूप से react.js या D3 नहीं सीखना था। Python सीखना अब भी सुखद है, लेकिन JavaScript मेरी ताकत नहीं। सौभाग्य से, Python फिर से Bokeh और Dash जैसे पैकेजों के साथ मदद को आता है।
Bokeh, जिसे Anaconda सपोर्ट करता है, D3.js और Python को जोड़कर पूरी तरह इंटरेक्टिव ग्राफ़ बनाता है जिन्हें स्टैंडअलोन html दस्तावेज़ के रूप में एक्सपोर्ट किया जा सकता है, वेबपेज में एम्बेड किया जा सकता है, या Bokeh Server पर चलाया जा सकता है। हालांकि इसकी सीखने की ढलान Matplotlib से तेज़ है, मुझे लगता है आप सहमत होंगे कि यह जो विज़ुअलाइज़ेशन्स बनाता है, वे प्रयास के क़ाबिल हैं; बस Gallery देखिए और खुद समझिए। मैं Bokeh में उतना भी कुशल नहीं जितना बनने की योजना है, लेकिन Interactive Data Visualization With Bokeh के पहले ही लेसन से यह मेरा पसंदीदा विज़ुअलाइज़ेशन पैकेज रहा है। अगर Bokeh आपकी ज़रूरतें पूरी नहीं करता, तो Plotly के अच्छे लोगों का Dash है।
Dash Python के लिए एक और मुफ़्त और ओपन सोर्स विज़ुअलाइज़ेशन टूल है जो D3 के बजाय React.js को शामिल करता है। मैंने हाल ही में Dash खोजा है और यह बिना एक लाइन Javascript सीखे कुछ वाकई शानदार, इंटरेक्टिव विज़ुअलाइज़ेशन्स बनाता है। Dash और Bokeh की तुलना करना कठिन है क्योंकि दोनों ही बेहतरीन विज़ुअलाइज़ेशन्स बनाने में सक्षम हैं। Dash के साथ मेरा अब तक का एकमात्र अटकाव यह है कि मैं विज़ुअलाइज़ेशन्स को सिर्फ Dash सर्वर पर ही चला पाया हूं। मैं उन्हें स्टैंडअलोन दस्तावेज़ों, html पेजेस, या Jupyter नोटबुक्स में एम्बेड नहीं कर पाया। फिर भी, जैसा कि उनकी gallery में दिखता है, इसमें काफ़ी संभावनाएँ हैं।
शेड्यूलिंग और टास्क ऑटोमेशन से समय बचाएं
गर्मियों 2014 में, उस संगठन में जिसमें मैं तब काम करता था, हमें एक समस्या थी। आर्मी रिज़र्व कई संख्याओं से संचालित होती है जिन्हें सामूहिक रूप से “Readiness” कहा जाता है। यह किसी दिए गए संगठन में तैनात किए जा सकने वाले कार्मिकों का प्रतिशत है। यह संख्या कई श्रेणियों के डेटा से निर्धारित होती है, जिसमें मेडिकल, डेंटल, शिक्षा, शारीरिक फिटनेस, और अन्य कई संख्याएँ शामिल हैं। मैं यहाँ संख्या नहीं बता सकता लेकिन हमारी संख्या ज़रूरी स्तर के आस-पास भी नहीं थी।
मेरा समाधान Excel में एक मल्टी-पेज रिपोर्ट था जिसमें विभिन्न कार्मिक डेटाबेस से संकलित जानकारी की कई तालिकाएँ और चार्ट्स थे। इस जानकारी में संगठन पर सारांश डेटा, हर माप श्रेणी में प्रत्येक व्यक्ति के बारे में जानकारी, और उस सप्ताह किए जा रहे मौजूदा कार्यों के आधार पर अगले तीन महीनों में संख्या कहाँ होगी, उसके प्रक्षेपण शामिल थे। यह वास्तव में एक बड़ी सफलता थी और हमारा ‘Readiness’ काफी बढ़ा और बहुत लंबे समय तक बना रहा।
हालाँकि यह काम करता था, लेकिन बहुत बिखरा हुआ था। मैं सोमवार सुबह जल्दी आता और अलग-अलग स्रोतों से जानकारी मैन्युअली खींचता, फिर डेटा साफ़ करके उसे उस सप्ताह की रिपोर्ट में कॉपी करता। इसके बाद मैं कम से कम एक घंटा रिपोर्ट में गलतियों की जाँच करने और और भी डेटा सफाई करने में लगाता। उसके बाद इसे प्रशासनिक स्टाफ़ को ईमेल करना पड़ता ताकि वे डेटा की पुष्टि कर सकें और ऐसी कोई अपडेट्स जोड़ सकें जो अभी तक डेटाबेस में नहीं थीं। औसतन, यह रिपोर्ट भेजने में तीन दिन लगते थे। मैन आवर्स की लागत अत्यधिक और अनावश्यक थी।
थोड़ी सी Python स्क्रिप्टिंग के साथ मैं अलग-अलग स्रोतों से सारा डेटा ऑटोमेटिकली खींच सकता था, सबकुछ pandas DataFrames में संकलित कर सकता था, पूरी रिपोर्ट Excel में लिख सकता था, और उसे प्रशासनिक स्टाफ़ को स्वतः ईमेल कर सकता था। सबसे अच्छी बात, इसे सोमवार सुबह रात 12:01 पर चलने के लिए शेड्यूल किया जा सकता था और असंख्य घंटे बचाए जा सकते थे। Linux सिस्टम्स पर, crontab में जोड़कर Python स्क्रिप्ट्स को निश्चित समय पर चलाने के लिए शेड्यूल करना बहुत आसान है। मेरी वर्तमान नौकरी में हम इतने सारे सिस्टम्स के साथ काम करते हैं कि crontab नौकरी का अहम हिस्सा है और वहाँ टास्क शेड्यूल करना एक आवश्यक कौशल। इसलिए यदि आपको हर रात 12 बजे डेटा खींचकर उसे रिपोर्ट में लोड करना पड़े, तो Linux सिस्टम पर crontab ही तरीका होगा।
मैं Linux का प्रशंसक हूं लेकिन मेरा अधिकांश काम Windows पर होता है, और वही मेरा पसंदीदा ऑपरेटिंग सिस्टम है। इसमें, आपके पास Windows Task Scheduler, Schtask.exe, या Powershell के माध्यम से टास्क शेड्यूल करने के विभिन्न विकल्प हैं। इनमें से किसी भी विकल्प के साथ, आप अपनी स्क्रिप्ट्स को सबसे कम व्यस्त घंटों में तब चलने के लिए सेट कर सकते हैं जब सबसे अधिक सिस्टम संसाधन खाली हों, या उन्हें ठीक उस समय के बाद चलने के लिए सेट करें जब आपको पता हो कि कोई डेटा स्रोत अपडेट हुआ है। यह एक ऐसा विकल्प है जो काश मेरे पास कुछ साल पहले होता।
मेरा पसंदीदा टूल: Jupyter Notebooks
इतने वर्षों तक Excel का उपयोग करने के बाद, Python सीखना ऐसा था जैसे मैंने पूरी ज़िंदगी सिर्फ एक प्लायर के सहारे गुज़ारी हो और एक दिन पूरी टूलबॉक्स चमचमाते नए औज़ारों से भरी मिल जाए। हर एक शानदार है और उसका अपना उपयोग है, लेकिन अगर कोई एक टूल है जिसे मैं बाकी सब से ज़्यादा उपयोग करता हूं, तो वह है Jupyter Notebooks। मैंने Python में जो भी लिखा है, वह या तो सीधे उपयोग के लिए या बाद में स्टैंडअलोन Python स्क्रिप्ट के रूप में इस्तेमाल के लिए Jupyter Notebook में लिखा गया है। Jupyter फ़ंक्शन्स लिखने, कोड टेस्ट करने, एक्सप्लोरेटरी डेटा एनालिसिस करने, और यहाँ तक कि फाइनल प्रॉडक्ट प्रस्तुत करने के लिए एक बेहतरीन टूल है। इसका उपयोग ब्लॉग पोस्ट (जैसे यह) लिखने या Github पर Pages के साथ भी किया जा सकता है। यदि आप DataCamp पर ट्यूटोरियल्स देखें, तो आप पाएंगे कि उनमें से कई उसी तरीके से लिखे गए हैं।
Excel पर चर्चा के दौरान इसका ज़िक्र क्यों?
Jupyter Notebooks को आपके विश्लेषण के उत्पाद के रूप में Excel की जगह इस्तेमाल किया जा सकता है। आप अपना कोड लिख सकते हैं, pandas DataFrames, विज़ुअलाइज़ेशन्स और निष्कर्ष सब एक ही पेज पर दिखा सकते हैं, जिसे एक क्लिक में HTML में बदला जा सकता है। मेरे निजी लक्ष्यों में से एक है Excel से पूरी तरह दूर होना और पूरी रिपोर्ट भेजने के लिए Jupyter Notebooks का उपयोग करना। JupyterLab के रिलीज़ होने के बाद यह और भी व्यावहारिक विकल्प बन गया है। उसके साथ मिलकर widgets के ज़रिए आप Jupyter Notebook को एक इंटरेक्टिव डेटा एनालिसिस एप्लिकेशन में बदल सकते हैं।
अंतिम विचार
मैं अब भी रोज़ Excel का उपयोग करता हूं, यह एक बेहतरीन टूल है जो कई संगठनों में गहराई से समाया हुआ है, मेरे संगठन सहित। लगभग सभी इससे परिचित हैं और जानकारी ग्रहण करने और सरल डेटा विश्लेषण करने के लिए इसका उपयोग कर सकते हैं। जो बात मुझे नहीं लगता कि बहुत से लोग जानते हैं, वह यह है कि वही विश्लेषण Pandas और Python के साथ करना न केवल अधिक कुशल है, बल्कि आसान भी है।
मेरा लक्ष्य वर्ष के अंत तक Excel से पूरी तरह दूर हो जाना है, और मैं इस लेख में बताए टूल्स की मदद से ऐसा कर पाऊंगा। आप रातों-रात विशेषज्ञ नहीं बनेंगे, लेकिन यही बात Excel पर भी लागू होती है। मुझे आशा है कि इसे पढ़कर आप Excel से अलग होकर मेरे बताए कुछ नए टूल्स आज़माने के लिए प्रेरित हुए होंगे। यह आपको अधिक कुशल, अधिक उत्पादक बनाएगा, और अंततः आपके वर्कफ़्लो को तेज़ करेगा।