Python للذكاء الاصطناعي متقدم · Advanced 15 دقيقة

Pandas

Pandas for Tabular Data

التعامل مع البيانات الجدولية: DataFrame والاختيار والتصفية والتجميع والقيم المفقودة.

تقدّمك في المسار0%

Series وDataFrame

import pandas as pd

df = pd.DataFrame({
    "name":  ["Ali", "Mona", "Omar", "Huda"],
    "age":   [23, 31, None, 27],
    "track": ["ML", "DL", "ML", "NLP"],
    "score": [78, 92, 65, 88],
})
df.head()
df.info()        # الأنواع والقيم غير المفقودة
df.describe()    # إحصاءات وصفية للأعمدة العددية

اختيار البيانات

df["score"]                 # Series
df[["name", "score"]]       # DataFrame
df.loc[0, "name"]           # بالتسمية
df.iloc[0:2, 1:3]           # بالموقع
df[df["score"] >= 80]       # تصفية شرطية
df.query("track == 'ML' and score > 60")

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

df.isna().sum()                         # عدد القيم المفقودة لكل عمود
df["age"] = df["age"].fillna(df["age"].median())
df_clean = df.dropna()

قرار حذف القيم المفقودة أو تعويضها يؤثر في النتائج، ويجب حساب قيم التعويض من بيانات التدريب فقط عند بناء نموذج لتجنب تسرب البيانات (data leakage).

أعمدة جديدة وتحويلات

df["passed"] = df["score"] >= 70
df["track"] = df["track"].astype("category")
df.sort_values("score", ascending=False)

التجميع

df.groupby("track")["score"].agg(["mean", "count"])

يقسم البيانات حسب المسار، ويحسب المتوسط والعدد لكل مجموعة.

الدمج

tracks = pd.DataFrame({"track": ["ML", "DL", "NLP"],
                       "hours": [40, 50, 45]})
merged = df.merge(tracks, on="track", how="left")

نصيحة أداء

تجنب المرور على الصفوف بـ iterrows في البيانات الكبيرة، واستخدم العمليات على الأعمدة كاملة لأنها متجهة وأسرع بكثير.

مصطلحات الدرس

إطار البيانات DataFrame
جدول ثنائي الأبعاد له أعمدة مسماة وفهرس للصفوف، وقد تختلف أنواع الأعمدة.
التجميع Group By
تقسيم البيانات حسب قيم عمود ثم تطبيق دالة تلخيص على كل مجموعة ودمج النتائج.
السلسلة Series
مصفوفة أحادية البعد مع فهرس، وتمثل عموداً واحداً من DataFrame.

الملخص

pandas مكتبة لتحليل البيانات الجدولية تقدم بنيتين أساسيتين: Series للعمود الواحد وDataFrame للجدول. تتيح قراءة البيانات من مصادر متعددة، واختيار الصفوف والأعمدة بـ loc وiloc، والتصفية الشرطية، ومعالجة القيم المفقودة، والتجميع بـ groupby، ودمج الجداول.

أسئلة مراجعة

  1. ما الفرق بين loc وiloc؟

    loc يختار بالتسميات (أسماء الصفوف والأعمدة)، وiloc يختار بالمواقع العددية.

  2. كيف تعرف عدد القيم المفقودة في كل عمود؟

    df.isna().sum().

المصادر والمراجع

  1. 10 minutes to pandas — pandas documentation
  2. Group by: split-apply-combine — pandas documentation
  3. Wes McKinney — Python for Data Analysis, 3E (open access)

إكمال الدرس