ما می توانیم برای تحلیل داده ها به پایگاه های داده رابطه ای متصل شویم. این کار را با استفاده از کتابخانه pandas و یک کتابخانه دیگر برای برقراری اتصال به پایگاه داده انجام می دهیم. این کتابخانه sqlalchemy نام دارد و تمام قابلیت های زبان SQL را در پایتون فراهم می کند.
نصب SQLAlchemy
نصب این کتابخانه با استفاده از Anaconda بسیار ساده است. در فصل «محیط علم داده» این موضوع توضیح داده شده است. اگر Anaconda را طبق توضیحات آن فصل نصب کرده اید، برای نصب کتابخانه SQLAlchemy دستور زیر را در پنجره Anaconda Prompt اجرا کنید:
1 |
conda install sqlalchemy |
خواندن جداول رابطه ای
در این آموزش از پایگاه داده Sqlite3 استفاده می کنیم، چون سبک و ساده است. البته کتابخانه SQLAlchemy می تواند به منابع رابطه ای مختلفی مانند MySQL، Oracle، PostgreSQL و MSSQL نیز متصل شود. ابتدا یک موتور پایگاه داده (database engine) ایجاد می کنیم و سپس با استفاده از تابع to_sql
داده ها را به پایگاه داده منتقل می کنیم.
در مثال زیر، یک جدول رابطه ای را از طریق تابع to_sql
و با استفاده از دیتافریمی که قبلا از یک فایل CSV خوانده شده، ایجاد می کنیم. سپس با تابع read_sql_query
از pandas، چند کوئری SQL را اجرا و نتایج آن را دریافت می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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) |
خروجی اجرای کد بالا:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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
موجود در pandas داده ها را به جداول رابطه ای اضافه کنیم. در مثال زیر همان فایل CSV را به عنوان ورودی می خوانیم، آن را به جدول رابطه ای منتقل می کنیم و سپس یک رکورد جدید درج می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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) |
خروجی اجرای کد بالا:
1 2 3 4 5 6 7 8 9 10 |
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
داده ها را از جداول رابطه ای حذف کنیم. در کد زیر، یک ردیف بر اساس شرط مشخص حذف می شود:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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) |
خروجی اجرای کد بالا:
1 2 3 4 5 6 7 8 |
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 |
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۱۸ مرداد ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره آموزش Go
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس