Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

पंडों में SQL क्वेरी शैली में डेटा के सबसेट का चयन कैसे करें?

<घंटा/>

परिचय

इस पोस्ट में, मैं आपको दिखाऊंगा कि पंडों के साथ SQL शैली फ़िल्टरिंग के साथ डेटा विश्लेषण कैसे करें। कॉर्पोरेट कंपनी का अधिकांश डेटा डेटाबेस में संग्रहीत किया जाता है, जिसे पुनर्प्राप्त करने और उसमें हेरफेर करने के लिए SQL की आवश्यकता होती है। उदाहरण के लिए, Oracle, IBM, Microsoft जैसी कंपनियां हैं जिनके पास अपने स्वयं के SQL कार्यान्वयन के साथ स्वयं के डेटाबेस हैं।

डेटा वैज्ञानिकों को अपने करियर के किसी न किसी चरण में SQL से निपटना पड़ता है क्योंकि डेटा हमेशा CSV फ़ाइलों में संग्रहीत नहीं होता है। मैं व्यक्तिगत रूप से Oracle का उपयोग करना पसंद करता हूं, क्योंकि मेरी कंपनी का अधिकांश डेटा Oracle में संग्रहीत है।

परिदृश्य – 1 मान लीजिए कि हमें नीचे दी गई शर्तों के साथ हमारे मूवी डेटासेट से सभी फिल्मों को खोजने का कार्य दिया गया है।

  • फिल्मों की भाषा या तो अंग्रेजी (एन) या स्पेनिश (एस) होनी चाहिए।
  • फिल्मों की लोकप्रियता 500 से 1000 के बीच होनी चाहिए।
  • फिल्म की स्थिति जारी होनी चाहिए।
  • मतदानों की संख्या 5000 से अधिक होनी चाहिए। उपरोक्त परिदृश्य के लिए, SQL कथन नीचे जैसा कुछ दिखाई देगा।
<पूर्व>चुनें जहां से मूवी_शीर्षक के रूप में, मूल_भाषा मूवी_भाषा के रूप में, लोकप्रियता मूवी_लोकप्रियता के रूप में, स्थिति मूवी_स्टेटस के रूप में, वोट_काउंट मूवी_वोट_काउंट मूवी_डेटाओरिजिनल_लैंग्वेजआईएन ('एन', 'एस') और स्थिति =('रिलीज') और 500 और 1000 के बीच लोकप्रियता और वोट_काउंट> 5000;

अब जब आपने आवश्यकता के लिए SQL देख लिया है, तो चलिए पांडा का उपयोग करके इस चरण को चरणबद्ध तरीके से करते हैं। मैं आपको दो तरीके दिखाऊंगा।

विधि 1:- बूलियन अनुक्रमण

1. Movies_data डेटासेट को DataFrame में लोड करें।

pd मूवी के रूप में पांडा आयात करें =pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")

प्रत्येक शर्त के लिए एक चर निर्दिष्ट करें।

<पूर्व>भाषाएं =["एन", "एस"] condition_on_languages ​​=चलचित्र। वास्तविक भाषा । isin (भाषाएं) condition_on_status =चलचित्र। स्थिति =="रिलीज़" condition_on_popularity =चलचित्र। लोकप्रियता। बीच (500, 1000) condition_on_votecount =चलचित्र। वोट_गिनती> 5000

3. सभी शर्तों (बूलियन सरणियों) को एक साथ मिलाएं।

 final_conditions =( condition_on_languages ​​&condition_on_status &condition_on_popularity &condition_on_votecount )columns =["title" , "Original_language", "status", "popularity" , "vote_count"]# सभी मूवी को एक साथ क्लब करना। loc [ final_conditions , कॉलम ]


<थेड> <टीडी>एन
<टीडी>10867
<टीडी>एन
<टीडी>10995
शीर्षक
<थ>मूल_भाषा
<वें>स्थिति
<वें>लोकप्रियता
<वें>वोट_गिनती
95 इंटरस्टेलर
विमोचित
724.247784
788डेडपूल
विमोचित
514.569956


विधि 2:- .query() विधि।

.query() विधि एक SQL है जहाँ डेटा को फ़िल्टर करने का क्लॉज़ शैली तरीका है। शर्तों को इस पद्धति के लिए एक स्ट्रिंग के रूप में पारित किया जा सकता है, हालांकि, कॉलम नामों में कोई रिक्त स्थान नहीं होना चाहिए।

यदि आपके कॉलम नामों में रिक्त स्थान हैं, तो उन्हें पायथन रिप्लेस फंक्शन का उपयोग करके अंडरस्कोर से बदलें।

अपने अनुभव से मैंने देखा है कि जब एक बड़े डेटाफ़्रेम पर लागू किया जाता है तो क्वेरी () विधि पिछली विधि की तुलना में तेज़ होती है।

pd मूवी के रूप में पांडा आयात करें =pd। read_csv ("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")

4. क्वेरी स्ट्रिंग बनाएं और विधि निष्पादित करें।

ध्यान दें कि .query विधि एकाधिक पंक्तियों में फैले ट्रिपल उद्धृत स्ट्रिंग्स के साथ काम नहीं करती है।

 final_conditions =("['en','es']"" और status =='रिलीज़' ""और लोकप्रियता> 500 ""और लोकप्रियता <1000""और वोट_गिनती> 5000") final_result =चलचित्र . क्वेरी ( final_conditions ) final_result


<थेड> <टीडी>165000000
<टीडी>157336
<टीडी>एन
<टीडी>58000000
<टीडी>एन
<टीडी>108.0

<वें>बजट
<वें>आईडी
<थ>मूल_भाषा
<वें>मूल_शीर्षक
<वें>लोकप्रियता
<वें>रिलीज_तारीख
<वें>राजस्व
<वें>रनटाइम
<वें>स्ट
95
अंतरतारकीय
724.247784
5/11/2014
675120017
169.0
रिलीज
788
293660
डेडपूल
514.569956
9/02/2016
783112979
रिलीज


मेरे कोडिंग में और भी बहुत कुछ है, मेरे पास अपने "इन" क्लॉज में जांचने के लिए कई मान हैं। तो उपरोक्त सिंटैक्स के साथ काम करने के लिए आदर्श नहीं है। एट सिंबल (@) का उपयोग करके पायथन वेरिएबल्स को संदर्भित करना संभव है।

आप पाइथन सूची के रूप में प्रोग्रामेटिक रूप से मान भी बना सकते हैं और उन्हें (@) के साथ उपयोग कर सकते हैं।

movie_languages ​​=['en' , 'es' ] final_conditions =("मूल_भाषा @movie_languages ​​में ""और स्थिति =='रिलीज़' ""और लोकप्रियता> 500 ""और लोकप्रियता <1000""और वोट_काउंट> 5000" ) final_result =फिल्में। क्वेरी ( final_conditions ) final_result


<थेड> <टीडी>165000000
<टीडी>157336
<टीडी>एन
<टीडी>58000000
<टीडी>एन
<टीडी>108.0

<वें>बजट
<वें>आईडी
<थ>मूल_भाषा
<वें>मूल_शीर्षक
<वें>लोकप्रियता
<वें>रिलीज_तारीख
<वें>राजस्व
<वें>रनटाइम
<वें>स्ट
95
अंतरतारकीय
724.247784
5/11/2014
675120017
169.0
रिलीज
788
293660
डेडपूल
514.569956
9/02/2016
783112979
रिलीज

  1. संरचित क्वेरी भाषा (एसक्यूएल)

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

  1. एंड्रॉइड स्क्लाइट में सेलेक्ट क्वेरी का उपयोग कैसे करें?

    उदाहरण में आने से पहले, हमें पता होना चाहिए कि एंड्रॉइड में एसक्लाइट डेटा बेस क्या है। SQLite एक ओपनसोर्स SQL ​​डेटाबेस है जो किसी डिवाइस पर टेक्स्ट फ़ाइल में डेटा संग्रहीत करता है। Android अंतर्निहित SQLite डेटाबेस कार्यान्वयन के साथ आता है। SQLite सभी रिलेशनल डेटाबेस सुविधाओं का समर्थन करता है। इस

  1. बिना किसी व्यवधान के Redis SQL क्वेरी कैसे चलाएँ?

    Redis SQL क्वेरी चलाना मुश्किल नहीं है। मैंने वास्तव में कुछ साल पहले एक खुदरा कंपनी में डेटा वेयरहाउसिंग समाधान का प्रबंधन करने वाले मित्र से बात करते हुए इस बिंदु को उठाया था। रेडिस ने जिस समस्या का सामना किया, उसके बारे में बताने के बाद हमने उसके बारे में बात करना शुरू किया। हमारे डेटा वेयरहाउसि