![]() |
| الجسر بين عالم SQL و DataFrames Pandas: ابدأ رحلتك في علم البيانات وتعلم كيفية تطبيق خبرتك في الاستعلامات على قوة معالجة بيانات الباندا. |
هل أنت مُحترف في SQL وتجد نفسك محاطًا بضجيج بايثون و Pandas؟ هل تتساءل كيف يمكنك استخدام خبرتك في الاستعلامات المعقدة وتطبيقها في عالم علم البيانات الحديث؟ أنت لست وحدك! الكثيرون منّا، بمن فيهم كاتب هذه السطور، بدأوا رحلتهم في تحليل البيانات من خلال قواعد البيانات.
لقد كانت SQL بمثابة "الحجر الأساس" لفهم هياكل البيانات، وربط الجداول، واستخلاص المعلومات القيمة. ولكن مع نمو حجم البيانات وتنوعها، ظهرت الحاجة لأدوات أكثر مرونة وقوة في معالجة البيانات السريعة والاستكشافية. هنا يأتي دور Pandas، المكتبة الذهبية في بايثون، التي تُقدم مفهوم إطارات البيانات (DataFrames).
هذا المقال هو دليلك المطلق للمبتدئين لتعلم Pandas DataFrames، ولكنه ليس مجرد شرح نظري آخر. بل هو جسر صُمم خصيصًا لك، محترف SQL، لنقل مهاراتك بشكل عملي ومباشر. سنقارن بين كيفية كتابة استعلاماتك المفضلة في SQL وكيفية إنجازها في Pandas، معززين ذلك بحالات استخدام واقعية (Case Studies) وأمثلة من العالم الحقيقي. استعد لتبدأ رحلتك نحو إتقان DataFrames لتصبح خبيرًا حقيقيًا في تحليل البيانات!
1) ما هي مكتبة Pandas ولماذا هي الأهم في علم البيانات؟ 🐼
Pandas هي مكتبة برمجية مفتوحة المصدر مكتوبة للغة بايثون، وتُستخدم بشكل أساسي في معالجة البيانات وتحليلها. اسمها مشتق من "Panel Data"، وهو مصطلح اقتصادي قياسي للبيانات متعددة الأبعاد.
(أ) لماذا تُعتبر Pandas ركيزة تحليل البيانات؟
Pandas👈 تحوّل بايثون من لغة برمجة عامة إلى بيئة قوية ومتخصصة في تحليل البيانات، وذلك لعدة أسباب:
- التعامل مع البيانات الضخمة (بشكل نسبي): يمكنها تحميل البيانات من مصادر مختلفة (CSV، Excel، SQL، JSON) ومعالجتها بكفاءة.
- المرونة وسهولة الاستخدام: توفر هياكل بيانات سهلة الفهم تمكنك من تنظيف البيانات وإعادة تشكيلها بسرعة فائقة.
- التكامل مع الأنظمة البيئية الأخرى: تعمل بسلاسة مع مكتبات بايثون الأخرى مثل 👈NumPy (للعمليات العددية) و Matplotlib👈 و Seaborn👈 (للتصور البياني).
(ب) الهيكل الأساسي لـ Pandas: السلاسل وإطارات البيانات (DataFrames)
Pandas مبنية على هيكلين أساسيين يجب على كل مبتدئ فهمهما:
1) السلسلة (Series):
- هي مصفوفة ذات بُعد واحد (كعمود واحد في جدول SQL).
- تحتوي على بيانات من نوع واحد (أرقام صحيحة، سلاسل نصية، إلخ).
- لكل عنصر فهرس (Index) مرتبط به، مثل مفتاح (Primary Key) غير فريد للتعريف.
2) إطار البيانات (DataFrame):
- هو الهيكل الأهم، ويُمثل جدولاً ثنائي الأبعاد (مثل جدول في قاعدة بيانات SQL أو ورقة عمل في Excel).
- يتكون من مجموعة من السلاسل (Series)، حيث تمثل كل سلسلة عمودًا.
- يحتوي على صفوف وأعمدة، مع فهرس مميز لكل صف وفهرس مميز لكل عمود (اسم العمود).
2) الخطوة الأولى: تثبيت Pandas وإنشاء أول DataFrame لك
الآن، لننطلق في الجانب العملي. إذا لم تكن قد فعلت ذلك بالفعل، يجب أن يكون لديك بايثون مثبتاً (يفضل استخدام توزيع Anaconda)، ومن ثم تثبيت مكتبة Pandas.
(أ) التثبيت والاستيراد (Installation and Import)
لتثبيت Pandas (إذا كنت تستخدم pip):
الخطوة القياسية الأولى في أي مشروع Pandas هي استيراد المكتبة، ويُفضل استخدام الاسم المستعار (Convention) pd:
(ب) إنشاء DataFrame من الصفر: جسر من هياكل بايثون الأساسية
الطريقة الأكثر شيوعًا للمبتدئين لإنشاء DataFrame هي استخدام قاموس (Dictionary) بايثون، حيث تكون المفاتيح هي أسماء الأعمدة والقيم هي قوائم (Lists) تمثل بيانات الصفوف.
لنفترض أنك تريد إنشاء جدول "بيانات الموظفين":
بيانات الموظفين
| ID | الاسم | القسم | الراتب |
|---|---|---|---|
| 101 | أحمد | مبيعات | 5000 |
| 102 | فاطمة | تسويق | 6200 |
| 103 | خالد | تقنية | 7500 |
✅ جدول منسق وجاهز للاستخدام في المواقع أو المستندات.
الكود في Pandas:
النتيجة:
تحدي للقارئ: جرّب أن تنشئ DataFrame خاصًا بك لبيانات مبيعات شهرية بسيطة (المنتج، العدد المباع، السعر).
3) المقارنة العملية: SQL مقابل Pandas - كيف تفعل ما تعرفه؟ 🔄
هذا هو القسم الجوهري في المقالة، وهو الجسر الذي تبحث عنه. سنقوم بتحويل استعلامات SQL الأساسية التي تعرفها وتستخدمها يوميًا إلى عمليات مكافئة في Pandas DataFrames. سنستخدم الجدول السابق df_موظفين.
(أ) استخلاص الأعمدة (SELECT Columns)
الهدف: عرض عمودي الاسم و الراتب فقط.
| وصف العملية | SQL Query | Pandas Code |
|---|---|---|
| استخراج الأعمدة | SELECT الاسم, الراتب FROM الموظفين; | df_موظفين[['الاسم', 'الراتب']] |
شرح Pandas: نستخدم قائمة بأسماء الأعمدة المراد استخراجها داخل الأقواس المربعة [] الخاصة بـ DataFrame.
(ب) تصفية الصفوف (WHERE Clause)
الهدف: عرض بيانات الموظفين الذين يزيد راتبهم عن 6000.
🧮 مقارنة بين SQL و Pandas لعمليات البيانات
| وصف العملية | SQL Query | Pandas Code |
|---|---|---|
| تصفية الصفوف | SELECT * FROM الموظفين WHERE الراتب > 6000; | df_موظفين[df_موظفين['الراتب'] > 6000] |
✅ تم التنسيق بنفس النمط الجمالي المعتمد في جداولك السابقة.
شرح Pandas: نستخدم تقنية تسمى الفهرسة المنطقية (Boolean Indexing). الجزء df_موظفين['الراتب'] > 6000 يُنشئ سلسلة من القيم True أو False، وDataFrame يستخدم هذه السلسلة لتحديد الصفوف التي يجب الاحتفاظ بها (حيث القيمة True).
(ج) التجميع والتحليل (GROUP BY and Aggregate Functions) - إحدى أقوى مهارات تحليل البيانات
الهدف: حساب متوسط الراتب لكل قسم.
التجميع والحساب SELECT القسم, AVG(الراتب) FROM الموظفين GROUP BY القسم; df_موظفين.groupby('القسم')['الراتب'].mean()
شرح Pandas: نستخدم دالة .groupby() لتجميع الصفوف بناءً على قيم العمود القسم، ثم نختار عمود الراتب ونُطبق عليه دالة التجميع .mean() (المتوسط).
(د) الترتيب (ORDER BY)
الهدف: ترتيب البيانات تنازليًا حسب الراتب.
| وصف العملية | SQL Query | Pandas Code |
|---|---|---|
| الترتيب | SELECT * FROM الموظفين ORDER BY الراتب DESC; | df_موظفين.sort_values(by='الراتب', ascending=False) |
شرح Pandas: نستخدم دالة .sort_values() ونُحدد اسم العمود المراد الترتيب وفقه، وتحديد ascending=False للترتيب التنازلي.
4) حالات استخدام واقعية (Case Studies): من النظرية إلى التطبيق العملي 📊
لا شيء يعزز الفهم مثل الأمثلة الواقعية. سنطبق ما تعلمناه على مجموعة بيانات نموذجية لحسابات المبيعات الإلكترونية. هذا التطبيق هو مثال حي على المهارات المطلوبة في علم البيانات الحقيقي.
(أ) سيناريو: تحليل بيانات مبيعات متجر إلكتروني
لنفترض أن لدينا DataFrame اسمه df_مبيعات يحتوي على الأعمدة التالية: معرف_المنتج، اسم_المنتج، الكمية_المباعة، السعر_الوحدة، تاريخ_الطلب، المدينة.
الكلمة المفتاحية في العنوان الفرعي: تحليل البيانات
1) إجمالي الإيرادات (Total Revenue Calculation)
المشكلة: نحتاج إلى إضافة عمود جديد يمثل "إجمالي المبيعات" لكل صف (الكمية × السعر).
الحل في Pandas:
مكافئ :SQL
2) تحديد المنتجات الأعلى ربحاً (Top Products)
المشكلة: ما هي أعلى 5 منتجات من حيث إجمالي المبيعات؟
الحل في Pandas:
مكافئ SQL:
(ب) سيناريو: التعامل مع البيانات الزمنية (Time-Series Data)
المشكلة: حساب إجمالي المبيعات يوميًا.
الحل في Pandas:
- تحويل عمود التاريخ إلى نوع بيانات زمني (Dtype datetime).
- تجميع البيانات حسب التاريخ.
شرح Pandas: هذه القوة الحقيقية لـ Pandas؛ حيث تسمح لك دالة .resample() بتجميع البيانات الزمنية بسهولة (D ليوم، W لأسبوع، M لشهر) بخطوة واحدة، وهو ما يتطلب استعلامات SQL أكثر تعقيدًا باستخدام دوال التاريخ.
5) مستوى متقدم: ميزات Pandas تتجاوز SQL الأساسية
على الرغم من أن SQL هي لغة استعلام قوية، فإن Pandas تقدم مجموعة أدوات لـ معالجة البيانات تتجاوز قدرات SQL التقليدية في كثير من الأحيان، خاصة في مراحل تنظيف البيانات واستكشافها.
(أ) التعامل مع البيانات المفقودة (Missing Values)
البيانات المفقودة (NULL في SQL، NaN في Pandas) هي تحدي يومي في علم البيانات.
| العملية | SQL | Pandas Code | الشرح |
|---|---|---|---|
| تحديد الصفوف المفقودة | SELECT * FROM الجدول WHERE العمود IS NULL; | df_جدول[df_جدول['العمود'].isnull()] | استخدام دالة .isnull() |
| إزالة الصفوف المفقودة | لا يوجد مكافئ مباشر؛ عادةً يُستخدم WHERE NOT NULL | df_جدول.dropna() | إزالة أي صف يحتوي على قيمة مفقودة واحدة على الأقل. |
| ملء البيانات المفقودة | UPDATE الجدول SET العمود = القيمة WHERE العمود IS NULL; | df_جدول['العمود'].fillna(القيمة) | ملء القيم المفقودة (NaN) بقيمة محددة مثل 0 أو المتوسط. |
(ب) دمج DataFrames (Joining/Merging) - ربط الجداول
مفهوم JOIN في SQL يكافئ دالة .merge() في Pandas.
السيناريو: دمج df_موظفين مع جدول df_أقسام (يحتوي على القسم و الموقع).
مكافئ SQL:
ملاحظة: يمكن تغيير وسيطة how إلى left, right, أو outer للحصول على أنواع الدمج المختلفة (Left Join، Right Join، Full Outer Join).
6) الذكاء الاصطناعي كمساعد: تسريع رحلتك في تعلم Pandas للمبتدئين
مع ظهور أدوات الذكاء الاصطناعي، أصبحت عملية كتابة واستكشاف الأكواد أسهل بكثير، حتى في مجال علم البيانات.
(أ) استخدام ChatGPT و Copilot لتوليد كود Pandas
يمكنك استخدام نماذج اللغة الكبيرة (LLMs) لتسريع عملية التحويل من SQL إلى Pandas:
- السؤال النموذجي: "كيف يمكنني كتابة استعلام SQL التالي باستخدام Pandas في بايثون؟ SELECT City, COUNT(OrderID) FROM Sales GROUP BY City HAVING COUNT(OrderID) > 10;"
- الإجابة المتوقعة (بواسطة AI): "استخدم الكود التالي: df_sales.groupby('City')['OrderID'].count().reset_index().rename(columns={'OrderID': 'Order_Count'}).query('Order_Count > 10')"
هذا لا يُغني عن الفهم، ولكنه يُسرع من عملية اكتشاف الدوال المناسبة ويساعد في تصحيح الأخطاء النحوية (Syntax Errors).
(ب) تحويل المخططات إلى كود (Visual to Code)
في كثير من الأحيان، يمكن لأدوات الذكاء الاصطناعي الحديثة أن تأخذ وصفًا لمخطط بياني مطلوب ("أريد مخططاً شريطياً يوضح متوسط الرواتب حسب القسم") وتقوم بتوليد كود Pandas و Matplotlib المناسب لإنشاء هذا المخطط مباشرةً.
7) الخلاصة: من مُستعلم SQL إلى خبير تحليل البيانات بـ Pandas
لقد أكملت الآن أولى خطواتك الرئيسية في إتقان Pandas DataFrames. لقد رأيت كيف أن Pandas ليست بديلاً لـ SQL، بل هي امتداد لها، حيث تأخذ مفهوم ربط الجداول والاستعلامات وتضعه في بيئة برمجة مرنة وقوية (بايثون)، مثالية لمهام تنظيف البيانات، والتحليل الاستكشافي، والتكامل مع نماذج الذكاء الاصطناعي.
مقارنتنا العملية كانت "جسرًا" يهدف إلى تخفيف حاجز التعلم. تذكر أن استيعابك للمفاهيم الأساسية في SQL (مثل التجميع، التصفية، والربط) يجعلك أسرع بكثير في فهم الدوال المكافئة في Pandas.
اليوم، أصبحت Pandas مهارة لا غنى عنها لزيادة فرص العمل في مجال البيانات. ابدأ بتطبيق الأمثلة، وجرّب استيراد بياناتك الخاصة، وستجد نفسك قريباً تستخدم بايثون للبيانات بطلاقة وثقة. استمر في الممارسة، فالعالم ينتظر تحليلاتك القيمة!
إقرأ أكثر:
👈دليل المطور لبناء مواقع ويب متوافقة مع WCAG 2.1 ومعززة لـ SEO المتقدم.👈تعلم الرسوم المتحركة للمبتدئين والمصادر العربية الموثوقة.
👈دليل إنشاء متجر يقدم خصومات مقابل بيانات العملاء لتدريب الذكاء الاصطناعي
👈كيف تستخدم Power Query ودوال Excel المالية لبناء نظام ذكي لتتبع محفظتك الاستثمارية.
👈كيف تختار الهشتاج المناسب لـ زيادة التفاعل وبناء مجتمع رقمي حول محتواك.











