4.3علم البيانات : NumPy و pandas و Matplotlib
الأساسي في 30 ثانية
- الثلاثي : NumPy يحسب بسرعة (مصفوفات موجهة)، وpandas يدبر الجداول (DataFrame)، وMatplotlib يُظهر (رسم واحد = رسالة واحدة).
- منهجية نبيل : افحص أولا (
head/info/describe/isna) ثم جمّع (groupby + sort= 80 % من التقارير) — أبدا العكس. - وجّه، ولا تحلق أبدا :
(df.montant * 1.2).mean()يعوض الحلقات، وبسرعة ×100 على مليون سطر.
حالة مصغرة متسلسلة — نبيل يجيب في 5 أسطر
تطلب الإدارة من نبيل، في الجزائر : «ما أفضل 5 مدن لدينا هذا الثلاثي ؟» فبدلا من يوم فرز في جدول، حمّل نبيل ملف CSV مع pandas، وفحص (head و info و isna للثغرات)، وجمّع حسب المدينة مع groupby والفرز، ثم رسم مخطط أشرطة معنونا. سُلّم الجواب في ساعة، وقابل لإعادة الإنتاج الثلاثي القادم بإعادة إطلاق السكربت. ثالث محطة في الخيط الرابط : المحلل الذي يجيب بسرعة، ويثبت ما يقدمه.
تتمة حالتي 4.1-4.2 — نبيل يحلل المبيعات التي يعرضها.
1. NumPy : يحسب بسرعة، وpandas : يدبر الجداول
يستبدل NumPy الحلقات بـ مصفوفات موجهة محسوبة بلغة C : (a * 1.2).mean() يعالج مليون سطر دفعة واحدة — بسرعة ×100 وبعُشر أسطر الكود. وpandas هو الجدول القابل للبرمجة : إطار البيانات (DataFrame) (جدول أسطر/أعمدة) يُحمَّل (read_csv)، ويُفحَص (head, info, describe, isna)، ويُرشَّح (df[df.ville == "Alger"])، ويُجمَّع (groupby(...).agg(...)) ويُدمَج (merge). ويفحص نبيل دائما قبل التحليل : الأنواع والقيم المفقودة ومراتب المقادير أولا — فالتنظيف هو أطول خطوة وأهمها.
2. Matplotlib : اعرض، ودفتر Jupyter
يحول Matplotlib الأرقام إلى رسالة : رسم واحد = رسالة واحدة، مع عنوان يقول الخلاصة («الجزائر تحمل 40 % من رقم الأعمال» بدلا من «رقم الأعمال حسب المدينة»). ويكفي df.plot() للاستكشاف ؛ وشكل متقن (عنوان، تسميات، مصدر) يصلح للتواصل. ويمزج دفتر (notebook) Jupyter الكود والنتائج والسرد : مثالي لاستكشاف التحليل وروايته خطوة بخطوة. ويتذكر نبيل القاعدة : pandas يعوض الجدول للأحجام الكبيرة والقابل لإعادة الإنتاج ؛ ويبقى الجدول مثاليا للأحجام الصغيرة المرئية السريعة.
هل تعلم ؟
الدب ليس سوى التميمة غير الرسمية لمحللي البيانات.
🔎 مثال ملموس — 🔎 مثال ملموس — أفضل مدن نبيل
تحليل نبيل الكامل في 5 أسطر :
df = pd.read_csv("ventes.csv")
print(df.info(), df.isna().sum()) # افحص أولا
top = df.groupby("ville")["montant"].sum().sort_values(ascending=False)
print(top.head()) # الجواب المرقم
top.head().plot(kind="bar", title="الجزائر تحمل جوهر رقم الأعمال")
القراءة : افحص ← جمّع ← اعرض، بهذا الترتيب.
الدرس : groupby + الفرز = 80 % من تقارير النشاط.
مفردات القسم
- NumPy
- مكتبة حساب على مصفوفات موجهة (عمليات بلغة C) : تعوض حلقات بايثون، وبسرعة ×100 على الأحجام الكبيرة.
مثال بسيط: يطبق نبيل تخفيضا على مليون مبلغ في سطر واحد.
ما ليس كذلك: حلقة for تعالج الأسطر واحدا واحدا.
رد فعل: متى حلقت على أرقام، ابحث عن العملية الموجهة.
- pandas / إطار البيانات (DataFrame)
- جدول قابل للبرمجة : إطار البيانات (جدول أسطر/أعمدة) يحمّل البيانات ويرشحها ويجمّعها ويدمجها — read_csv و groupby و merge.
مثال بسيط: يجمّع نبيل مبيعاته حسب المدينة في سطرين.
ما ليس كذلك: فرز يدوي مكرر في جدول.
رد فعل: افحص (head/info/isna) قبل أي تحليل.
- التجميع (groupby) + التجميع
- تجميع الأسطر حسب فئة ثم تلخيصها (المجموع، المعدل) : الخطوة التي تنتج 80 % من التقارير.
مثال بسيط: رقم الأعمال حسب المدينة عند نبيل : groupby المدينة، ومجموع المبالغ، والفرز.
ما ليس كذلك: مجاميع معاد حسابها يدويا عند كل طلب.
رد فعل: سؤال حسب فئة ؟ groupby أولا.
- Matplotlib
- مكتبة رسوم : رسم واحد = رسالة واحدة، مع عنوان يقول الخلاصة.
مثال بسيط: يعنون نبيل مخطط أشرطته بالخلاصة، لا مجرد «رقم الأعمال حسب المدينة».
ما ليس كذلك: عشرة رسوم زخرفية دون رسالة.
رد فعل: عنوان-رسالة وتسميات ومصدر — وإلا فهو زخرفة.
في التطبيق — عمليا — تحليل CSV من البداية إلى النهاية
- حمّل ملفا CSV مع pd.read_csv وافحص : head و info و describe و isna().sum() — ودوّن الأنواع والثغرات.
- نظف الحد الأدنى الحيوي : أنواع التواريخ/المبالغ، والقيم المفقودة مبلغ عنها أو معالجة.
- رشّح (df[condition]) ثم جمّع (groupby + agg + الفرز) للإجابة عن سؤال دقيق واحد.
- ارسم مخططا واحدا بعنوان-رسالة، ثم أعد إطلاق السكربت كله دفعة واحدة لتثبت أنه قابل لإعادة الإنتاج.
نص جاهز للقول — عرض تحليله (30 ثانية)
«معكم نبيل : حمّلت المبيعات، وفحصت الثغرات والأنواع، ثم جمّعت حسب المدينة — فالجزائر تحمل جوهر الثلاثي. يُعاد إطلاق السكربت كما هو الثلاثي القادم، والرسم يقول الخلاصة في عنوانه.»
يُقال في مراجعة النشاط ؛ واعرض الرسم لا الكود.
نموذج نسخ-لصق — تحليل pandas (كود مختبر)
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("ventes.csv")
# 1. افحص أولا : الأنواع والثغرات ومراتب المقادير
print(df.head())
print(df.info())
print(df.describe())
print(df.isna().sum())
# 2. رشّح : مبيعات الجزائر هذا الثلاثي
alger = df[df["ville"] == "Alger"]
# 3. جمّع : رقم الأعمال حسب المدينة، مرتبا (80 % من التقارير)
top = df.groupby("ville")["montant"].sum().sort_values(ascending=False)
print(top.head())
# 4. اعرض : رسم واحد = رسالة واحدة
top.head().plot(kind="bar", title="الجزائر تحمل جوهر رقم الأعمال")
plt.tight_layout()
plt.savefig("top-villes.png")
ملف صغير
بضع مئات من الأسطر ؟ يبقى الجدول أسرع — واحتفظ بـ pandas للقابل لإعادة الإنتاج.
تقرير شهري
مثل نبيل : سكربت يحمّل ويفحص ويجمّع ويصدّر — يُعاد إطلاقه كل شهر دون لمسه.
مليون سطر
وجّه كل شيء (لا for أبدا على الأسطر) : فـ NumPy/pandas بلغة C تنجز في ثوان ما تنجزه الحلقات في دقائق.
استكشاف حر
اشتغل في دفتر Jupyter : الكود والنتائج والسرد جنبا إلى جنب للبحث قبل الاستنتاج.
✓ ممارسات جيدة
- افحص (head/info/describe/isna) قبل التحليل.
- وجّه : لا حلقة أبدا على ملايين الأسطر.
- رسم واحد = رسالة واحدة، وعنوان يستنتج.
✗ أخطاء شائعة
- التحليق بـ for على ملايين الأسطر.
- التحليل دون فحص الأنواع والثغرات.
- تكثير الرسوم دون رسالة.
النقاط الأساسية
- الثلاثي : NUMPY (حساب موجه) / PANDAS (جداول) / MATPLOTLIB (رسوم).
- إطار البيانات = جدول قابل للبرمجة : read_csv و head و describe و groupby و merge.
- المنهجية : افحص ← جمّع ← اعرض ؛ والتنظيف = أطول خطوة.
- JUPYTER = سرد التحليل ؛ ورسم واحد = رسالة واحدة بعنوان-خلاصة.
تحدي 48 ساعة — طبق غدا
خذ ملف CSV حقيقيا واحدا من عملك : افحصه، وأجب عن سؤال واحد عبر groupby، وسلّم رسم مخططا معنونا-رسالة.
- أستطيع ذكر NumPy و pandas/إطار البيانات و Matplotlib.
- أعرف فحص CSV ثم تجميعه.
- عندي تحليل قابل لإعادة الإنتاج مع رسم-رسالة واحد.
أسئلة شائعة
هل يعوض pandas برنامج Excel ؟
للأحجام الكبيرة والقابل لإعادة الإنتاج : نعم — فسكربت يعيد في ثوان ما يعيده الجدول في ساعات، دون خطأ نسخ-لصق. وللأحجام الصغيرة المرئية والسريعة : لا — فيبقى الجدول لا يُضاهى. يستعمل نبيل الاثنين : pandas للتقارير الشهرية، والجدول لنظرة سريعة.
هل يلزم التفوق في الرياضيات لعلم البيانات ؟
لا في هذه المرحلة : تكفي أسس الإحصاء (المعدل والوسيط والتوزيع) للفحص والتجميع مع pandas. وتصير الرياضيات المتقدمة (الجبر والاحتمالات) مفيدة في 4.4 لاختيار نماذج تعلم الآلة وضبطها.
ما البنية في قلب pandas ؟