Pandas: البدء باستخدام بانداس

لقد حل NumPy مشكلة الأداء في الحوسبة الرقمية باستخدام Python، لكن البيانات في الواقع أكثر تعقيدًا من "مصفوفات رقمية بحتة" — فهي تحتوي على أسماء أعمدة، وأنواع مختلطة، وقيم مفقودة، وتشكيلة من صيغ الملفات. تم تصميم Pandas تحديدًا لهذا الغرض: فهي تمنح Python قوة التلاعب بالبيانات المنافسة لـ SQL مع الحفاظ على موجزية الشفرةبرمجيتها وبديهيتها. يبدأ هذا القسم من قيود NumPy ويكشف لماذا يُعتبر Pandas "الجيش السويسري" لتحليل البيانات.

⚠️ ملاحظة: الشفرة البرمجية أدناه تتطلب بيئة Python محلية للتشغيل.

١. ماذا ستتعلم



2. التطور من NumPy إلى Pandas

(1) نقطة الألم: معضلة أليس مع الأنواع المختلطة

أليس هي محللة بيانات تحتاج للتعامل مع بيانات العملاء: الأسماء هي سلاسل نصية، الأعمار أعداد صحيحة، الرواتب أعداد عشرية، وتواريخ التوظيف هي قيم datetime. حاولت استخدام NumPy أولاً:

▶ مثال: صراع NumPy مع بيانات الأنواع المختلطة (الصعوبة ⭐)

TEXT 📖 للعرض فقط
> **الخرج:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقاً — قم بتثبيتها محلياً (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الخاص بك.
PYTHON
import numpy as np

# بيانات العملاء: الاسم(str)، العمر(int)، الراتب(float)
names = np.array(['Alice', 'Bob', 'Charlie'])
ages = np.array([28, 34, 25])
salaries = np.array([75000.0, 92000.0, 68000.0])

# المشكلة 1: خلط الأنواع يفرض الرفع إلى object
mixed = np.array(['Alice', 28, 75000.0])
print(mixed.dtype)  # object — تفقد عمليات رقمية!

# المشكلة 2: لا يمكن حساب المتوسط على مصفوفة object
try:
    print(np.mean(mixed))  # خطأ أو نتيجة غير مفيدة
except TypeError:
    print("Cannot compute mean on object array")

# المشكلة 3: القيم المفقودة تحتاج معالجة خاصة
ages_with_nan = np.array([28, 34, np.nan, 25])
print(np.mean(ages_with_nan))  # nan — تحتاج np.nanmean()
TEXT 📖 للعرض فقط
> **الخرج:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقاً — قم بتثبيتها محلياً (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الخاص بك.

القيد الرئيسي لـ NumPy هو التصنيف المتجانس — مصفوفة ndarray فردية يمكنها فقط تخزين نوع بيانات واحد. عندما تضع سلاسل نصية وأرقاماً في نفس المصفوفة، يقوم NumPy برفع كل شيء إلى نوع object، مفقداً بذلك جميع قدرات العمليات المتجهة. بالإضافة إلى ذلك، لا يمتلك NumPy مفهوم "أسماء الأعمدة" ولا نظام مدمج للقيم المفقودة (يمكنك فقط الاعتماد على np.nan، والذي يعمل فقط مع الأعداد العشرية).

(2) الحل: إطار بيانات Pandas الخاص بـ بوب

يتعامل بوب مع نفس البيانات باستخدام إطار بيانات Pandas — في خطوة واحدة سلسة:

▶ مثال: التعامل مع بيانات الأنواع المختلطة مع Pandas (الصعوبة ⭐⭐)

TEXT 📖 للعرض فقط
> **الخرج:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقاً — قم بتثبيتها محلياً (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الخاص بك.
PYTHON
import pandas as pd

# إطار بيانات واحد يتعامل مع الأنواع المختلطة بشكل طبيعي
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [28, 34, 25],
    'salary': [75000.0, 92000.0, 68000.0],
    'hire_date': pd.to_datetime(['2022-03-15', '2019-08-01', '2023-01-10'])
})

print(df.dtypes)
# name                 object
# age                   int64
# salary              float64
# hire_date    datetime64[ns]

print(df['salary'].mean())  # 78333.33 — يعمل بشكل طبيعي
print(df[df['age'] > 27])   # تصفية حسب الشرط
TEXT 📖 للعرض فقط
> **الخرج:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقاً — قم بتثبيتها محلياً (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الخاص بك.

كل عمود يحتفظ بنوعه الخاص، العمليات الإحصائية تعمل تلقائياً، والتصفية الشرطية بديهية مثل SQL — هذا هو جمال Pandas.

(3) الميزة: 4 قدرات جوهرية

تضيف Pandas 4 قدرات رئيسية فوق NumPy:

القدرة NumPy Pandas
فهرسة مُعلَّمة الوصول حسب الموضع الصحيح فقط الوصول حسب اسم العمود / تسمية الصف
أنواع مختلطة نوع واحد لكل مصفوفة مستقل نوع لكل عمود
قيم مفقودة np.nan (الأعداد العشرية فقط) NaN / NaT / pd.NA (تغطية كاملة)
إدخال/إخراج البيانات np.loadtxt / np.savetxt CSV / Excel / JSON / SQL / Parquet / HDF5


3. مزايا Pandas الأساسية بالتفصيل

(1) الفهرسة بالعلامات: البيانات ذاتية الوصف

تقوم NumPy بالوصول إلى البيانات باستخدام arr[0], arr[1, 2] — عليك أن تتذكر "العمود 0 هو الاسم، العمود 2 هو الراتب." تتيح لك Pandas للبيانات أن تتحدث عن نفسها:

▶ مثال: الفهرسة بالعلامات مقابل الفهرسة بالموضع (الصعوبة ⭐)

TEXT 📖 للعرض فقط
> **المخرجات:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقًا — قم بتثبيته محليًا (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الذي تستخدمه.
PYTHON
import numpy as np
import pandas as pd

# NumPy: يجب ترتيب الأعمدة بالذاكرة
arr = np.array([['Alice', 28, 75000.0],
                ['Bob', 34, 92000.0]])
# ما هو العمود 2؟ عليك التحقق من التوثيق
print(arr[0, 2])  # 75000.0 — لكن ماذا يعني هذا؟

# Pandas: أسماء الأعمدة توثق ذاتها
df = pd.DataFrame(arr, columns=['name', 'age', 'salary'])
df['age'] = df['age'].astype(int)
df['salary'] = df['salary'].astype(float)
print(df['salary'])  # اسم العمود يوضح كل شيء
# 0    75000.0
# 1    92000.0
print(df.loc[0, 'name'])  # Alice — وصول قائم على العلامات
TEXT 📖 للعرض فقط
> **المخرجات:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقًا — قم بتثبيته محليًا (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الذي تستخدمه.

(2) الأنواع المختلطة: نوع بيانات مستقل لكل عمود

كل عمود في DataFrame (وهو سلسلة Series) له نوع بيانات (dtype) خاص به، تمامًا مثلما يمكن لكل عمود في جدول بيانات Excel أن يكون بتنسيق مختلف.

الميزة مصفوفة NumPy (ndarray) إطار Pandas (DataFrame)
قيد النوع نوع بيانات واحد للمصفوفة بالكامل نوع بيانات مستقل لكل عمود
أعمدة النصوص المصفوفة بالكامل تنزل إلى كائن عمود واحد كـ كائن / StringDtype
الأعمدة الرقمية يجب فصلها عن النصوص تتعايش مع أعمدة النصوص
العمليات التحويل الشامل للبيانات (vectorization) عمليات مستقلة لكل عمود

(3) معالجة القيم المفقودة: دعم أصلي

توفر Pandas نظامًا كاملًا للقيم المفقودة يشمل NaN (قيمة مفقودة من نوع float)، وNaT (قيمة مفقودة من نوع datetime)، وpd.NA (قيمة مفقودة عالمية)، بينما يعمل np.nan في NumPy فقط مع أنواع float.

▶ مثال: مقارنة معالجة القيم المفقودة (الصعوبة ⭐)

TEXT 📖 للعرض فقط
> **المخرجات:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقًا — قم بتثبيته محليًا (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الذي تستخدمه.
PYTHON
import numpy as np
import pandas as pd

# NumPy: الـ nan في مصفوفة الأعداد الصحيحة يجبر التحويل إلى float
arr = np.array([1, 2, np.nan, 4])
print(arr.dtype)  # float64 — فقدت الأعداد الصحيحة!
print(np.mean(arr))  # nan — تحتاج إلى np.nanmean()

# Pandas: تعالج القيم المفقودة لكل عمود على حدة
s = pd.Series([1, 2, pd.NA, 4], dtype='Int64')  # عدد صحيح قابل لل null
print(s)  # يحتفظ بنوع العدد الصحيح مع <NA>
print(s.mean())  # 2.333 — يتخطى القيم المفقودة تلقائيًا
TEXT 📖 للعرض فقط
> **المخرجات:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقًا — قم بتثبيته محليًا (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الذي تستخدمه.

(4) أدوات إدخال/إخراج غنية: مركز بيانات شامل

▶ مثال: قراءة البيانات وكتابتها باستخدام Pandas (الصعوبة ⭐)

TEXT 📖 للعرض فقط
> **المخرجات:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقًا — قم بتثبيته محليًا (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الذي تستخدمه.
PYTHON
import pandas as pd
from io import StringIO

# القراءة من سلسلة نصية بصيغة CSV
csv_data = """name,age,salary
Alice,28,75000
Bob,34,92000
Charlie,25,68000"""
df = pd.read_csv(StringIO(csv_data))
print(df)

# الكتابة بتنسيقات مختلفة
# df.to_csv('output.csv', index=False)
# df.to_excel('output.xlsx', sheet_name='Employees')
# df.to_json('output.json', orient='records')
TEXT 📖 للعرض فقط
> **المخرجات:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقًا — قم بتثبيته محليًا (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلي قليلاً حسب إصدار pandas الذي تستخدمه.


4. إطار البيانات مقابل إكسل / SQL: مقارنة توضيحية

(1) مقارنة جنب إلى جنب

المفهوم إكسل جدول SQL إطار بيانات Pandas
بنية البيانات ورقة عمل (Sheet) جدول إطار بيانات
الصفوف أرقام الصفوف صفوف فهرس (تسميات الصفوف)
الأعمدة حروف الأعمدة (A, B, C) أسماء الأعمدة أعمدة (أسماء الأعمدة)
التصفية AutoFilter WHERE df[condition]
الفرز Sort ORDER BY df.sort_values()
التجميع PivotTable GROUP BY df.groupby()
الدمج VLOOKUP JOIN pd.merge()
إضافة أعمدة أعمدة الصيغ SELECT expr df['new'] = expr
إزالة التكرارات Remove Duplicates DISTINCT df.drop_duplicates()

(2) الاختلافات الأساسية

بينما تشترك الثلاثة في مفاهيم متشابهة، تمتلك إطارات البيانات قدرات تفتقدها إكسل وSQL:



5. نظرة عامة على نظام Pandas البيئي

(1) أين يقع Pandas في علم البيانات

100%
mindmap
  root((نظام Pandas البيئي))
    إدخال البيانات
      CSV Excel JSON
      قاعدة بيانات SQL
      Parquet HDF5
      استخراج من الويب
    معالجة البيانات
      التنظيف
      التحويل
      الدمج
      إعادة التشكيل
    تحليل البيانات
      المجمعة للتجميع
      جدول المحور
 السلسلة الزمنية
      الملخص الإحصائي
    إخراج البيانات
      التصور Matplotlib
 التعلم الآلي scikit-learn
 التقارير HTML Excel
    الأساس
      مصفوفة NumPy ndarray
TEXT 📖 للعرض فقط
> **الإخراج:** قم بتشغيل هذا في بيئة Python محلية (إصدار pandas 2.x). خادم Piston لا يحتوي على pandas مثبته مسبقاً — قم بتثبيته محلياً (`pip install pandas`) للمتابعة. قد تختلف القيم الفعليه قليلاً حسب إصدار pandas لديك.

(2) دور Pandas في المكدس

يجلس Pandas في صميم مكدس علم البيانات بلغة Python، ويعمل كجسر بين الحسابات منخفضة المستوى والتحليل عالي المستوى:

الطبقة الأداة الدور
الحسابات منخفضة المستوى NumPy محرك حسابات عددية عالية الأداء
معالجة البيانات Pandas تحميل / تنظيف / تحويل / تحليل البيانات الجدولية
التصور Matplotlib / Seaborn الرسوم البيانية والمجسمات
التعلم الآلي scikit-learn تدريب النماذج والتنبؤ
التعلم العميق PyTorch / TensorFlow الشبكات العصبية
💡 نصيحة: تحت الغطاء، DataFrame في Pandas مدعوم بمصفوفات NumPy ndarray — عندما تقوم بعمليات على الأعمدة الرقمية، فإنك في الواقع تستدعي دوال NumPy المتجهة. Pandas هو الطبقة التي "تجعل NumPy تعمل مع البيانات الجدولية."



6. مثال كامل: مقارنة سير العمل الكامل بين NumPy و Pandas

▶ مثال: تحليل درجات الطلاب — سير العمل الكامل (الصعوبة ⭐⭐⭐)

TEXT 📖 للعرض فقط
> **الإخراج:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). لا يحتوي خادم Pandas على pandas مثبته مسبقًا - قم بتثبيته محليًا (`pip install pandas`) للمتابعة. قد تتغير القيم الفعلية قليلاً بناءً على إصدار pandas لديك.
PYTHON
import numpy as np
import pandas as pd

# ============================================
# مقارنة شاملة: NumPy مقابل Pandas
# لسير عمل تحليل درجات الطلاب
# ============================================

# --- البيانات الخام ---
students = ['Alice', 'Bob', 'Charlie', 'Carol', 'David']
math = [85, 92, 78, 95, 88]
english = [90, 85, 82, 88, 91]
science = [88, 90, 75, 93, 86]

# --- طريقة NumPy ---
scores_np = np.array([math, english, science])  # الشكل: (3, 5)
# أي صف يمثل أي مادة؟ يجب تذكر: الصف 0=رياضيات، 1=إنجليزي، 2=علوم
# أي عمود يمثل أي طالب؟ يجب تذكر الترتيب
avg_per_student = scores_np.mean(axis=0)
print("NumPy - المتوسط لكل طالب (حسب الموضع):")
for i, avg in enumerate(avg_per_student):
    print(f"  الطالب {i}: {avg:.1f}")  # من هو الطالب 0؟

# --- طريقة Pandas ---
df = pd.DataFrame({
    'student': students,
    'math': math,
    'english': english,
    'science': science
})
df['average'] = df[['math', 'english', 'science']].mean(axis=1)
df['grade'] = df['average'].map(
    lambda x: 'A' if x >= 90 else 'B' if x >= 85 else 'C'
)
print("\nPandas - درجات الطلاب:")
print(df[['student', 'average', 'grade']])

# أفضل الأداءات
top = df[df['grade'] == 'A']
print(f"\nطلاب الدرجة A: {top['student'].tolist()}")

# إحصائيات المواد
print("\nإحصائيات المواد:")
print(df[['math', 'english', 'science']].describe())
TEXT 📖 للعرض فقط
> **الإخراج:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). لا يحتوي خادم Piston على pandas مثبته مسبقًا - قم بتثبيته محليًا (`pip install pandas`) للمتابعة. قد تتغير القيم الفعلية قليلاً بناءً على إصدار pandas لديك.

المخرجات المتوقعة (مقتطف):

TEXT 📖 للعرض فقط
NumPy - المتوسط لكل طالب (حسب الموضع):
  الطالب 0: 87.7
  الطالب 1: 89.0
  الطالب 2: 78.3

Pandas - درجات الطلاب:
   student  average grade
0    Alice     87.7     B
1      Bob     89.0     B
2  Charlie     78.3     C
3    Carol     92.0     A
4    David     88.3     B

طلاب الدرجة A: ['Carol']

إحصائيات المواد:
        math  english  science
count   5.00     5.00     5.00
mean   87.60    87.20    86.40
std     6.19     3.70     7.60
min    78.00    82.00    75.00
max    95.00    91.00    93.00

يمكن لـ NumPy إجراء الحساب، لكن النتائج تفتقر إلى "الوصف الذاتي" — عليك تذكر بشكل منفصل أي رقم يقابل أي طالب. تحتفظ Pandas بالبيانات والعلامات مرتبطة معًا في جميع الأوقات، مما يجعل النتائج واضحة فورًا.


7. التثبيت والتحقق

(1) طرق التثبيت

الطريقة الأمر حالة الاستخدام
pip pip install pandas الأكثر شيوعاً
conda conda install pandas بيئات Anaconda
من المصدر pip install . للمطورين / المساهمين
💡 نصيحة: يقوم Pandas تلقائياً بتثبيت NumPy كتبعية. إذا كان لديك NumPy مثبّتاً بالفعل، فسيقوم Pandas بإعادة استخدام الإصدار الحالي.

▶ مثال: التحقق من التثبيت (الصعوبة ⭐)

TEXT 📖 للعرض فقط
> **الإخراج:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبّتاً مسبقاً — قم بتثبيته محلياً (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلية قليلاً حسب إصدار pandas الخاص بك.
PYTHON
import pandas as pd
import numpy as np

print(f"Pandas version: {pd.__version__}")
print(f"NumPy version: {np.__version__}")

# Quick functionality check
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})
print(df)
print(f"\nMean of x: {df['x'].mean()}")
TEXT 📖 للعرض فقط
> **الإخراج:** قم بتشغيل هذا في بيئة Python محلية (pandas 2.x). خادم Piston لا يحتوي على pandas مثبّتاً مسبقاً — قم بتثبيته محلياً (`pip install pandas`) للمتابعة. قد تختلف القيم الفعلية قليلاً حسب إصدار pandas الخاص بك.

(2) ملاحظات الإصدارات

الإصدار الحالة ملاحظات
Pandas 3.x الأحدث تم إصداره في 2026، تم تفعيل النسخ عند الكتابة افتراضياً
Pandas 2.x مستخدم على نطاق واسع تم إصداره في 2023، تحسينات كبيرة في الأداء
Pandas 1.x قديم تم إهمال بعض بناء الجملة
⚠️ ملاحظة: تم كتابة هذا البرنامج التعليمي لـ Pandas 2.x / 3.x. تم إزالة بعض بناء الجملة الخاص بإصدار 1.x (مثل append) في الإصدار 2.0 ولم يعد مستخدماً هنا.


❓ أسئلة شائعة

س ما العلاقة بين Pandas و NumPy؟
ج Pandas مبني على NumPy. الأعمدة الرقمية في DataFrame هي ndarrays تحت الغطاء — عندما تجري عمليات على الأعمدة الرقمية، أنت في الواقع تستدعي دوال NumPy. تضيف Pandas تسميات فهرسية، وأنواع مختلطة، ومعالجة القيم المفقودة، وأدوات الإدخال/الإخراج فوق NumPy.
س لماذا نتعلم Pandas بعد NumPy؟
ج NumPy محرك حوسبة؛ أما Pandas فأداة لتحليل البيانات. البيانات في العالم الحقيقي تحتوي على أسماء أعمدة، وأنواع مختلطة، وقيم مفقودة، وتنسيقات ملفات متعددة — معالجة هذه الأشياء باستخدام NumPy تتطلب الكثير من العمل اليدوي، بينما تدعمها Pandas بشكل أصلي. 95% من عمل تحليل البيانات يتم باستخدام Pandas؛ أنت لا تنزل إلى NumPy إلا عندما تحتاج إلى حوسبة عالية الأداء.
س ما الفرق بين DataFrame و Excel؟
ج من الناحية المفاهيمية هما متشابهان (كلاهما جدول ثنائي الأبعاد)، لكن DataFrame قابل للبرمجة: أتمتة العمليات باستخدام كود Python، ومعالجة ملايين الصفوف، والتكامل مع مكتبات التعلم الآلي، واستخدام Git للتحكم في الإصدارات. Excel ممتاز للتفاعل اليدوي وعرض التقارير؛ بينما تم تصميم DataFrames لخطوط معالجة البيانات المؤتمتة.
س هل يمكن لـ Pandas أن يحل محل SQL؟
ج ليس بالكامل. تتفوق Pandas في العمل التحليلي (الاستكشاف / التنظيف / التحويل)، بينما تتفوق SQL في عمل الاستعلام (الربط بين جداول متعددة / المعاملات / التزامن). تركيبة شائعة: استخدام SQL لسحب قاعدة البيانات، ثم استخدام Pandas للتحليل. لمجموعات البيانات التي تقل عن مليون صف، يمكن لـ Pandas أن تحل محل معظم وظائف SQL التحليلية.
س ما الفروق الرئيسية بين Pandas 2.x و 1.x؟
ج ثلاث تغييرات رئيسية: (1) تفعيل Copy-on-Write افتراضيًا لمنع التعديل العرضي للعروض (views)؛ (2) إزالة واجهات برمجة التطبيقات المهملة مثل append و DataFrame.ix؛ (3) استخدام PyArrow تحت الغطاء لتحسين الأداء. يستخدم هذا البرنامج التعليمي بنية جمل 2.x/3.x — ينبغي لمستخدمي 1.x الترقية.
س كيف تؤدي Pandas مع البيانات الكبيرة؟
ج Pandas مناسب جدًا للتحليل على جهاز واحد بمقياس ملايين الصفوف. للبيانات الأكبر (مقياس المليارات)، فكر في: (1) Dask — نسخة موزعة من واجهة Pandas API؛ (2) Polars — مكتبة بديلة أسرع (مطبقة بلغة Rust)؛ (3) PySpark — إطار عمل حوسبة موزعة. تظل Pandas الخيار الأول للتعلم وتطوير النماذج الأولية.
س لماذا يقول الكود "يتطلب بيئة Python محلية"؟
ج محررنا على الإنترنت لا يدعم تشغيل Pandas (بسبب قيود الذاكرة والأمان). يرجى تثبيت Python + Pandas محليًا لتشغيل كود المثال. التثبيت يتطلب فقط أمرًا واحدًا: pip install pandas.

📖 ملخص


📝 تمارين

  1. أساسي (الصعوبة ⭐): قم بتثبيت Pandas وشغّل كود التحقق للتأكد من أن pd.__version__ يُظهر النتيجة بشكل صحيح. أنشئ DataFrame يحتوي على 3 أعمدة (الاسم / العمر / المدينة) واطبعه.
  2. متوسط (الصعوبة ⭐⭐): قم بمعالجة بيانات درجات الطلاب نفسها (5 طلاب / 3 مواد) باستخدام كلاً من NumPy و Pandas. احسب متوسط درجات كل طالب وأعلى درجة لكل مادة. قارن حجم الكود وسهولة قراءته في كلا النهجين.
  3. تحدي (الصعوبة ⭐⭐⭐): قم بتحميل بيانات تحتوي على قيم مفقودة من سلسلة CSV، ثم استخدم Pandas لـ: عرض المعلومات → ملء القيم المفقودة → التجميع حسب الفئة وحساب الإحصائيات → إخراج الوصف. استخدم Pandas فقط طوال الوقت — لا يُسمح بحلقات التكرار.

Next: Getting Started with Series →

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%