पायथन - संबंधपरक डेटाबेस
हम डेटा का विश्लेषण करने के लिए संबंधपरक डेटाबेस से जुड़ सकते हैं pandasपुस्तकालय और साथ ही डेटाबेस कनेक्टिविटी को लागू करने के लिए एक और अतिरिक्त पुस्तकालय। इस पैकेज को नाम दिया गया हैsqlalchemy जो अजगर में इस्तेमाल होने के लिए पूर्ण SQL भाषा कार्यक्षमता प्रदान करता है।
SQLAlchemy स्थापित कर रहा है
एनाकोंडा का उपयोग करके इंस्टॉलेशन बहुत सीधा है जो हमने अध्याय डेटा विज्ञान पर्यावरण में चर्चा की है । मान लें कि आपने इस अध्याय में वर्णित एनाकोंडा को स्थापित किया है, SQLAlchemy पैकेज को स्थापित करने के लिए एनाकोंडा प्रॉम्प्ट विंडो में निम्न कमांड चलाएँ।
conda install sqlalchemy
रिलेशनल टेबल्स पढ़ना
हम अपने रिलेशनल डेटाबेस के रूप में Sqlite3 का उपयोग करेंगे क्योंकि यह बहुत हल्का वजन और उपयोग करने में आसान है। हालांकि SQLAlchemy लाइब्रेरी MySql, Oracle और Postgresql और Mssql सहित कई प्रकार के संबंधपरक स्रोतों से जुड़ सकती है। हम पहले एक डेटाबेस इंजन बनाते हैं और फिर डेटाबेस इंजन से कनेक्ट करते हैंto_sql SQLAlchemy लाइब्रेरी का कार्य।
नीचे दिए गए उदाहरण में हम रिलेशनल टेबल बनाते हैं to_sqlसीएसवी फ़ाइल पढ़कर पहले से बनाई गई डेटाफ्रेम से कार्य करना। तब हम उपयोग करते हैंread_sql_query विभिन्न SQL क्वेरी से परिणामों को निष्पादित और कैप्चर करने के लिए पांडा से कार्य करते हैं।
from sqlalchemy import create_engine
import pandas as pd
data = pd.read_csv('/path/input.csv')
# Create the db engine
engine = create_engine('sqlite:///:memory:')
# Store the dataframe as a table
data.to_sql('data_table', engine)
# Query 1 on the relational table
res1 = pd.read_sql_query('SELECT * FROM data_table', engine)
print('Result 1')
print(res1)
print('')
# Query 2 on the relational table
res2 = pd.read_sql_query('SELECT dept,sum(salary) FROM data_table group by dept', engine)
print('Result 2')
print(res2)
जब हम उपरोक्त कोड निष्पादित करते हैं, तो यह निम्नलिखित परिणाम उत्पन्न करता है।
Result 1
index id name salary start_date dept
0 0 1 Rick 623.30 2012-01-01 IT
1 1 2 Dan 515.20 2013-09-23 Operations
2 2 3 Tusar 611.00 2014-11-15 IT
3 3 4 Ryan 729.00 2014-05-11 HR
4 4 5 Gary 843.25 2015-03-27 Finance
5 5 6 Rasmi 578.00 2013-05-21 IT
6 6 7 Pranab 632.80 2013-07-30 Operations
7 7 8 Guru 722.50 2014-06-17 Finance
Result 2
dept sum(salary)
0 Finance 1565.75
1 HR 729.00
2 IT 1812.30
3 Operations 1148.00
संबंधपरक तालिकाओं में डेटा सम्मिलित करना
हम पांडा में उपलब्ध sql.execute फ़ंक्शन का उपयोग करके रिलेशनल टेबल में डेटा भी डाल सकते हैं। नीचे दिए गए कोड में हमने इनपुट डेटा सेट के रूप में पिछली सीएसवी फाइल को रिलेशनल टेबल में स्टोर किया और फिर sql.exitute का उपयोग कर एक और रिकॉर्ड डाला।
from sqlalchemy import create_engine
from pandas.io import sql
import pandas as pd
data = pd.read_csv('C:/Users/Rasmi/Documents/pydatasci/input.csv')
engine = create_engine('sqlite:///:memory:')
# Store the Data in a relational table
data.to_sql('data_table', engine)
# Insert another row
sql.execute('INSERT INTO data_table VALUES(?,?,?,?,?,?)', engine, params=[('id',9,'Ruby',711.20,'2015-03-27','IT')])
# Read from the relational table
res = pd.read_sql_query('SELECT ID,Dept,Name,Salary,start_date FROM data_table', engine)
print(res)
जब हम उपरोक्त कोड निष्पादित करते हैं, तो यह निम्नलिखित परिणाम उत्पन्न करता है।
id dept name salary start_date
0 1 IT Rick 623.30 2012-01-01
1 2 Operations Dan 515.20 2013-09-23
2 3 IT Tusar 611.00 2014-11-15
3 4 HR Ryan 729.00 2014-05-11
4 5 Finance Gary 843.25 2015-03-27
5 6 IT Rasmi 578.00 2013-05-21
6 7 Operations Pranab 632.80 2013-07-30
7 8 Finance Guru 722.50 2014-06-17
8 9 IT Ruby 711.20 2015-03-27
रिलेशनल टेबल्स से डेटा हटाना
हम पांडा में उपलब्ध sql.execute फ़ंक्शन का उपयोग करके डेटा को रिलेशनल टेबल में भी हटा सकते हैं। नीचे दिया गया कोड दी गई इनपुट स्थिति के आधार पर एक पंक्ति को हटा देता है।
from sqlalchemy import create_engine
from pandas.io import sql
import pandas as pd
data = pd.read_csv('C:/Users/Rasmi/Documents/pydatasci/input.csv')
engine = create_engine('sqlite:///:memory:')
data.to_sql('data_table', engine)
sql.execute('Delete from data_table where name = (?) ', engine, params=[('Gary')])
res = pd.read_sql_query('SELECT ID,Dept,Name,Salary,start_date FROM data_table', engine)
print(res)
जब हम उपरोक्त कोड निष्पादित करते हैं, तो यह निम्नलिखित परिणाम उत्पन्न करता है।
id dept name salary start_date
0 1 IT Rick 623.3 2012-01-01
1 2 Operations Dan 515.2 2013-09-23
2 3 IT Tusar 611.0 2014-11-15
3 4 HR Ryan 729.0 2014-05-11
4 6 IT Rasmi 578.0 2013-05-21
5 7 Operations Pranab 632.8 2013-07-30
6 8 Finance Guru 722.5 2014-06-17