وقتی چند سال پیش شروع به یادگیری تجزیه و تحلیل داده ها کردم، اولین چیزی که یاد گرفتم SQL و Pandas بود. به عنوان یک تحلیلگر داده، داشتن یک پایه قوی در کار با SQL و پانداها بسیار مهم است. هر دو ابزار قدرتمندی هستند که به تحلیلگران داده کمک میکنند تا دادههای ذخیرهشده در پایگاههای داده را بهطور کارآمد تحلیل و دستکاری کنند.
مروری بر SQL و پانداها
SQL (زبان پرس و جوی ساختاریافته) یک زبان برنامه نویسی است که برای مدیریت و دستکاری پایگاه داده های رابطه ای استفاده می شود. از سوی دیگر، پانداها یک کتابخانه پایتون است که برای دستکاری و تجزیه و تحلیل داده ها استفاده می شود.
تجزیه و تحلیل داده ها شامل کار با حجم زیادی از داده ها است و از پایگاه های داده اغلب برای ذخیره این داده ها استفاده می شود. SQL و Pandas ابزارهای قدرتمندی را برای کار با پایگاههای داده ارائه میکنند که به تحلیلگران داده اجازه میدهد تا به طور موثر دادهها را استخراج، دستکاری و تجزیه و تحلیل کنند. با استفاده از این ابزارها، تحلیلگران داده می توانند بینش های ارزشمندی از داده ها به دست آورند که در غیر این صورت به دست آوردن آنها دشوار خواهد بود.
در این مقاله، نحوه استفاده از SQL و Pandas برای خواندن و نوشتن در پایگاه داده را بررسی خواهیم کرد.
اتصال به DB
نصب کتابخانه ها
قبل از اینکه بتوانیم با پانداها به پایگاه داده SQL متصل شویم، ابتدا باید کتابخانه های لازم را نصب کنیم. دو کتابخانه اصلی مورد نیاز Pandas و SQLAlchemy هستند. Pandas یک کتابخانه دستکاری داده محبوب است که امکان ذخیره سازی ساختارهای داده بزرگ را فراهم می کند، همانطور که در مقدمه ذکر شد. در مقابل، SQLAlchemy یک API برای اتصال و تعامل با پایگاه داده SQL فراهم می کند.
ما می توانیم هر دو کتابخانه را با استفاده از مدیر بسته پایتون، pip، با اجرای دستورات زیر در خط فرمان نصب کنیم.
$ pip install pandas
$ pip install sqlalchemy
ایجاد اتصال
با نصب کتابخانه ها، اکنون می توانیم از پانداها برای اتصال به پایگاه داده SQL استفاده کنیم.
برای شروع، یک شی موتور SQLAlchemy را با آن ایجاد می کنیم create_engine()
. create_engine()
تابع کد پایتون را به پایگاه داده متصل می کند. به عنوان آرگومان یک رشته اتصال می گیرد که نوع پایگاه داده و جزئیات اتصال را مشخص می کند. در این مثال، از نوع پایگاه داده SQLite و مسیر فایل پایگاه داده استفاده می کنیم.
با استفاده از مثال زیر یک شی موتور برای پایگاه داده SQLite ایجاد کنید:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db')
اگر فایل پایگاه داده SQLite، student.db در مورد ما، در همان دایرکتوری اسکریپت پایتون باشد، میتوانیم از نام فایل مستقیماً مانند شکل زیر استفاده کنیم.
engine = create_engine('sqlite:///student.db')
خواندن فایل های SQL با پانداها
اکنون که اتصال برقرار کرده ایم، داده ها را بخوانیم. در این بخش به بررسی read_sql
, read_sql_table
و read_sql_query
توابع و نحوه استفاده از آنها برای کار با پایگاه داده.
اجرای پرس و جوهای SQL با استفاده از Panda read_sql() عملکرد
La read_sql()
یک تابع کتابخانه Pandas است که به ما امکان می دهد یک پرس و جوی SQL را اجرا کنیم و نتایج را در قالب داده Pandas بازیابی کنیم. را read_sql()
تابع SQL و Python را به هم متصل می کند و به ما امکان می دهد از قدرت هر دو زبان استفاده کنیم. تابع بسته می شود read_sql_table()
و read_sql_query()
. read_sql()
تابع به صورت داخلی بر اساس ورودی ارائه شده مسیریابی می شود، به این معنی که اگر ورودی قرار باشد پرس و جوی SQL را اجرا کند، به مسیریابی می شود. read_sql_query()
، و اگر یک جدول پایگاه داده باشد، به آن روت می شود read_sql_table()
.
La read_sql()
نحو به شرح زیر است:
pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
پارامترهای SQL و con مورد نیاز است. بقیه اختیاری هستند با این حال، ما می توانیم نتیجه را با استفاده از این پارامترهای اختیاری دستکاری کنیم. بیایید نگاهی دقیق تر به هر پارامتر بیندازیم.
sql
: پرس و جوی SQL یا نام جدول پایگاه دادهcon
: شیء اتصال یا URL اتصالindex_col
: این پارامتر به ما امکان می دهد از یک یا چند ستون از نتیجه پرس و جو SQL به عنوان شاخص قاب داده استفاده کنیم. می تواند یک ستون یا لیستی از ستون ها را بگیرد.coerce_float
: این پارامتر مشخص می کند که آیا مقادیر غیر عددی باید به اعداد شناور تبدیل شوند یا به عنوان رشته باقی بمانند. به طور پیش فرض روی true تنظیم شده است. در صورت امکان، مقادیر غیر عددی را به انواع شناور تبدیل می کند.params
: پارامترها یک روش امن برای ارسال مقادیر پویا به کوئری SQL ارائه می کنند. میتوانیم از پارامتر params برای ارسال یک فرهنگ لغت، تاپل یا فهرست استفاده کنیم. بسته به پایگاه داده، نحو پارامترها متفاوت است.parse_dates
: این به ما امکان می دهد مشخص کنیم کدام ستون در چارچوب داده به عنوان تاریخ تفسیر می شود. این یک ستون، فهرستی از ستونها یا فرهنگ لغت با کلید به عنوان نام ستون و مقدار به عنوان قالب ستون را میپذیرد.columns
: این به ما امکان می دهد فقط ستون های انتخاب شده را از لیست واکشی کنیم.chunksize
: هنگام کار با یک مجموعه داده بزرگ، اندازه کوچک مهم است. نتیجه پرس و جو را در تکه های کوچکتر بازیابی می کند و عملکرد را افزایش می دهد.
در اینجا مثالی از نحوه استفاده آورده شده است read_sql()
:
کد:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df = pd.read_sql("SELECT * FROM Student", engine, index_col='Roll Number', parse_dates='dateOfBirth')
print(df)
print("The Data type of dateOfBirth: ", df.dateOfBirth.dtype) engine.dispose()
خروجی:
firstName lastName email dateOfBirth
rollNumber
1 Mark Simson 2000-02-23
2 Peter Griffen 2001-04-15
3 Meg Aniston 2001-09-20
Date type of dateOfBirth: datetime64[ns]
پس از اتصال به پایگاه داده، یک کوئری اجرا می کنیم که تمام رکوردها را از روی برمی گرداند Student
جدول و آنها را در DataFrame ذخیره می کند df
. ستون "Roll Number" با استفاده از این به یک نمایه تبدیل می شود index_col
پارامتر، و نوع داده "dateOfBirth" "datetime64[ns]" است به دلیل parse_dates
. ما میتوانیم استفاده کنیم read_sql()
نه تنها برای بازیابی داده ها بلکه برای انجام عملیات های دیگر مانند درج، حذف و به روز رسانی. read_sql()
یک تابع عمومی است.
بارگیری جداول یا نماهای خاص از DB
بارگیری یک جدول یا نمای خاص با پانداها read_sql_table()
تکنیک دیگری برای خواندن داده ها از پایگاه داده در قالب داده پاندا است.
چه شده است read_sql_table?
کتابخانه پانداها را فراهم می کند read_sql_table
تابع، که به طور خاص طراحی شده است تا کل جدول SQL را بدون اجرای هیچ کوئری بخواند و نتیجه را به عنوان یک دیتافریم Pandas برگرداند.
نحو read_sql_table()
به شرح زیر است:
pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, parse_dates=None, columns=None, chunksize=None)
بجز table_name
و طرحواره، پارامترها به همان روش توضیح داده شده اند read_sql()
.
table_name
: پارامترtable_name
نام جدول SQL در پایگاه داده است.schema
: این پارامتر اختیاری نام طرحواره حاوی نام جدول است.
پس از ایجاد یک اتصال به پایگاه داده، از آن استفاده خواهیم کرد read_sql_table
تابع برای بارگذاری Student
جدول به یک DataFrame پانداها.
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df = pd.read_sql_table('Student', engine)
print(df.head()) engine.dispose()
خروجی:
rollNumber firstName lastName email dateOfBirth
0 1 Mark Simson 2000-02-23
1 2 Peter Griffen 2001-04-15
2 3 Meg Aniston 2001-09-20
ما فرض می کنیم میز بزرگی است که می تواند حافظه فشرده باشد. بیایید بررسی کنیم که چگونه می توانیم از آن استفاده کنیم chunksize
پارامتر برای رفع این مشکل
راهنمای عملی و عملی ما برای یادگیری Git را با بهترین روش ها، استانداردهای پذیرفته شده در صنعت و برگه تقلب شامل بررسی کنید. دستورات Google Git را متوقف کنید و در واقع یاد گرفتن آی تی!
کد:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df_iterator = pd.read_sql_table('Student', engine, chunksize = 1) for df in df_iterator: print(df.head()) engine.dispose()
خروجی:
rollNumber firstName lastName email dateOfBirth
0 1 Mark Simson 2000-02-23
0 2 Peter Griffen 2001-04-15
0 3 Meg Aniston 2001-09-20
لطفا در نظر داشته باشید که chunksize
من از اینجا 1 استفاده می کنم زیرا فقط 3 رکورد در جدول خود دارم.
پرس و جو مستقیماً از DB با سینتکس SQL پانداها
استخراج بینش از پایگاه داده بخش مهمی برای تحلیلگران و دانشمندان داده است. برای انجام این کار، ما از اهرم استفاده خواهیم کرد read_sql_query()
تابع.
read_sql_query() چیست؟
استفاده از پانداها read_sql_query()
تابع، ما می توانیم پرس و جوهای SQL را اجرا کنیم و نتایج را مستقیماً در یک DataFrame دریافت کنیم. را read_sql_query()
تابع به طور خاص برای SELECT
بیانیه. نمی توان از آن برای هیچ عملیات دیگری مانند DELETE
or UPDATE
.
نحو:
pandas.read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, chunksize=None, dtype=None, dtype_backend=_NoDefault.no_default)
تمام توضیحات پارامترها مشابه هستند read_sql()
تابع. در اینجا یک نمونه از read_sql_query()
:
کد:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df = pd.read_sql_query('Select firstName, lastName From Student Where rollNumber = 1', engine)
print(df) engine.dispose()
خروجی:
firstName lastName
0 Mark Simson
نوشتن فایل های SQL با پانداها
در حین تجزیه و تحلیل دادهها، فرض کنید متوجه شدیم که چند ورودی باید اصلاح شوند یا یک جدول یا نمای جدید با دادهها مورد نیاز است. برای به روز رسانی یا درج یک رکورد جدید، یک روش استفاده از آن است read_sql()
و یک پرس و جو بنویسید با این حال، این روش می تواند طولانی باشد. پانداها یک روش عالی به نام ارائه می دهند to_sql()
برای موقعیت هایی مانند این
در این قسمت ابتدا یک جدول جدید در پایگاه داده می سازیم و سپس یک جدول موجود را ویرایش می کنیم.
ایجاد یک جدول جدید در پایگاه داده SQL
قبل از ایجاد جدول جدید، اجازه دهید ابتدا بحث کنیم to_sql()
در جزئیات
چه شده است to_sql()?
La to_sql()
عملکرد کتابخانه Pandas به ما اجازه می دهد تا پایگاه داده را بنویسیم یا به روز کنیم. را to_sql()
تابع می تواند داده های DataFrame را در پایگاه داده SQL ذخیره کند.
نحو برای to_sql()
:
DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)
تنها name
و con
پارامترها برای اجرا اجباری هستند to_sql()
; با این حال، پارامترهای دیگر انعطاف پذیری و گزینه های سفارشی سازی اضافی را فراهم می کنند. بیایید هر پارامتر را به طور مفصل مورد بحث قرار دهیم:
name
: نام جدول SQL برای ایجاد یا تغییر.con
: هدف اتصال پایگاه داده.schema
: طرح واره جدول (اختیاری).if_exists
: مقدار پیش فرض این پارامتر “fail” است. این پارامتر به ما این امکان را می دهد که در صورت وجود جدول در مورد اقدامی که باید انجام شود تصمیم گیری کنیم. گزینهها عبارتند از «شکست»، «جایگزینی» و «پیوست».index
: پارامتر index یک مقدار بولی را می پذیرد. به طور پیش فرض روی True تنظیم شده است، به این معنی که فهرست DataFrame در جدول SQL نوشته می شود.index_label
: این پارامتر اختیاری به ما اجازه می دهد که یک برچسب ستون برای ستون های شاخص تعیین کنیم. بهطور پیشفرض، ایندکس روی جدول نوشته میشود، اما با استفاده از این پارامتر میتوان یک نام خاص داد.chunksize
: تعداد ردیف هایی که باید در یک زمان در پایگاه داده SQL نوشته شوند.dtype
: این پارامتر یک فرهنگ لغت با کلیدها را به عنوان نام ستون و مقادیر را به عنوان نوع داده آنها می پذیرد.method
: پارامتر متد اجازه می دهد تا روش مورد استفاده برای درج داده ها در SQL را مشخص کنید. به طور پیش فرض روی None تنظیم شده است، به این معنی که پانداها کارآمدترین راه را بر اساس پایگاه داده پیدا خواهند کرد. دو گزینه اصلی برای پارامترهای روش وجود دارد:multi
: اجازه درج چند ردیف در یک پرس و جو SQL را می دهد. با این حال، همه پایگاههای داده از درج چند ردیفی پشتیبانی نمیکنند.- تابع قابل فراخوانی: در اینجا می توانیم یک تابع سفارشی برای درج بنویسیم و با استفاده از پارامترهای متد آن را فراخوانی کنیم.
در اینجا یک مثال با استفاده از to_sql()
:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') data = {'Name': ['Paul', 'Tom', 'Jerry'], 'Age': [9, 8, 7]}
df = pd.DataFrame(data) df.to_sql('Customer', con=engine, if_exists='fail') engine.dispose()
یک جدول جدید به نام مشتری در پایگاه داده ایجاد می شود که دارای دو فیلد به نام های "Name" و "Age" است.
عکس فوری پایگاه داده:
به روز رسانی جداول موجود با فریم های داده پاندا
به روز رسانی داده ها در یک پایگاه داده یک کار پیچیده است، به ویژه هنگامی که با داده های بزرگ سروکار داریم. با این حال، با استفاده از to_sql()
عملکرد در پانداها می تواند این کار را بسیار آسان تر کند. برای به روز رسانی جدول موجود در پایگاه داده، to_sql()
تابع را می توان با استفاده کرد if_exists
پارامتر روی "replace" تنظیم شده است. با این کار جدول موجود با داده های جدید بازنویسی می شود.
در اینجا مثالی از to_sql()
که قبلا ایجاد شده را به روز می کند Customer
جدول. فرض کنید، در Customer
جدول ما می خواهیم سن مشتری به نام Paul را از 9 به 10 به روز کنیم. برای این کار، ابتدا می توانیم ردیف مربوطه را در DataFrame تغییر دهیم و سپس از to_sql()
عملکرد به روز رسانی پایگاه داده
کد:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db') df = pd.read_sql_table('Customer', engine) df.loc[df['Name'] == 'Paul', 'Age'] = 10 df.to_sql('Customer', con=engine, if_exists='replace') engine.dispose()
در پایگاه داده، سن پل به روز می شود:
نتیجه
در پایان، پانداها و SQL هر دو ابزار قدرتمندی برای کارهای تجزیه و تحلیل داده ها مانند خواندن و نوشتن داده ها در پایگاه داده SQL هستند. Pandas یک راه آسان برای اتصال به پایگاه داده SQL، خواندن داده ها از پایگاه داده در قالب داده Pandas، و نوشتن داده های فریم داده به پایگاه داده ارائه می دهد.
کتابخانه Pandas دستکاری داده ها را در یک دیتافریم آسان می کند، در حالی که SQL یک زبان قدرتمند برای جستجوی داده ها در پایگاه داده ارائه می دهد. استفاده از هر دو پاندا و SQL برای خواندن و نوشتن داده ها می تواند باعث صرفه جویی در زمان و تلاش در کارهای تجزیه و تحلیل داده ها شود، به خصوص زمانی که داده ها بسیار بزرگ هستند. به طور کلی، استفاده از SQL و پانداها با هم می تواند به تحلیلگران داده و دانشمندان کمک کند تا گردش کار خود را ساده کنند.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoAiStream. Web3 Data Intelligence دانش تقویت شده دسترسی به اینجا.
- ضرب کردن آینده با آدرین اشلی. دسترسی به اینجا.
- خرید و فروش سهام در شرکت های PRE-IPO با PREIPO®. دسترسی به اینجا.
- منبع: https://stackabuse.com/reading-and-writing-sql-files-in-pandas/
- :است
- :نه
- :جایی که
- 1
- 10
- 12
- 20
- 8
- 9
- a
- قبول می کند
- عمل
- واقعا
- اضافی
- نشانی
- مزیت - فایده - سود - منفعت
- سن
- پیش
- معرفی
- اجازه دادن
- اجازه می دهد تا
- قبلا
- همچنین
- تغییر
- مقدار
- an
- تحلیل
- روانکاو
- تحلیلگران
- تحلیل
- تجزیه و تحلیل
- و
- دیگر
- هر
- API
- هستند
- استدلال
- مقاله
- AS
- At
- به عقب
- مستقر
- بر هم زدن
- BE
- زیرا
- قبل از
- شروع
- در زیر
- مرز
- هر دو
- ساختن
- اما
- by
- صدا
- نام
- CAN
- نمی توان
- مورد
- نزدیک
- رمز
- ستون
- ستون ها
- پیچیده
- نتیجه
- اتصال
- اتصال
- ارتباط
- متصل
- کنتراست
- مبدل
- متناظر
- ایجاد
- ایجاد شده
- ایجاد
- بسیار سخت
- سفارشی
- مشتری
- سفارشی سازی
- داده ها
- تحلیل داده ها
- مجموعه داده ها
- پایگاه داده
- پایگاه های داده
- تاریخ
- معامله
- تصمیم گیری
- به طور پیش فرض
- بستگی دارد
- طراحی
- جزئیات
- جزئیات
- مشکل
- مستقیما
- کشف
- بحث و تبادل نظر
- do
- دو
- پویا
- هر
- آسان تر
- ساده
- موثر
- موثر
- تلاش
- هر دو
- پست الکترونیک
- موتور
- افزایش
- تمام
- به خصوص
- تاسیس
- مثال
- اجرا کردن
- اجرا کردن
- موجود
- وجود دارد
- توضیح داده شده
- اکتشاف
- عصاره
- FAIL
- کمی از
- زمینه
- پرونده
- فایل ها
- پیدا کردن
- نام خانوادگی
- انعطاف پذیری
- شناور
- شناور
- تمرکز
- پیروی
- به دنبال آن است
- برای
- قالب
- پایه
- FRAME
- از جانب
- تابع
- توابع
- افزایش
- دریافت کنید
- رفتن
- داده
- بزرگ
- راهنمایی
- دست
- دست
- آیا
- کمک
- اینجا کلیک نمایید
- در تردید بودن
- چگونه
- چگونه
- اما
- HTTPS
- i
- if
- مهم
- in
- شامل
- مشمول
- شاخص
- ورودی
- بینش
- نصب
- نصب شده
- تعامل
- داخلی
- به
- معرفی
- موضوع
- IT
- نگاه داشتن
- کلید
- کلید
- برچسب
- زبان
- زبان ها
- بزرگ
- آموخته
- یادگیری
- ترک کرد
- اجازه
- قدرت نفوذ
- بهره برداری
- LG
- کتابخانه ها
- کتابخانه
- پسندیدن
- فهرست
- ll
- بار
- نگاه کنيد
- اصلی
- ساخت
- باعث می شود
- مدیریت
- مدیر
- اجباری
- دست کاری
- علامت
- معنی
- به معنی
- ذکر شده
- روش
- ذهن
- اصلاح شده
- تغییر
- بیش
- اکثر
- بسیار
- چندگانه
- باید
- my
- نام
- تحت عنوان
- نام
- لازم
- نیاز
- جدید
- اکنون
- عدد
- تعداد
- هدف
- گرفتن
- of
- غالبا
- on
- ONE
- فقط
- عملیات
- گزینه
- or
- دیگر
- در غیر این صورت
- ما
- خارج
- تولید
- به طور کلی
- بسته
- پانداها
- پارامتر
- پارامترهای
- بخش
- ویژه
- عبور
- عبور
- مسیر
- پل
- انجام
- کارایی
- از پا افتادن
- افلاطون
- هوش داده افلاطون
- PlatoData
- محبوب
- ممکن
- قدرت
- قوی
- عملی
- قبلا
- برنامه نويسي
- محفوظ
- ارائه
- ارائه
- فراهم می کند
- پــایتــون
- نمایش ها
- خواندن
- مطالعه
- رکورد
- سوابق
- جایگزین کردن
- ضروری
- REST
- نتیجه
- نتیجه
- نتایج
- برگشت
- بازده
- حلقه
- نورد
- ROW
- دویدن
- در حال اجرا
- s
- همان
- ذخیره
- دانشمندان
- بخش
- امن
- انتخاب شد
- تنظیم
- سایه
- ورق
- باید
- نشان داده شده
- تنها
- شرایط
- کوچکتر
- عکس فوری
- So
- خاص
- به طور خاص
- Stackabuse
- استانداردهای
- آغاز شده
- اظهارات
- توقف
- ذخیره سازی
- opbevare
- ذخیره شده
- پرده
- ساده کردن
- رشته
- قوی
- ساخت یافته
- دانشجو
- چنین
- پشتیبانی
- نحو
- جدول
- گرفتن
- صورت گرفته
- طول می کشد
- کار
- وظایف
- که
- La
- شان
- آنها
- سپس
- آنجا.
- اینها
- چیز
- این
- زمان
- به
- با هم
- ابزار
- انتقال
- درست
- دو
- نوع
- انواع
- بروزرسانی
- به روز شده
- به روز رسانی
- us
- استفاده کنید
- استفاده
- با استفاده از
- ارزشمند
- ارزش
- ارزشها
- Ve
- بسیار
- چشم انداز
- نمایش ها
- می خواهم
- بود
- مسیر..
- we
- چه زمانی
- چه
- که
- اراده
- با
- بدون
- مهاجرت کاری
- گردش کار
- کارگر
- خواهد بود
- نوشتن
- نوشته
- کتبی
- سال
- زفیرنت