मुख्य सामग्री पर जाएं
SQL
Python

pandas में pandasql क्वेरीज़ का उपयोग करके SQL कैसे करें

pandas के भीतर SQL की शक्ति को अनलॉक करें और pandasql लाइब्रेरी का उपयोग करके pandas में SQL क्वेरीज़ कब और कैसे करें, यह सीखें ताकि सहज इंटिग्रेशन मिल सके।
Elena Kosourova's photo
Elena Kosourova
अपडेट किया गया · 8 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

अपना निःशुल्क खाता बनाएँ

अभ्यास और ट्रैक अपनी प्रगति को।

Google के साथ जारी रखें
जारी रखने पर, आप हमारी उपयोग की शर्तें, हमारी गोपनीयता नीति को स्वीकार करते हैं और यह भी कि आपका डेटा संयुक्त राज्य अमेरिका में संग्रहीत किया जाता है।

इस ट्यूटोरियल में, हम चर्चा करेंगे कि pandas के ढांचे में SQL की कार्यक्षमता हम कब और कैसे (और कब नहीं) इस्तेमाल कर सकते हैं। साथ ही, हम इस तरीके को लागू करने के कई उदाहरण देखेंगे और उनके नतीजों की तुलना शुद्ध pandas के समकक्ष कोड से करेंगे।

pandas में SQL क्यों इस्तेमाल करें?

जब pandas स्वयं एक संपूर्ण डेटा विश्लेषण पैकेज है, तब किसी को pandas के साथ SQL क्यों जोड़ना चाहिए?

जवाब यह है कि कुछ मौकों पर, खासकर जटिल प्रोग्रामों में, SQL क्वेरीज़ संबंधित pandas कोड की तुलना में अधिक सीधे-सादे और पढ़ने में आसान लगती हैं। यह विशेष रूप से उन लोगों के लिए सही है जिन्होंने पहले डेटा के साथ काम करने के लिए SQL का उपयोग किया और बाद में pandas सीखा।

SQL की पठनीयता को क्रियान्वयन में देखने के लिए, मान लीजिए हमारे पास penguins नाम की एक तालिका (dataframe) है जिसमें पेंगुइनों के बारे में विभिन्न जानकारी है (और हम इस ट्यूटोरियल में आगे ऐसी ही तालिका के साथ काम करेंगे)। उन सभी अद्वितीय प्रजातियों को निकालने के लिए जो नर हैं और जिनके फ्लिपर 210 मिमी से लंबे हैं, pandas में हमें यह कोड चाहिए होगा:

penguins[(penguins['sex'] == 'Male') & (penguins['flipper_length_mm'] > 210)]['species'].unique()

वहीं, SQL का उपयोग करके वही जानकारी पाने के लिए हम यह कोड चलाएंगे:

SELECT DISTINCT species FROM penguins WHERE sex = 'Male' AND flipper_length_mm > 210

दूसरा कोड, जो SQL में लिखा है, लगभग एक स्वाभाविक अंग्रेज़ी वाक्य जैसा दिखता है और इसलिए कहीं अधिक सहज है। हम इसे कई पंक्तियों में लिखकर पठनीयता और बढ़ा सकते हैं:

SELECT DISTINCT species
  FROM penguins 
 WHERE sex = 'Male' 
   AND flipper_length_mm > 210

अब जब हमने pandas के लिए SQL के उपयोग के फायदे पहचान लिए हैं, तो देखें कि हम तकनीकी तौर पर दोनों को कैसे जोड़ सकते हैं।

pandasql का उपयोग कैसे करें

pandasql Python लाइब्रेरी किसी भी SQL सर्वर से कनेक्ट हुए बिना SQL कमांड चलाकर pandas dataframes पर क्वेरी करने की अनुमति देती है। अंदरूनी तौर पर यह SQLite सिंटैक्स का उपयोग करती है, किसी भी pandas dataframe को अपने आप पहचानती है, और उसे एक सामान्य SQL तालिका की तरह ट्रीट करती है।

अपना परिवेश सेट करना

सबसे पहले, हमें pandasql इंस्टॉल करनी होगी:

pip install pandasql

फिर, आवश्यक पैकेज इम्पोर्ट करें:

from pandasql import sqldf
import pandas as pd

ऊपर, हमने सीधे pandasql से sqldf() फ़ंक्शन इम्पोर्ट किया है, जो व्यवहार में इस लाइब्रेरी का लगभग एकमात्र सार्थक फ़ंक्शन है। नाम से स्पष्ट है कि इसे SQL सिंटैक्स का उपयोग करके dataframes पर क्वेरी करने के लिए लगाया जाता है। इस फ़ंक्शन के अलावा, pandasql में दो सरल बिल्ट-इन डेटासेट भी आते हैं जिन्हें load_births() और load_meat() जैसे स्वयं-स्पष्ट फ़ंक्शनों से लोड किया जा सकता है।

pandasql सिंटैक्स

sqldf() फ़ंक्शन का सिंटैक्स बहुत सरल है:

sqldf(query, env=None)

यहां, query एक आवश्यक पैरामीटर है जो स्ट्रिंग के रूप में SQL क्वेरी लेता है, और env—एक वैकल्पिक (और कम उपयोगी) पैरामीटर है, जो locals() या globals() हो सकता है और sqldf() को आपके Python वातावरण में संबंधित वेरिएबल्स तक पहुंचने देता है।

sqldf() फ़ंक्शन क्वेरी के परिणाम को pandas dataframe के रूप में लौटाता है।

हम pandasql कब उपयोग कर सकते हैं

pandasql लाइब्रेरी Data Query Language (DQL) का उपयोग करके डेटा के साथ काम करने देती है, जो SQL का एक सबसेट है। दूसरे शब्दों में, pandasql के साथ हम डेटाबेस में संग्रहीत डेटा पर क्वेरी चलाकर आवश्यक जानकारी प्राप्त कर सकते हैं। खासकर, हम डेटा तक पहुंच सकते हैं, निकाल सकते हैं, फ़िल्टर कर सकते हैं, सॉर्ट, ग्रुप, जॉइन, एग्रीगेट कर सकते हैं, और उस पर गणितीय या तार्किक ऑपरेशन कर सकते हैं।

हम pandasql कब उपयोग नहीं कर सकते

pandasql DQL के अलावा SQL के किसी अन्य सबसेट का उपयोग करने की अनुमति नहीं देता। इसका मतलब है कि हम pandasql का उपयोग करके तालिकाओं को संशोधित (update, truncate, insert, आदि) नहीं कर सकते या तालिका के डेटा को बदल (update, delete, insert) नहीं सकते।

इसके अलावा, चूंकि यह लाइब्रेरी SQL सिंटैक्स पर आधारित है, हमें SQLite की जानी-मानी विशेषताओं से सावधान रहना चाहिए।

pandasql का उपयोग: उदाहरण

अब, हम pandasql के sqldf() फ़ंक्शन का उपयोग करके pandas dataframes पर SQL क्वेरी कैसे चलाएं, इसे और बारीकी से देखेंगे। अभ्यास के लिए कुछ डेटा पाने हेतु, चलिए seaborn लाइब्रेरी के बिल्ट-इन डेटासेट्स में से एक—penguins—लोड करते हैं:

import seaborn as sns
penguins = sns.load_dataset('penguins')
print(penguins.head())

आउटपुट:

   species island     bill_length_mm  bill_depth_mm  flipper_length_mm  \
0  Adelie  Torgersen            39.1           18.7              181.0   
1  Adelie  Torgersen            39.5           17.4              186.0   
2  Adelie  Torgersen            40.3           18.0              195.0   
3  Adelie  Torgersen             NaN            NaN                NaN   
4  Adelie  Torgersen            36.7           19.3              193.0   

   body_mass_g     sex  
0       3750.0    Male  
1       3800.0  Female  
2       3250.0  Female  
3          NaN     NaN  
4       3450.0  Female

यदि आपको अपने SQL कौशल को ताज़ा करने की ज़रूरत है, तो हमारा SQL Fundamentals स्किल ट्रैक एक अच्छा संदर्भ बिंदु है।

pandasql से डेटा निकालना

print(sqldf('''SELECT species, island 
FROM penguins 
LIMIT 5'''))

आउटपुट:

  species  island
0  Adelie  Torgersen
1  Adelie  Torgersen
2  Adelie  Torgersen
3  Adelie  Torgersen
4  Adelie  Torgersen

ऊपर, हमने penguins dataframe से पहले पाँच पेंगुइनों की प्रजाति और भौगोलिक जानकारी निकाली। ध्यान दें कि sqldf() फ़ंक्शन चलाने पर एक pandas dataframe लौटता है:

print(type(sqldf('''SELECT species, island 
                      FROM penguins 
                     LIMIT 5''')))

आउटपुट:

<class 'pandas.core.frame.DataFrame'>

शुद्ध pandas में, यह होगा:

print(penguins[['species', 'island']].head())

आउटपुट:

   species island
0  Adelie  Torgersen
1  Adelie  Torgersen
2  Adelie  Torgersen
3  Adelie  Torgersen
4  Adelie  Torgersen

एक और उदाहरण है किसी कॉलम से अद्वितीय मान निकालना:

print(sqldf('''SELECT DISTINCT species 
                 FROM penguins'''))

आउटपुट:

     species
0     Adelie
1  Chinstrap
2     Gentoo

pandas में, यह होगा:

print(penguins['species'].unique())

आउटपुट:

['Adelie' 'Chinstrap' 'Gentoo']

pandasql से डेटा सॉर्ट करना

print(sqldf('''SELECT body_mass_g 
                 FROM penguins 
                ORDER BY body_mass_g DESC 
                LIMIT 5'''))

आउटपुट:

   body_mass_g
0       6300.0
1       6050.0
2       6000.0
3       6000.0
4       5950.0

ऊपर, हमने अपने पेंगुइनों को शरीर द्रव्यमान के आधार पर अवरोही क्रम में सॉर्ट किया और शीर्ष पाँच मान दिखाए।

pandas में, यह होगा:

print(penguins['body_mass_g'].sort_values(ascending=False, 
ignore_index=True).head())

आउटपुट:

0    6300.0
1    6050.0
2    6000.0
3    6000.0
4    5950.0
Name: body_mass_g, dtype: float64

pandasql से डेटा फ़िल्टर करना

आइए वही उदाहरण आज़माएं जिसका ज़िक्र हमने "pandas में SQL क्यों" अध्याय में किया था: उन पेंगुइनों की अद्वितीय प्रजातियाँ निकालना जो नर हैं और जिनके फ्लिपर 210 मिमी से लंबे हैं:

print(sqldf('''SELECT DISTINCT species
                 FROM penguins 
                WHERE sex = 'Male' 
                  AND flipper_length_mm > 210'''))

आउटपुट:

     species
0  Chinstrap
1     Gentoo

ऊपर, हमने दो शर्तों के आधार पर डेटा फ़िल्टर किया: sex = 'Male' और flipper_length_mm > 210।

pandas में यही कोड थोड़ा अधिक बोझिल लगेगा:

print(penguins[(penguins['sex'] == 'Male') & (penguins['flipper_length_mm'] > 210)]['species'].unique())

आउटपुट:

['Chinstrap' 'Gentoo']

pandasql से डेटा को समूहित और एग्रीगेट करना

अब, आइए समूहकरण और एग्रीगेशन लागू करके प्रत्येक प्रजाति के लिए सबसे लंबी चोंच खोजें:

print(sqldf('''SELECT species, MAX(bill_length_mm)
                 FROM penguins 
                GROUP BY species'''))

आउटपुट:

     species  MAX(bill_length_mm)
0     Adelie                 46.0
1  Chinstrap                 58.0
2     Gentoo                 59.6

pandas में वही कोड:

print(penguins[['species', 'bill_length_mm']].groupby('species', as_index=False).max())

आउटपुट:

     species  bill_length_mm
0     Adelie            46.0
1  Chinstrap            58.0
2     Gentoo            59.6

pandasql से गणितीय ऑपरेशन करना

pandasql के साथ, हम आसानी से डेटा पर गणितीय या तार्किक ऑपरेशन कर सकते हैं। मान लें कि हम प्रत्येक पेंगुइन के लिए चोंच की लंबाई-से-गहराई का अनुपात निकालना चाहते हैं और इस माप के शीर्ष पाँच मान दिखाना चाहते हैं:

print(sqldf('''SELECT bill_length_mm / bill_depth_mm AS length_to_depth
                 FROM penguins
                ORDER BY length_to_depth DESC
                LIMIT 5'''))

आउटपुट:

   length_to_depth
0         3.612676
1         3.510490
2         3.505882
3         3.492424
4         3.458599

ध्यान दें कि इस बार, हमने अनुपात मानों वाले कॉलम के लिए length_to_depth उपनाम का उपयोग किया। वरना हमें bill_length_mm / bill_depth_mm जैसा बेहद लंबा कॉलम नाम मिलता।

pandas में, हमें पहले अनुपात मानों वाला एक नया कॉलम बनाना होगा:

penguins['length_to_depth'] = penguins['bill_length_mm'] / penguins['bill_depth_mm']
print(penguins['length_to_depth'].sort_values(ascending=False, ignore_index=True).head())

आउटपुट:

0    3.612676
1    3.510490
2    3.505882
3    3.492424
4    3.458599
Name: length_to_depth, dtype: float64

निष्कर्ष

समापन के लिए, इस ट्यूटोरियल में हमने देखा कि pandas के लिए SQL की कार्यक्षमता कब और क्यों जोड़कर बेहतर, अधिक कुशल कोड लिखा जा सकता है। हमने इस उद्देश्य के लिए pandasql लाइब्रेरी को कैसे सेट अप और उपयोग किया जाए, और इस पैकेज की क्या सीमाएँ हैं, इस पर चर्चा की। अंत में, हमने pandasql के कई लोकप्रिय व्यावहारिक उदाहरण देखे और हर मामले में कोड की तुलना उसके pandas समकक्ष से की।

अब आपके पास वास्तविक परियोजनाओं में pandas के लिए SQL लागू करने के लिए सब कुछ है। अभ्यास के लिए एक बेहतरीन जगह है DataLab, DataCamp की AI-सक्षम डेटा नोटबुक, जिसमें बेहतरीन SQL सपोर्ट है।

विषय
SQL
Python

अपनी कौशल-सीमा बढ़ाएं

कोर्स

SQL में Data Manipulation

4 घंटा
338.4K
जटिल SQL क्वेरियों में महारत हासिल करें, डेटा विज्ञान के विविध प्रश्नों के उत्तर दें और PostgreSQL में विश्लेषण के लिए मजबूत डेटा सेट तैयार करें।
विवरण देखेंपाठ्यक्रम शुरू करें

अपना निःशुल्क खाता बनाएँ

अभ्यास और ट्रैक अपनी प्रगति को।

Google के साथ जारी रखें
जारी रखने पर, आप हमारी उपयोग की शर्तें, हमारी गोपनीयता नीति को स्वीकार करते हैं और यह भी कि आपका डेटा संयुक्त राज्य अमेरिका में संग्रहीत किया जाता है।
और देखें