تخطَّ إلى المحتوى

🤖 شرح الذكاء الاصطناعي وتعلّم الآلة

Pandas لتحضير البيانات

الدرس 9 من 50· ⏱ 4 دقائق قراءة· 🗓 آخر تحديث: ١٨ سبتمبر ٢٠٢٦

الواقع العملي لمشاريع الذكاء الاصطناعي: 80% من وقتك يُصرف في تحضير البيانات، و20% فقط في تدريب النموذج. Pandas هي الأداة التي تجعل هذا الجزء أقل إيلامًا. هذه الصفحة تشرح الأساسيات التي تحتاجها فعلًا، بدون الدخول في تفاصيل لا تستخدمها في 95% من مشاريعك.

ما هي Pandas؟

Pandas تقدّم نوعين أساسيين:

  • Series: عمود واحد مفهرس.
  • DataFrame: جدول ثنائي الأبعاد (صفوف × أعمدة) — قلب Pandas.

فكّر في DataFrame كجدول Excel أو SQL table، لكن مع قوة Python الكاملة.

التثبيت والاستيراد

pip install pandas
import pandas as pd
print(pd.__version__)

قراءة بيانات حقيقية

أكثر استخدام Pandas شيوعًا: قراءة ملف CSV.

df = pd.read_csv("data/houses.csv")

ملفات أخرى يدعمها Pandas مباشرة: Excel (.xlsx)، JSON، Parquet، SQL، HTML، والقص.

أوّل نظرة على البيانات

df.head()         # أوّل 5 صفوف
df.tail(3)        # آخر 3 صفوف
df.shape          # (عدد الصفوف، عدد الأعمدة)
df.columns        # أسماء الأعمدة
df.dtypes         # نوع كل عمود
df.info()         # ملخص: عدد غير فارغ + نوع لكل عمود
df.describe()     # إحصائيات وصفية للأعمدة العددية

اختيار أعمدة وصفوف

# عمود واحد (Series)
prices = df["price"]

# عدة أعمدة (DataFrame)
sub = df[["area", "rooms", "price"]]

# صف برقمه
first_row = df.iloc[0]

# صف بالشروط
expensive = df[df["price"] > 500_000]

# بالشروط المركّبة
big_and_cheap = df[(df["area"] > 150) & (df["price"] < 300_000)]

إضافة أعمدة جديدة

# من عمود موجود
df["price_per_m2"] = df["price"] / df["area"]

# بشرط
df["is_big"] = (df["area"] > 150).astype(int)

القيم المفقودة

كل بيانات حقيقية فيها قيم مفقودة. Pandas تساعدك على رصدها والتعامل معها:

# عدّ القيم المفقودة لكل عمود
df.isna().sum()

# حذف الصفوف التي فيها أي قيمة مفقودة
df_clean = df.dropna()

# ملء القيم المفقودة بقيمة افتراضية
df["rooms"] = df["rooms"].fillna(df["rooms"].median())

# ملء بشرط
df.loc[df["age"] < 0, "age"] = 0

دمج الجداول

# دمج عمودي (نفس الأعمدة)
all_data = pd.concat([df1, df2], ignore_index=True)

# دمج أفقي بمفتاح مشترك (مثل SQL JOIN)
merged = users.merge(orders, on="user_id", how="left")

تجميع (Group By)

# متوسط السعر حسب الحي
df.groupby("neighborhood")["price"].mean()

# عدد المنازل حسب عدد الغرف
df.groupby("rooms").size()

لماذا Pandas مهمة لتعلّم الآلة؟

  • scikit-learn يتوقّع دخل على شكل NumPy أو Pandas DataFrame — التحوّل بينهما سلس.
  • 90% من بيانات العالم تأتي في جداول. Pandas واجهتك الأولى معها.
  • تنظيف البيانات = Pandas + بضعة أسطر. بدونها، ستفشل النماذج بصمت.
  • استكشاف البيانات (EDA) يبدأ دائمًا بـ Pandas: head()، describe()، groupby()، رسم بياني سريع.

مثال عملي: تحضير أسعار المنازل

import pandas as pd

# قراءة البيانات
df = pd.read_csv("data/houses.csv")

# 1. فحص سريع
print(df.shape)
print(df.isna().sum())

# 2. حذف الصفوف التي فيها سعر مفقود
df = df.dropna(subset=["price"])

# 3. ملء المساحة المفقودة بالوسيط
df["area"] = df["area"].fillna(df["area"].median())

# 4. حذف القيم الشاذة الواضحة
df = df[df["area"] > 10]

# 5. إضافة عمود مفيد للنموذج
import numpy as np
df["log_price"] = df["price"].apply(lambda p: float(np.log(p)))

# 6. اختيار الميزات (Features) والهدف (Target)
X = df[["area", "rooms", "age"]]
y = df["price"]

الآن X و y جاهزان لتدريب نموذج الانحدار.

نصيحة: لا تعيد اختراع العجلة

Pandas أبطأ من NumPy في بعض العمليات. إذا كانت السرعة مهمة:

  • استخدم NumPy للحسابات العددية الثقيلة.
  • استخدم Polars أو DuckDB للجداول الضخمة جدًا (ملايين الصفوف).
  • لكن للبداية و90% من المشاريع: Pandas كافية تمامًا.

أخطاء شائعة

  • تعديل DataFrame أثناء التكرار عليه — ينتج أحيانًا سلوكًا غير متوقع. استخدم .loc[] أو .copy().
  • عدم الانتباه لـSettingWithCopyWarning — يعني أن عملك على "عرض" وليس نسخة. استخدم .copy() صراحة.
  • اعتماد inplace=True — قد يُزال في Pandas 3.0. عوّد نفسك على df = df.fillna(0).
  • خلط الفهرس والقيم — عند الوصول إلى صف بـiloc تحصل على Series؛ عند loc قد تحصل على قيمة أو DataFrame حسب الاختيار.

الخطوات التالية

📚 مرجع إضافي: توثيق Pandas الرسمي.

شرح Pandas لتحضير البيانات — الذكاء الاصطناعي وتعلّم الآلة بالعربي
Pandas لتحضير البياناتالذكاء الاصطناعي وتعلّم الآلة بالعربي · The Code Fix

📚 لمزيد من التعمّق في الذكاء الاصطناعي وتعلّم الآلة، راجِع توثيق scikit-learn الرسمي.

هل كان هذا الدرس مفيدًا؟