لماذا Pandas؟
Pandas مكتبة Python لتحليل البيانات بسرعة وكفاءة. تستخدمها الشركات، الباحثون، ومحلّلو البيانات يومياً.
القدرات الأساسية:
- قراءة/كتابة CSV, Excel, JSON, SQL
- تنظيف وتحويل البيانات
- تجميع وتلخيص ملايين السجلات
- دمج عدّة مصادر
التثبيت
pip install pandas openpyxl(openpyxl لقراءة Excel)
المفهوم الأساسي: DataFrame
الـ DataFrame جدول بأعمدة وصفوف، كـ Excel.
import pandas as pd
data = {
"الاسم": ["أحمد", "سارة", "محمد"],
"العمر": [25, 30, 28],
"الراتب": [5000, 7500, 6200],
}
df = pd.DataFrame(data)
print(df)النتيجة:
الاسم العمر الراتب
0 أحمد 25 5000
1 سارة 30 7500
2 محمد 28 6200قراءة البيانات
من CSV
df = pd.read_csv("sales.csv")
print(df.head()) # أول 5 صفوف
print(df.tail()) # آخر 5 صفوف
print(df.shape) # (عدد الصفوف, عدد الأعمدة)
print(df.info()) # ملخص شاملمن Excel
df = pd.read_excel("sales.xlsx", sheet_name="2024")من API / JSON
df = pd.read_json("https://api.example.com/data.json")استكشاف البيانات
# إحصاءات وصفية
print(df.describe())
# عدّ القيم الفريدة
print(df["الفئة"].value_counts())
# القيم الفارغة
print(df.isnull().sum())
# أسماء الأعمدة
print(df.columns.tolist())الوصول للبيانات
بالعمود
ages = df["العمر"] # Series
subset = df[["الاسم", "الراتب"]] # DataFrame جديدبالصف
df.iloc[0] # أول صف (بالفهرس)
df.iloc[0:3] # أول 3 صفوف
df.loc[df["العمر"] > 27] # صفوف بشرطالتصفية
# شرط واحد
young = df[df["العمر"] < 30]
# شروط متعدّدة
good = df[(df["العمر"] > 25) & (df["الراتب"] > 5000)]
# قائمة قيم
managers = df[df["المنصب"].isin(["مدير", "قائد فريق"])]
# يحتوي نصّاً
emails = df[df["البريد"].str.contains("@gmail.com")]إضافة/تعديل أعمدة
# عمود جديد محسوب
df["الضريبة"] = df["الراتب"] * 0.15
df["الصافي"] = df["الراتب"] - df["الضريبة"]
# تعديل قيم
df.loc[df["العمر"] < 25, "الفئة"] = "شباب"
# تغيير نوع عمود
df["التاريخ"] = pd.to_datetime(df["التاريخ"])تنظيف البيانات
القيم الفارغة
# حذف الصفوف الفارغة
df_clean = df.dropna()
# حذف صفوف بقيم فارغة في عمود معيّن
df_clean = df.dropna(subset=["الراتب"])
# تعبئة بقيمة
df["الراتب"].fillna(0, inplace=True)
# تعبئة بالمتوسط
df["العمر"].fillna(df["العمر"].mean(), inplace=True)التكرارات
# حذف التكرارات
df = df.drop_duplicates()
# حسب عمود معيّن
df = df.drop_duplicates(subset=["البريد"])التجميع (groupby)
الميزة الأقوى في Pandas:
# متوسط الراتب حسب القسم
avg_by_dept = df.groupby("القسم")["الراتب"].mean()
# إحصاءات متعدّدة
stats = df.groupby("القسم").agg({
"الراتب": ["mean", "max", "min"],
"العمر": "mean",
})
# العدّ
counts = df.groupby(["القسم", "المنصب"]).size()الدمج (merge)
دمج جدولين:
employees = pd.DataFrame({
"emp_id": [1, 2, 3],
"name": ["أحمد", "سارة", "محمد"],
"dept_id": [10, 20, 10],
})
departments = pd.DataFrame({
"dept_id": [10, 20],
"dept_name": ["هندسة", "مبيعات"],
})
merged = pd.merge(employees, departments, on="dept_id")
print(merged)النتيجة:
emp_id name dept_id dept_name
0 1 أحمد 10 هندسة
1 2 سارة 20 مبيعات
2 3 محمد 10 هندسةأنواع الدمج
pd.merge(a, b, on="id", how="inner") # فقط المشترك (افتراضي)
pd.merge(a, b, on="id", how="left") # كل من a
pd.merge(a, b, on="id", how="outer") # الكلالترتيب
df_sorted = df.sort_values("الراتب", ascending=False)
df_sorted = df.sort_values(["القسم", "الراتب"], ascending=[True, False])التصدير
df.to_csv("output.csv", index=False, encoding="utf-8-sig")
df.to_excel("output.xlsx", index=False)
df.to_json("output.json", orient="records", force_ascii=False)مشروع كامل: تحليل مبيعات
import pandas as pd
# 1. تحميل البيانات
df = pd.read_csv("sales.csv")
# 2. تنظيف
df["التاريخ"] = pd.to_datetime(df["التاريخ"])
df = df.dropna(subset=["المبلغ"])
# 3. حساب أعمدة مشتقّة
df["الشهر"] = df["التاريخ"].dt.to_period("M")
df["ربع"] = df["التاريخ"].dt.to_period("Q")
# 4. تحليلات
monthly = df.groupby("الشهر")["المبلغ"].sum()
print("المبيعات الشهرية:")
print(monthly)
top_products = df.groupby("المنتج")["المبلغ"].sum().nlargest(10)
print("\nأفضل 10 منتجات:")
print(top_products)
# 5. تصدير تقرير
report = df.groupby("المنتج").agg({
"المبلغ": "sum",
"الكمية": "sum",
}).sort_values("المبلغ", ascending=False)
report.to_excel("sales_report.xlsx")
print("\n✓ حُفظ التقرير")نصائح للأداء
- استخدم أنواع بيانات صحيحة:
categoryلعمود بقيم مكرّرة قليلة - تجنّب الحلقات — استخدم دوال pandas (vectorized)
- للملفات الكبيرة:
pd.read_csv("x.csv", chunksize=10000)
الأسئلة الشائعة
Pandas vs Excel؟
Excel يدعم حتى مليون صف. Pandas يتعامل مع ملايين — أسرع، أقوى، وقابل للتكرار.
Pandas vs NumPy؟
NumPy للحسابات الرقمية على المصفوفات. Pandas مبنيّة فوقه لبيانات جدولية مسمّاة.
هل أحتاج Pandas للتعلّم الآلي؟
نعم — هي الأداة #1 لـ تحضير البيانات قبل إدخالها لـ scikit-learn أو TensorFlow.
مقالات ذات صلة
Prompt Engineering للمطوّرين: كيف تحصل على نتائج أفضل من الذكاء الاصطناعي
الفرق بين prompt متوسط و prompt احترافي قد يكون 10x في الجودة. تعلّم القواعد والتقنيات المثبَتة.
كيفية استخدام ChatGPT API في تطبيقاتك
ادمج قوّة GPT-4 في تطبيقك في 15 دقيقة. دليل كامل من الحساب إلى أول دردشة عاملة.
مقدّمة Machine Learning: من الصفر إلى أول نموذج
ابدأ تعلّم الذكاء الاصطناعي العملي — ما هو التعلّم الآلي، أنواعه، وبناء أول نموذج في 30 دقيقة.