كيفية استخدام Pandas لتحليل البيانات في Python
الذكاء الاصطناعي والبيانات

كيفية استخدام Pandas لتحليل البيانات في Python

Pandas المكتبة رقم #1 لتحليل البيانات في Python — قراءة CSV، تصفية، دمج، وتصدير. مشروع عملي من البداية للنهاية.

م
مؤسس LahbabiGuide
3 دقائق قراءة
شارك:

لماذا Pandas؟

Pandas مكتبة Python لتحليل البيانات بسرعة وكفاءة. تستخدمها الشركات، الباحثون، ومحلّلو البيانات يومياً.

القدرات الأساسية:

  • قراءة/كتابة CSV, Excel, JSON, SQL
  • تنظيف وتحويل البيانات
  • تجميع وتلخيص ملايين السجلات
  • دمج عدّة مصادر

التثبيت

bash
pip install pandas openpyxl

(openpyxl لقراءة Excel)

المفهوم الأساسي: DataFrame

الـ DataFrame جدول بأعمدة وصفوف، كـ Excel.

python
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

python
df = pd.read_csv("sales.csv")
print(df.head())     # أول 5 صفوف
print(df.tail())     # آخر 5 صفوف
print(df.shape)      # (عدد الصفوف, عدد الأعمدة)
print(df.info())     # ملخص شامل

من Excel

python
df = pd.read_excel("sales.xlsx", sheet_name="2024")

من API / JSON

python
df = pd.read_json("https://api.example.com/data.json")

استكشاف البيانات

python
# إحصاءات وصفية
print(df.describe())

# عدّ القيم الفريدة
print(df["الفئة"].value_counts())

# القيم الفارغة
print(df.isnull().sum())

# أسماء الأعمدة
print(df.columns.tolist())

الوصول للبيانات

بالعمود

python
ages = df["العمر"]           # Series
subset = df[["الاسم", "الراتب"]]  # DataFrame جديد

بالصف

python
df.iloc[0]           # أول صف (بالفهرس)
df.iloc[0:3]         # أول 3 صفوف
df.loc[df["العمر"] > 27]   # صفوف بشرط

التصفية

python
# شرط واحد
young = df[df["العمر"] < 30]

# شروط متعدّدة
good = df[(df["العمر"] > 25) & (df["الراتب"] > 5000)]

# قائمة قيم
managers = df[df["المنصب"].isin(["مدير", "قائد فريق"])]

# يحتوي نصّاً
emails = df[df["البريد"].str.contains("@gmail.com")]

إضافة/تعديل أعمدة

python
# عمود جديد محسوب
df["الضريبة"] = df["الراتب"] * 0.15
df["الصافي"] = df["الراتب"] - df["الضريبة"]

# تعديل قيم
df.loc[df["العمر"] < 25, "الفئة"] = "شباب"

# تغيير نوع عمود
df["التاريخ"] = pd.to_datetime(df["التاريخ"])

تنظيف البيانات

القيم الفارغة

python
# حذف الصفوف الفارغة
df_clean = df.dropna()

# حذف صفوف بقيم فارغة في عمود معيّن
df_clean = df.dropna(subset=["الراتب"])

# تعبئة بقيمة
df["الراتب"].fillna(0, inplace=True)

# تعبئة بالمتوسط
df["العمر"].fillna(df["العمر"].mean(), inplace=True)

التكرارات

python
# حذف التكرارات
df = df.drop_duplicates()

# حسب عمود معيّن
df = df.drop_duplicates(subset=["البريد"])

التجميع (groupby)

الميزة الأقوى في Pandas:

python
# متوسط الراتب حسب القسم
avg_by_dept = df.groupby("القسم")["الراتب"].mean()

# إحصاءات متعدّدة
stats = df.groupby("القسم").agg({
    "الراتب": ["mean", "max", "min"],
    "العمر": "mean",
})

# العدّ
counts = df.groupby(["القسم", "المنصب"]).size()

الدمج (merge)

دمج جدولين:

python
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     هندسة

أنواع الدمج

python
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")   # الكل

الترتيب

python
df_sorted = df.sort_values("الراتب", ascending=False)
df_sorted = df.sort_values(["القسم", "الراتب"], ascending=[True, False])

التصدير

python
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)

مشروع كامل: تحليل مبيعات

python
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.

اقرأ أيضاً

مقالات ذات صلة