عندما بدأت في تعلم تحليل البيانات قبل بضع سنوات ، كان أول شيء تعلمته هو SQL و Pandas. كمحلل بيانات ، من الأهمية بمكان أن يكون لديك أساس قوي في العمل مع SQL و Pandas. كلاهما من الأدوات القوية التي تساعد محللي البيانات على تحليل البيانات المخزنة في قواعد البيانات ومعالجتها بكفاءة.
نظرة عامة على SQL و Pandas
SQL (لغة الاستعلام الهيكلية) هي لغة برمجة تستخدم لإدارة قواعد البيانات العلائقية ومعالجتها. من ناحية أخرى ، Pandas هي مكتبة Python تستخدم لمعالجة البيانات وتحليلها.
يتضمن تحليل البيانات العمل مع كميات كبيرة من البيانات ، وغالبًا ما تُستخدم قواعد البيانات لتخزين هذه البيانات. توفر SQL و Pandas أدوات قوية للعمل مع قواعد البيانات ، مما يسمح لمحللي البيانات باستخراج البيانات ومعالجتها وتحليلها بكفاءة. من خلال الاستفادة من هذه الأدوات ، يمكن لمحللي البيانات الحصول على رؤى قيمة من البيانات التي كان من الصعب الحصول عليها بخلاف ذلك.
في هذه المقالة ، سوف نستكشف كيفية استخدام SQL و Pandas لقراءة قاعدة بيانات والكتابة فيها.
الاتصال بقاعدة البيانات
تركيب المكتبات
يجب علينا أولاً تثبيت المكتبات الضرورية قبل أن نتمكن من الاتصال بقاعدة بيانات SQL باستخدام Pandas. المكتبتان الرئيسيتان المطلوبتان هما Pandas و SQLAlchemy. Pandas هي مكتبة شائعة لمعالجة البيانات تسمح بتخزين هياكل البيانات الكبيرة ، كما هو مذكور في المقدمة. في المقابل ، يوفر SQLAlchemy واجهة برمجة تطبيقات للاتصال والتفاعل مع قاعدة بيانات SQL.
يمكننا تثبيت كلتا المكتبتين باستخدام مدير حزمة Python ، pip ، عن طريق تشغيل الأوامر التالية في موجه الأوامر.
$ pip install pandas
$ pip install sqlalchemy
إجراء الاتصال
بعد تثبيت المكتبات ، يمكننا الآن استخدام Pandas للاتصال بقاعدة بيانات SQL.
للبدء ، سننشئ كائن محرك SQLAlchemy باستخدام create_engine()
. create_engine()
وظيفة تربط كود Python بقاعدة البيانات. يأخذ كوسيطة سلسلة اتصال تحدد نوع قاعدة البيانات وتفاصيل الاتصال. في هذا المثال ، سنستخدم نوع قاعدة بيانات SQLite ومسار ملف قاعدة البيانات.
قم بإنشاء كائن محرك لقاعدة بيانات SQLite باستخدام المثال أدناه:
import pandas as pd
from sqlalchemy import create_engine engine = create_engine('sqlite:///C/SQLite/student.db')
إذا كان ملف قاعدة بيانات SQLite ، student.db في حالتنا ، في نفس الدليل مثل نص Python ، فيمكننا استخدام اسم الملف مباشرةً ، كما هو موضح أدناه.
engine = create_engine('sqlite:///student.db')
قراءة ملفات SQL مع Pandas
دعنا نقرأ البيانات الآن بعد أن أنشأنا اتصالاً. في هذا القسم ، سوف ننظر في read_sql
, read_sql_table
و read_sql_query
الدالات وكيفية استخدامها للعمل مع قاعدة البيانات.
تنفيذ استعلامات SQL باستخدام Panda read_sql () المسمى الوظيفي
• read_sql()
هي إحدى وظائف مكتبة Pandas التي تتيح لنا تنفيذ استعلام SQL واسترداد النتائج في إطار بيانات Pandas. ال read_sql()
تعمل الوظيفة على ربط SQL و Python ، مما يسمح لنا بالاستفادة من قوة كلتا اللغتين. تلتف الوظيفة read_sql_table()
و read_sql_query()
. read_sql()
يتم توجيه الوظيفة داخليًا بناءً على الإدخال المقدم ، مما يعني أنه إذا كان الإدخال لتنفيذ استعلام SQL ، فسيتم توجيهه إلى read_sql_query()
، وإذا كان جدول قاعدة بيانات ، فسيتم توجيهه إلى read_sql_table()
.
• 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
: تحدد هذه المعلمة ما إذا كان يجب تحويل القيم غير الرقمية إلى أرقام عائمة أو تركها كسلاسل. تم تعيينه على صحيح بشكل افتراضي. إذا كان ذلك ممكنًا ، فإنه يحول القيم غير الرقمية إلى أنواع عائمة.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
. يتم تحويل عمود "رقم الملف" إلى فهرس باستخدام index_col
المعلمة ، ونوع البيانات "dateOfBirth" هو "datetime64 [ns]" بسبب parse_dates
. يمكننا ان نستخدم read_sql()
ليس فقط لاسترداد البيانات ولكن أيضًا لإجراء عمليات أخرى مثل الإدراج والحذف والتحديث. read_sql()
هي وظيفة عامة.
تحميل جداول معينة أو طرق عرض من قاعدة البيانات
تحميل جدول معين أو عرض مع الباندا read_sql_table()
هي تقنية أخرى لقراءة البيانات من قاعدة البيانات إلى إطار بيانات Pandas.
ما هي تفاصيل read_sql_table?
توفر مكتبة Pandas ملفات 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
الجدول في Pandas 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 ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling 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 سجلات فقط في الجدول الخاص بي.
الاستعلام عن قاعدة البيانات مباشرة باستخدام بناء جملة SQL من Pandas
يعد استخراج الرؤى من قاعدة البيانات جزءًا مهمًا لمحللي البيانات والعلماء. للقيام بذلك ، سوف نستفيد من 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 مع Pandas
أثناء تحليل البيانات ، افترض أننا اكتشفنا أن بعض الإدخالات بحاجة إلى تعديل أو أن جدولًا جديدًا أو عرضًا جديدًا بالبيانات مطلوب. لتحديث أو إدراج سجل جديد ، هناك طريقة واحدة لاستخدام read_sql()
وكتابة استعلام. ومع ذلك ، يمكن أن تكون هذه الطريقة طويلة. توفر الباندا طريقة رائعة تسمى to_sql()
لمواقف مثل هذه.
في هذا القسم ، سنقوم أولاً ببناء جدول جديد في قاعدة البيانات ثم تحرير أحد الجداول الموجودة.
إنشاء جدول جديد في قاعدة بيانات SQL
قبل إنشاء جدول جديد ، دعنا نناقش أولاً to_sql()
بالتفصيل.
ما هي تفاصيل to_sql ()?
• 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
: القيمة الافتراضية لهذه المعلمة هي "فشل". تسمح لنا هذه المعلمة بتحديد الإجراء الذي يجب اتخاذه إذا كان الجدول موجودًا بالفعل. تشمل الخيارات "فشل" و "استبدال" و "إلحاق".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()
يتم إنشاء جدول جديد يسمى "العميل" في قاعدة البيانات ، مع حقلين يسمى "الاسم" و "العمر".
لقطة قاعدة البيانات:
تحديث الجداول الموجودة مع Pandas Dataframes
يعد تحديث البيانات في قاعدة البيانات مهمة معقدة ، خاصة عند التعامل مع البيانات الكبيرة. ومع ذلك ، فإن استخدام ملف to_sql()
وظيفة في Pandas يمكن أن تجعل هذه المهمة أسهل بكثير. لتحديث الجدول الموجود في قاعدة البيانات ، فإن ملف to_sql()
يمكن استخدام الوظيفة مع if_exists
تم تعيين المعلمة على "استبدال". سيؤدي هذا إلى الكتابة فوق الجدول الموجود بالبيانات الجديدة.
هنا مثال على 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()
تم تحديث عمر بول في قاعدة البيانات:
وفي الختام
في الختام ، يعد كل من Pandas و SQL أدوات قوية لمهام تحليل البيانات مثل قراءة البيانات وكتابتها في قاعدة بيانات SQL. يوفر Pandas طريقة سهلة للاتصال بقاعدة بيانات SQL ، وقراءة البيانات من قاعدة البيانات في إطار بيانات Pandas ، وإعادة كتابة بيانات إطار البيانات إلى قاعدة البيانات.
تسهل مكتبة Pandas معالجة البيانات في إطار البيانات ، بينما توفر SQL لغة قوية للاستعلام عن البيانات في قاعدة البيانات. يمكن أن يؤدي استخدام كل من Pandas و SQL لقراءة البيانات وكتابتها إلى توفير الوقت والجهد في مهام تحليل البيانات ، خاصةً عندما تكون البيانات كبيرة جدًا. بشكل عام ، يمكن أن تساعد الاستفادة من SQL و Pandas معًا محللي البيانات والعلماء في تبسيط سير عملهم.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- أفلاطونايستريم. ذكاء بيانات Web3. تضخيم المعرفة. الوصول هنا.
- سك المستقبل مع أدرين أشلي. الوصول هنا.
- شراء وبيع الأسهم في شركات ما قبل الاكتتاب مع 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
- اثنان
- ديناميكي
- كل
- أسهل
- سهل
- فعال
- بكفاءة
- جهد
- إما
- البريد الإلكتروني
- محرك
- تعزيز
- كامل
- خاصة
- أنشئ
- مثال
- تنفيذ
- تنفيذ
- القائمة
- موجود
- شرح
- اكتشف
- استخراج
- يفشلون
- قليل
- مجال
- قم بتقديم
- ملفات
- الاسم الأول
- مرونة
- تطفو
- يطفو على السطح
- تركز
- متابعيك
- متابعات
- في حالة
- شكل
- دورة تأسيسية
- FRAME
- تبدأ من
- وظيفة
- وظائف
- ربح
- دولار فقط واحصل على خصم XNUMX% على جميع
- بوابة
- معطى
- عظيم
- توجيه
- يد
- تشابك الايدى
- يملك
- مساعدة
- هنا
- تحوم
- كيفية
- كيفية
- لكن
- HTTPS
- i
- if
- أهمية
- in
- تتضمن
- شامل
- مؤشر
- إدخال
- رؤى
- تثبيت
- تثبيت
- التفاعل
- داخليا
- إلى
- المُقدّمة
- قضية
- IT
- احتفظ
- القفل
- مفاتيح
- تُشير
- لغة
- اللغات
- كبير
- تعلم
- تعلم
- اليسار
- اسمحوا
- الرافعة المالية
- الاستفادة من
- LG
- المكتبات
- المكتبة
- مثل
- قائمة
- ll
- تحميل
- بحث
- الرئيسية
- جعل
- يصنع
- إدارة
- مدير
- إلزامي
- تلاعب
- علامة
- معنى
- يعني
- المذكورة
- طريقة
- مانع
- تم التعديل
- تعديل
- الأكثر من ذلك
- أكثر
- كثيرا
- متعدد
- يجب
- my
- الاسم
- عين
- أسماء
- ضروري
- حاجة
- جديد
- الآن
- عدد
- أرقام
- موضوع
- تحصل
- of
- غالبا
- on
- ONE
- فقط
- عمليات
- مزيد من الخيارات
- or
- أخرى
- وإلا
- لنا
- خارج
- الناتج
- الكلي
- صفقة
- الباندا
- المعلمة
- المعلمات
- جزء
- خاصة
- pass
- مرور
- مسار
- بول
- نفذ
- أداء
- بيتر
- أفلاطون
- الذكاء افلاطون البيانات
- أفلاطون داتا
- الرائج
- ممكن
- قوة
- قوي
- عملية
- سابقا
- برمجة وتطوير
- محمي
- تزود
- المقدمة
- ويوفر
- بايثون
- الاستفسارات
- عرض
- نادي القراءة
- سجل
- تسجيل
- يحل محل
- مطلوب
- REST
- نتيجة
- مما أدى
- النتائج
- عائد أعلى
- عائدات
- حلقة
- لفة
- صف
- يجري
- تشغيل
- s
- نفسه
- حفظ
- العلماء
- القسم
- تأمين
- مختار
- طقم
- شادو
- ورقة
- ينبغي
- أظهرت
- عزباء
- حالات
- الأصغر
- لقطة
- So
- محدد
- على وجه التحديد
- ستاكابوز
- المعايير
- بدأت
- البيانات
- قلة النوم
- تخزين
- متجر
- تخزين
- فروعنا
- تبسيط
- خيط
- قوي
- منظم
- طالب
- هذه
- الدعم
- بناء الجملة
- جدول
- أخذ
- اتخذت
- يأخذ
- مهمة
- المهام
- أن
- •
- من مشاركة
- منهم
- then
- هناك.
- تشبه
- شيء
- الوقت
- إلى
- سويا
- أدوات
- انتقال
- صحيح
- اثنان
- نوع
- أنواع
- تحديث
- تحديث
- آخر التحديثات
- us
- تستخدم
- مستعمل
- استخدام
- القيمة
- قيمنا
- القيم
- Ve
- جدا
- المزيد
- الرؤى
- تريد
- وكان
- طريق..
- we
- متى
- سواء
- التي
- سوف
- مع
- بدون
- للعمل
- سير العمل
- عامل
- سوف
- اكتب
- جاري الكتابة
- مكتوب
- سنوات
- زفيرنت