لماذا تحليل البيانات؟
تحليل البيانات هو تحويل أرقام خام إلى قرار واضح: أي منتج يباع أكثر؟ أي دورة تستقطب متعلمين أكثر؟ أي منطقة تحتاج إلى اهتمام؟ لذلك أصبحت هذه المهارة مطلوبة في التجارة والتعليم والصحة والإدارة والبحث العلمي.
وتعد لغة Python من أسهل البدايات لأن صياغتها قريبة من اللغة الطبيعية، ومكتبة Pandas تجعل الجداول وملفات Excel وCSV سهلة التعامل. لا تحتاج إلى شهادة في البرمجة للبدء، ولا إلى رياضيات معقدة في المرحلة الأولى، بل إلى الانتظام ومشاريع صغيرة تطبق فيها ما تتعلمه.
يناسب هذا الدليل الطالب والموظف وصاحب المشروع الصغير والباحث، وكل من يتعامل مع جداول أرقام ويريد أن ينجزها بسرعة ودقة أكبر.
التحضير: الأدوات اللازمة
ثبّت Python من موقعه الرسمي (python.org) أو استخدم توزيعة Anaconda التي تضم معظم المكتبات. أما إن كنت تفضل عدم التثبيت فيمكنك العمل من المتصفح عبر Google Colab. بعد ذلك ثبّت المكتبات الأساسية من سطر الأوامر:
pip install pandas numpy matplotlib jupyter
jupyter notebook
تعمل دفاتر Jupyter كمسودة تفاعلية: تكتب خلية كود، تشغلها، فتظهر النتيجة تحتها مباشرة، وهذا مثالي للتعلم لأنك ترى أثر كل خطوة. أنشئ مجلداً خاصاً لكل مشروع واحفظ فيه ملفات البيانات والدفاتر معاً.
أولى خطواتك مع Pandas
الكائن الأساسي في Pandas هو DataFrame، وهو جدول فيه أعمدة وصفوف. نبدأ بقراءة ملف واستكشافه (يُفترض أن لديك ملف students.csv فيه أعمدة مثل الاسم والمدينة والدورة والعلامة):
import pandas as pd
df = pd.read_csv("students.csv")
print(df.head()) # أول 5 صفوف
print(df.shape) # (عدد الصفوف, عدد الأعمدة)
print(df.info()) # أنواع الأعمدة والقيم المفقودة
print(df.describe()) # ملخص إحصائي للأعمدة الرقمية
تعطيك هذه الأوامر الأربعة صورة سريعة عن حجم البيانات ونوعيتها قبل أي تحليل. أما اختيار الأعمدة والصفوف فيتم هكذا:
df["city"] # عمود واحد
df[["name", "course"]] # عمودان
df[df["score"] >= 14] # صفوف تحقق شرطاً
df[(df["course"] == "IELTS") & (df["score"] > 12)]
تنظيف البيانات وتحليلها
معظم وقت محلل البيانات يذهب في التنظيف، لأن البيانات الحقيقية نادراً ما تكون نظيفة. المشاكل المعتادة هي القيم المفقودة والصفوف المكررة وأنواع الأعمدة غير الصحيحة:
df.isna().sum() # عدد القيم المفقودة في كل عمود
df = df.drop_duplicates() # حذف التكرار
df["score"] = df["score"].fillna(df["score"].median())
df["city"] = df["city"].str.strip().str.title()
df["date"] = pd.to_datetime(df["date"], errors="coerce")
بعد التنظيف تبدأ الأسئلة المفيدة. أداة groupby تجمع الصفوف حسب فئة وتحسب مؤشراً لكل فئة:
df.groupby("course")["score"].mean().sort_values(ascending=False)
df["city"].value_counts()
أخيراً ارسم النتيجة لتقرأها بالعين لا بالأرقام:
import matplotlib.pyplot as plt
df.groupby("course")["score"].mean().plot(kind="bar")
plt.title("Average score by course")
plt.tight_layout()
plt.show()
ملاحظة: نصوص الرسوم العربية قد تحتاج إعداد خط خاص في matplotlib، لذلك يُنصح المبتدئ بالعناوين الإنجليزية في البداية.
خارطة طريق لثمانية أسابيع
الأسبوعان 1-2: أساسيات Python: المتغيرات والقوائم والحلقات والدوال. تطبيق مقترح: حساب معدل قائمة علامات.
الأسبوعان 3-4: Pandas: القراءة والاستكشاف والتصفية. تطبيق مقترح: استكشاف ملف CSV لبيانات مفتوحة.
الأسبوعان 5-6: التنظيف والتجميع ودمج الجداول (merge). تطبيق مقترح: تنظيف ملف مبيعات أو تسجيلات طلبة.
الأسبوع 7: التصور البياني مع matplotlib. تطبيق مقترح: لوحة رسوم من ثلاثة مخططات.
الأسبوع 8: مشروع نهائي ونشره على GitHub. تطبيق مقترح: دفتر Jupyter مع شرح للاستنتاجات.
اختر بيانات من مجال تهتم به (رياضة، تعليم، مبيعات)، فالحماس يساعدك على الاستمرار. من مصادر بيانات مفتوحة شهيرة Kaggle وUCI Machine Learning Repository، والوثائق الرسمية لـ Pandas مرجع ممتاز.
خلاصة
تحليل البيانات مهارة تُكتسب بالممارسة: قراءة البيانات، ثم تنظيفها، ثم طرح سؤال واضح والإجابة عنه بالتجميع والرسم. ابدأ بمشروع صغير هذا الأسبوع. ولمن يرغب في تعلم منظم مع مرافقة، يقدم LingoLab Academy في غليزان دورات في المعلوماتية واللغات.