पांडा बनाम एसक्यूएल - भाग 4: पांडा अधिक सुविधाजनक है

Nov 25 2022
tl; डॉ: इस पोस्ट में, हम पांडा बनाम एसक्यूएल की तुलना तीन अक्षों में से तीसरे पर करते हैं: सुविधा।
ओपनवर्स में गैमेन द्वारा फोटो (सीसी बाय 2.0)

tl; डॉ: इस पोस्ट में, हम पांडा बनाम एसक्यूएल की तुलना तीन अक्षों में से तीसरे पर करते हैं: सुविधा। हम छह तरीकों का वर्णन करते हैं जिसमें पंडों का डेटाफ़्रेम डेटा मॉडल डेटा विज्ञान और मशीन सीखने के उपयोग के मामलों के लिए अधिक सुविधाजनक है।

पंडों बनाम एसक्यूएल के बीच हमारी महाकाव्य लड़ाई की इस चौथी पेशकश में, हम बताते हैं कि डेटा साइंस और मशीन लर्निंग के लिए पांडा एसक्यूएल की तुलना में अधिक सुविधाजनक कैसे हैं। पंडों को डेटा वैज्ञानिकों द्वारा डेटा वैज्ञानिकों के लिए डिज़ाइन किया गया था, और हजारों सुधारों से लाभान्वित हुए, खुले स्रोत डेटा विज्ञान समुदाय द्वारा उत्साहपूर्वक योगदान दिया गया - सभी अधिक उपयोगिता और उपयोग में आसानी की ओर एक नज़र के साथ। तो इसमें कोई आश्चर्य की बात नहीं है कि यह एक अच्छा फिट है!

शुरू करने से पहले, यदि आप हमारे पिछले पंडों बनाम एसक्यूएल प्रसाद को याद करते हैं, तो आप अभी भी यहां पकड़ सकते हैं: भाग 1: फूड कोर्ट और मिशेलिन-शैली रेस्तरां , भाग 2: पांडा अधिक संक्षिप्त है , और भाग 3: पांडा अधिक है लचीला । हमारी पिछली पोस्ट डेटाफ़्रेम डेटा मॉडल और डेटाफ़्रेम बीजगणित की तुलना पर केंद्रित हैं - इस पोस्ट में, हम डेटाफ़्रेम एर्गोनॉमिक्स पर ध्यान केंद्रित करते हैं: विशेष रूप से, डेटाफ़्रेम का उपयोग कैसे किया जाता है।

आसानी से देखने के लिए, यहां उन कई तरीकों की एक आसान सूची दी गई है, जिनमें पांडा डेटाफ़्रेम उनके रिलेशनल/एसक्यूएल समकक्षों की तुलना में अधिक सुविधाजनक हैं:

  1. पंडों में, आप जैसे-जैसे आगे बढ़ते हैं, वैसे-वैसे प्रश्नों का निर्माण कर सकते हैं; एसक्यूएल में, आप नहीं कर सकते।
  2. पंडों में, मध्यवर्ती परिणामों का संचालन और नामकरण करना आसान है; एसक्यूएल में यह कठिन है।
  3. पंडों में, डेटा की त्वरित समझ प्राप्त करना आसान है; एसक्यूएल में यह बहुत कठिन है।
  4. पंडों के पास विज़ुअलाइज़ेशन के लिए मूल समर्थन है; एसक्यूएल नहीं करता है।
  5. पांडा मशीन लर्निंग को आसान बनाते हैं; एसक्यूएल नहीं करता है।
  6. पंडास उपयोगकर्ताओं को मध्यवर्ती चरणों की शुद्धता को सत्यापित करने में मदद करने के लिए आदेश को संरक्षित करता है - और उपयोगकर्ताओं को ऑर्डर पर काम करने की अनुमति देता है; एसक्यूएल नहीं करता है।

1. पंडों में, आप जैसे-जैसे आगे बढ़ते हैं, वैसे-वैसे प्रश्नों का निर्माण कर सकते हैं; एसक्यूएल में, आप नहीं कर सकते।

पंडों और एसक्यूएल के बीच एक महत्वपूर्ण अंतर यह है कि पंडों ने उपयोगकर्ताओं को अधिक जटिल प्रश्नों के निर्माण के लिए दूसरों के ऊपर संवर्द्धित रूप से परत संचालन करने की अनुमति दी है। उसी समय, उपयोगकर्ता इन क्वेरी अंशों के मध्यवर्ती परिणामों का निरीक्षण कर सकते हैं - शुद्धता को सत्यापित करने के प्रयास में जैसे वे आगे बढ़ते हैं। पंडों के साथ डिबगिंग आसान है!

तो हमारे डेटासेट में, कहते हैं कि हम गीरी स्ट्रीट के अनुरूप परमिट पर ध्यान केंद्रित करना चाहते हैं। हम डेटासेट के उस सबसेट को निम्नानुसार निकाल सकते हैं:

एक बात जो हमने देखी होगी वह यह है कि गीरी कई मोहल्लों में फैला हुआ है, यहाँ 'Neighborhoods - Analysis Boundaries'. मान लीजिए कि हम केवल इस कॉलम की जांच करना चाहते हैं 'Neighborhoods - Analysis Boundaries'(और शेष 42 कॉलमों को छोड़ दें), हम केवल [['Neighborhoods - Analysis Boundaries']]पिछली अभिव्यक्ति के अंत में खंड को जोड़ सकते हैं।

यह बहुत सारी पंक्तियाँ हैं: 1966। फिर, हमारे अंतिम दो चरणों के रूप में, हम गेरी पर सबसे अधिक परमिट वाले पड़ोस की पहचान करना चाहते हैं। ऐसा करने का एक तरीका a के 'sort_values'बाद a जोड़ना है 'value_counts'

दिलचस्प है, इसलिए शीर्ष पड़ोस टेंडरलॉइन है, इसके बाद आउटर रिचमंड है। ध्यान दें कि संचालन के इस क्रम को निश्चित रूप से एसक्यूएल में व्यक्त किया जा सकता है, यह अधिक दर्दनाक होता। हम किसी की SQL क्वेरी के अंत में ऑपरेटरों को आसानी से जोड़ नहीं सकते हैं: क्वेरी के भीतर विशिष्ट स्थान हैं जहाँ हमें परिवर्तन करने की आवश्यकता होगी। उदाहरण के लिए, यह बदलने के लिए कि कौन से कॉलम प्रदर्शित किए जाते हैं, हमें पहले SELECTही क्वेरी के हिस्से को संशोधित करने की आवश्यकता होगी। पंडा इसके बजाय आपको परिचालन (या अनिवार्य रूप से) सोचने की अनुमति देता है - और अपने अंतिम परिणाम का चरण-दर-चरण निर्माण करता है, सभी मध्यवर्ती परिणामों की जांच करते समय।

2. पंडों में, मध्यवर्ती परिणामों का संचालन और नामकरण आसान है; एसक्यूएल में यह कठिन है।

पांडा, चूंकि यह एक वास्तविक प्रोग्रामिंग भाषा में एम्बेडेड है, पायथन, डेटाफ़्रेम पर संचालन के लिए कई परिचित प्रोग्रामेटिक मुहावरों को उधार लेता है। विशेष रूप से, हम एक चर के लिए एक डेटाफ़्रेम अभिव्यक्ति निर्दिष्ट कर सकते हैं; इन चरों को तब संचालित किया जा सकता है और/या अन्य चरों को सौंपा जा सकता है।

हम वर्णन करने के लिए एक सरल उदाहरण लेंगे। चूंकि यह डेटासेट डेटा सफाई चुनौती से है, मान लें कि हमें संदेह है कि कई शून्य मान हो सकते हैं। हम निम्न का उपयोग करके जांच सकते हैं कि प्रति कॉलम कितने हैं:

यह बहुत सारे अशक्त मूल्य हैं! मान लीजिए कि मैं अपने डेटासेट का एक साफ संस्करण बनाना चाहता हूं, बहुत सारे अशक्त मानों के साथ स्तंभों को छोड़ना, 190000 गैर-शून्य मानों पर निर्धारित सीमा के साथ। (समग्र डेटासेट में लगभग 199000 पंक्तियाँ हैं।)

वाह - कॉलम की संख्या 43 से गिरकर सिर्फ 13 हो जाती है। जैसा कि हमने यहां देखा, हम मानक प्रोग्रामेटिक वेरिएबल असाइनमेंट का उपयोग करके और बाद में उस पर काम करते हुए एक नए वेरिएबल को आसानी से परिभाषित करने में सक्षम थे 'sf_permits_cleaned'(जैसे हमने पिछले वेरिएबल को बनाया था )। 'missing_values_count'प्रोग्रामर के लिए यह दृष्टिकोण स्वाभाविक है। एसक्यूएल में, विचारों के माध्यम से एक समान प्रभाव को पूरा किया जा सकता है, लेकिन विचारों को परिभाषित करना और उन पर काम करना कम सहज और अधिक बोझिल है।

3. पंडों में, डेटा की त्वरित समझ प्राप्त करना आसान है; एसक्यूएल में यह बहुत कठिन है।

पांडा डेटाफ़्रेम के डेटा और मेटाडेटा को समझने के त्वरित तरीके प्रदान करता है। हम इसके उदाहरण पहले ही देख चुके हैं जब हम किसी डेटाफ्रेम को केवल उसके चर नाम का उपयोग करके प्रिंट करते हैं, या यदि हम फ़ंक्शन का उपयोग करते हैं 'head/tail()'। सुविधा के लिए, एक स्क्रीन पर फ़िट होने के लिए, कुछ पंक्तियों और स्तंभों को दूर छिपा दिया जाता '...'है ताकि उपयोगकर्ताओं को अभी भी डेटा का उच्च-स्तरीय चित्र प्राप्त करने में मदद मिल सके।

यदि हम स्तंभों और उनके प्रकारों के सारांश का निरीक्षण करना चाहते हैं, तो पंडों द्वारा प्रदान किया जाने वाला एक सुविधाजनक कार्य है 'info()', जो डेटासेट के स्तंभों, उनके प्रकारों और शून्य मानों की संख्या को सूचीबद्ध करता है। हम इस फ़ंक्शन का उपयोग हमारे द्वारा अभी बनाए गए डेटाफ़्रेम का निरीक्षण करने के लिए कर सकते हैं।

तो ऐसा लगता है कि अभी भी शून्य मानों वाला एकमात्र कॉलम विवरण कॉलम है; अन्य सभी कॉलम पूरी तरह से भरे हुए हैं।

संख्यात्मक स्तंभों पर लक्षित एक अन्य उपयोगी पांडा फ़ंक्शन है 'describe()', जो गणना, साधन, मानक विचलन और मात्राओं के साथ इन स्तंभों का एक सुविधाजनक सारांश प्रदान करता है।

हम्म, तो यहाँ एक गली संख्या 0 प्रतीत होती है। जिज्ञासु!

दुर्भाग्य से, SQL किसी के डेटासेट के आकार और विशेषताओं को समझने के लिए समान सुविधा प्रदान नहीं करता है - आपको इस उद्देश्य के लिए कस्टम क्वेरी लिखनी होगी। पिछले उदाहरण के लिए, इस क्वेरी की लंबाई संख्यात्मक स्तंभों की संख्या के समानुपाती होगी।

4. पंडों के पास विज़ुअलाइज़ेशन के लिए मूल समर्थन है; एसक्यूएल नहीं करता है।

संख्याओं की तालिकाओं का विश्लेषण केवल आपको अभी तक मिलेगा। अक्सर आपको डेटाफ्रेम में जानकारी की समझ बनाने के दृश्य तरीके की आवश्यकता होती है। SQL के विपरीत, जिसके लिए आपको अपने डेटा को एक अलग विज़ुअलाइज़ेशन या BI (बिजनेस इंटेलिजेंस) टूल में लोड करने की आवश्यकता होती है, पांडा लाइब्रेरी के भीतर इन-बिल्ट विज़ुअलाइज़ेशन सपोर्ट प्रदान करता है। उदाहरण के लिए, मैं विभिन्न परमिटों के 'plot()'बार चार्ट को देखने के लिए बस कॉल कर सकता हूं।'Current Status'

ऐसा लगता है कि अधिकांश परमिट पूर्ण, जारी और दायर श्रेणियों में हैं, अन्य श्रेणियों में एक छोटी संख्या के साथ।

इस सुविधा की शक्ति स्पष्ट है: SQL डेटाबेस के विपरीत, यदि आप विज़ुअलाइज़ेशन उत्पन्न करना चाहते हैं तो आपको लाइब्रेरी छोड़ने की आवश्यकता नहीं है - आप इसे वहीं कर सकते हैं! यदि आप अपने विज़ुअलाइज़ेशन अनुभव को "पावर-अप" करना चाहते हैं, तो कई विज़ुअलाइज़ेशन लाइब्रेरी हैं जो पांडा के साथ कसकर एकीकृत होती हैं, जिसमें माटप्लोटलिब , सीबॉर्न और अल्टेयर शामिल हैं । और यदि आप मेरी तरह आलसी हैं, और विज़ुअलाइज़ेशन उत्पन्न करने के लिए कोई भी कोड लिखना नहीं चाहते हैं, तो आप Lux का उपयोग कर सकते हैं , हमारी पांडा-देशी विज़ुअलाइज़ेशन अनुशंसा लाइब्रेरी, आपके लिए स्वचालित रूप से विज़ुअलाइज़ेशन उत्पन्न करने के लिए, सभी आपके डेटासेट के लिए ट्यून किए गए हैं . लक्स के बारे में यहाँ और पढ़ें ।

5. पांडा मशीन लर्निंग को आसान बनाते हैं; एसक्यूएल नहीं करता है।

मशीन लर्निंग डेटा साइंस का एक प्रमुख घटक है, जो उपयोगकर्ताओं को न केवल इमेज, वीडियो और टेक्स्ट जैसे असंरचित डेटा को समझने में सक्षम बनाता है, बल्कि भविष्य के बारे में भविष्यवाणी भी करता है। चूँकि पंडों को डेटा साइंस इकोसिस्टम में मजबूती से एकीकृत किया गया है, इसलिए यह कोई आश्चर्य की बात नहीं है कि यह मशीन लर्निंग लाइब्रेरी के साथ अच्छी तरह से काम करता है, जिसमें स्किकिट-लर्न , पाइटोरच , सुन्न , जैसे सामान्य पुस्तकालय शामिल हैं। यहां, हम अपने डेटासेट में टेक्स्ट कॉलम को समझने के लिए स्पासी लाइब्रेरी, अपेक्षाकृत नई प्राकृतिक भाषा प्रसंस्करण लाइब्रेरी का उपयोग करेंगे। SpaCy अन्य शब्दों के बीच शब्द एम्बेडिंग, नामित इकाई पहचान, वाक् टैगिंग का हिस्सा, वर्गीकरण करने के लिए विभिन्न शब्द पूर्व-प्रशिक्षित मॉडल प्रदान करता है। SpaCy को स्थापित करने के लिए, हम निम्नलिखित कमांड चलाते हैं:

अब जबकि हमने इसे इंस्टॉल कर लिया है, मान लीजिए कि हम अपने डेटासेट में प्रत्येक परमिट एप्लिकेशन (यानी पंक्ति) में शामिल गतिविधियों के प्रकार (जैसे, विध्वंस, निष्कासन, प्रतिस्थापन, आदि) को समझना चाहते हैं। इसे पहले समझना मुश्किल है, लेकिन टेक्स्ट फ़ील्ड के भीतर दबा हुआ है 'Description'। आइए इस क्षेत्र में उल्लिखित क्रियाओं की सूची निकालने के लिए पैकेज का उपयोग करें। इसके भाग के रूप में, हम पहले स्पासी के मॉडल को लोड करते 'en_core_web_md'हैं, और उसके बाद मॉडल का उपयोग करके विवरण के टोकननाइजेशन में प्रत्येक क्रिया को निकालने के द्वारा इसे एक सरणी में संग्रहीत करते हैं, निम्नानुसार है।

इसलिए, जैसा कि हम ऊपर देख सकते हैं, मॉडल क्रियाओं को निकालने का एक उचित काम करता है, भले ही यह कुछ याद करता है (उदाहरण के लिए, स्थापित करें)। बड़े पूर्व-प्रशिक्षित मॉडल (जैसे, ट्रांसफ़ॉर्मर मॉडल) की बढ़ती उपलब्धता के साथ , मैं पांडा के भीतर दिन-प्रतिदिन डेटा प्रोसेसिंग में ऐसे मॉडल के और भी अधिक एकीकरण की अपेक्षा करता हूँ।

SQL डेटाबेस में मशीन लर्निंग का एकीकरण असाधारण रूप से कठिन है। जबकि कुछ डेटाबेस मशीन-लर्निंग-विशिष्ट निर्माण (जैसे, BigQuery ML) प्रदान करते हैं, उपयोगकर्ता सीमित होते हैं कि वे क्या हासिल कर सकते हैं, और उनके पास ठीक-ठाक नियंत्रण नहीं होता है। मशीन सीखने के लिए यूडीएफ का उपयोग करने के लिए एक और कठिन दृष्टिकोण है। अक्सर जो हो रहा है वह यह है कि उपयोगकर्ता मशीन सीखने के लिए डेटाबेस संदर्भ के बाहर अपना डेटा निर्यात कर रहे हैं।

6. पंडास उपयोगकर्ताओं को मध्यवर्ती चरणों की शुद्धता को सत्यापित करने में मदद करने के लिए आदेश को संरक्षित करता है - और उपयोगकर्ताओं को ऑर्डर पर काम करने की अनुमति देता है; एसक्यूएल नहीं करता है।

पांडा आदेश की रक्षा करता है। डिबगिंग और सत्यापन के लिए यह महत्वपूर्ण है क्योंकि कोई अधिक जटिल क्वेरी एक्सप्रेशन बना रहा है। क्रियाओं के स्पासी निष्कर्षण के बाद ताजा मेरे उदाहरण के साथ जारी रखते हुए, कहते हैं कि मैं 'explode'पिछले डेटाफ़्रेम में अलग-अलग क्रियाओं को कई पंक्तियों में विस्तारित करने के लिए फ़ंक्शन का उपयोग करना चाहता हूं, प्रति क्रिया एक; मैं इसे निम्नानुसार कर सकता हूं।

ध्यान दें कि अब मेरे पास मूल पंक्ति 1 के अनुरूप तीन पंक्तियाँ हैं, जिनमें से प्रत्येक क्रिया को निकाला गया है। आदेश का यह संरक्षण इस चरण की शुद्धता को सत्यापित करना आसान बनाता है। SQL डेटाबेस का उपयोग करना, यह बहुत कठिन होगा क्योंकि ऑर्डर की गारंटी नहीं है, इसलिए किसी को यह देखने के लिए पूरे आउटपुट को देखने की आवश्यकता होगी कि दी गई पंक्ति कहाँ समाप्त हुई (या इसके बजाय एक विशिष्ट आउटपुट ऑर्डर को लागू करने के लिए एक खंड जोड़ें)।ORDER BY

निष्कर्ष

इस पोस्ट में, हमने विभिन्न तरीकों को शामिल किया है जिसमें एंड-यूज़र के दृष्टिकोण से पंडों SQL की तुलना में अधिक सुविधाजनक हैं। इसमें आदेश के संरक्षण, वृद्धिशील संरचना, नामकरण और हेरफेर, और रास्ते में निरीक्षण के माध्यम से पंडों के प्रश्नों को सही ढंग से बनाने में आसानी शामिल है। इसमें अन्य डेटा विज्ञान और डेटा विश्लेषण आवश्यकताओं के साथ एकीकरण भी शामिल है, जिसमें विज़ुअलाइज़ेशन और मशीन लर्निंग शामिल है: पांडा दोनों ही उपयोगकर्ताओं को पांडा के अंदर पूरी तरह से भविष्य कहनेवाला मॉडलिंग की कल्पना और प्रदर्शन करने देता है, लेकिन आउटपुट को अन्य लोकप्रिय विज़ुअलाइज़ेशन और मशीन लर्निंग लाइब्रेरी से कनेक्ट करने के लिए हुक भी प्रदान करता है और संकुल, विशेष रूप से PyData पारिस्थितिकी तंत्र के भीतर। अंत में, पांडा एक पूर्ण विकसित प्रोग्रामिंग भाषा, पायथन के भीतर बैठता है, और इसकी सभी घटक शक्ति प्राप्त करता है।

यदि आप अन्य उदाहरणों के बारे में सोच सकते हैं जहां पंडों SQL की तुलना में अधिक सुविधाजनक हैं, या इसके विपरीत, हम इसे सुनना पसंद करेंगे! बेझिझक हमारे ट्वीट का जवाब दें , और अधिक पांडा / पायथन / डेटा विज्ञान सामग्री के लिए हमें ट्विटर या लिंक्डइन पर फ़ॉलो करें !