परिचय
इस पोस्ट में दिखाया गया है कि Pandas में SQL शैली फ़िल्टरिंग का उपयोग करके डेटा विश्लेषण कैसे करें। अधिकांश कॉर्पोरेट डेटा डेटाबेस में संग्रहीत होता है जिसे पुनर्प्राप्त करने के लिए SQL की आवश्यकता होती है।
परिदृश्य
मूवी डेटासेट से निम्न शर्तों वाली फिल्में ढूंढें:
- भाषा अंग्रेजी (en) या स्पेनिश (es) हो
- लोकप्रियता 500 और 1000 के बीच हो
- स्टेटस 'Released' हो
- वोट काउंट 5000 से अधिक हो
SQL समकक्ष
SELECT title, original_language, popularity, status, vote_count
FROM movies_data
WHERE original_language IN ('en', 'es')
AND status = 'Released'
AND popularity BETWEEN 500 AND 1000
AND vote_count > 5000;
विधि 1: बूलियन इंडेक्सिंग
import pandas as pd
movies = pd.read_csv("movies_data.csv")
languages = ["en", "es"]
cond_lang = movies.original_language.isin(languages)
cond_status = movies.status == "Released"
cond_pop = movies.popularity.between(500, 1000)
cond_vote = movies.vote_count > 5000
final = cond_lang & cond_status & cond_pop & cond_vote
cols = ["title", "original_language", "status", "popularity", "vote_count"]
movies.loc[final, cols]
विधि 2: .query() मेथड
.query() SQL WHERE क्लॉज शैली में फ़िल्टर करता है। बड़े डेटाफ्रेम पर तेज़ होता है।
import pandas as pd
movies = pd.read_csv("movies_data.csv")
cond = ("original_language in ['en','es']"
" and status == 'Released'"
" and popularity > 500"
" and popularity < 1000"
" and vote_count > 5000")
movies.query(cond)
पायथन वेरिएबल का उपयोग
movie_languages = ['en', 'es']
cond = ("original_language in @movie_languages"
" and status == 'Released'"
" and popularity > 500"
" and popularity < 1000"
" and vote_count > 5000")
movies.query(cond)
नोट: @ प्रतीक पायथन वेरिएबल को क्वेरी स्ट्रिंग में संदर्भित करता है।