مكتبات البايثون لتحليل البيانات (٢)
انظر إلى الشيفرة البرمجية في الأعلى، حيث نمر على كل عمود في إطار البيانات باستخدام دلمة التكرار لطباعة اسمه مفرداً. النتائج أمامك تظهر أسماء الأعمدة مثل المنطقة الإدارية والمرحلة ونوع المدرسة ومجموع الطلبة. أما في الأسفل، فانظر إلى تنفيذ دلمة الوصف على إطار البيانات. هذه الوظيفة تعطيك جدولاً إحصائياً كاملاً لكل عمود رقمي؛ فعلى سبيل المثال، يظهر لك مجموع الطلبة في صف العد count، والمتوسط الحسابي في صف mean، والانحراف المعياري في صف std، إضافة إلى القيم الصغرى والعظمى والربيعيات عند النسب المئوية خمسة وعشرين بالمئة وخمسين بالمئة وخمسة وسبعين بالمئة. انظر إلى الأرقام تحت مجموع الطلبة؛ فالقيمة الصغرى هي صفر والعظمى تتجاوز ستة وثلاثين ألفاً، وهذا يعطيك لمحة سريعة ودقيقة عن تباين البيانات وتوزيعها في الجدول قبل البدء بتحليلها بعمق.
يقوم هذا الدرس على تمكينك من التعامل مع جداول البيانات الضخمة في لغة بايثون باستخدام مكتبة بائساس، حيث تتعلم كيف تختار أجزاء معينة من الجدول باستخدام وظيفتي loc و iloc، وكيف تصنف البيانات وتجمعها باستخدام دالة groupby لتطبيق عمليات رياضية مثل المجموع أو المتوسط، إضافة إلى تنظيف البيانات من الأخطاء والتكرارات عبر وظائف مثل duplicated و dropna. فكر في الأمر كأن لديك مستودع ضخم لملفات المدارس، وبدل أن تقرأ كل ورقة يدوياً، تكتب أمراً مثل data.loc لاختيار صفوف منطقة الرياض وحدها، أو data.groupby لتجمع أعداد الطلاب في كل منطقة برقم واحد دقيق.
الفكرة الأساسية
تخيل أن لديك جدولاً ضخماً يضم آلاف السطور عن مدارس المملكة، وتريد استخراج معلومات محددة بدلاً من قراءته سطراً سطراً. يعلمك هذا الدرس كيف تستخدم مكتبة بائساس في بايثون لتصفية البيانات، واختيار أجزاء منها، وتجميعها في مجموعات، وتنظيفها من القيم المكررة أو الفارغة للحصول على نتائج صحيحة.
الشرح
للوصول إلى البيانات، تستخدم طريقتين شهيرتين:
- طريقة loc: تختار الصفوف والأعمدة بناءً على مسمياتها المحددة مثل أسماء الأعمدة.
- طريقة iloc: تختار الصفوف والأعمدة بناءً على مواضع الأعداد الصحيحة ورقم الفهرسة الذي يبدأ دائماً من الرقم صفر.
لتصفية البيانات واختيار مجموعة جزئية، تستخدم الفهرسة المنطقية مع المعاملات مثل علامة & لتمثيل المعامل و و علامة | لتمثيل المعامل أو وعلامة ~ لتمثيل المعامل ليس. أما لتجميع البيانات بناءً على معايير معينة، فتستخدم وظيفة groupby وتطبق عليها دوال تجميعية مثل sum لحساب المجموع، أو mean لحساب المتوسط، أو max لمعرفة القيمة الأكبر، أو min لمعرفة القيمة الأصغر. ولتنظيف البيانات قبل تحليلها، تستخدم وظيفة duplicated للبحث عن الصفوف المكررة، ووظيفية isnull و dropna لاكتشاف الخلايا الفارغة وحذف الصفوف الفارغة.
مثال محلول خطوة بخطوة
إذا كان لديك جدول باسم data وتريد تجميع مجموع الطلاب وفقاً للمنطقة الإدارية، فأنت تطبق دالة التجميع على عمود مجموع الطلبة هكذا: studentsReg = data.groupby('المنطقة الإدارية')['مجموع الطلبة'].sum() هنا تقوم بايثون بما يأتي:
- تقسم الجدول الكبير إلى مجموعات بحسب اسم كل منطقة إدارية في العمود المذكور.
- تأخذ جميع الأرقام الموجودة في عمود مجموع الطلبة لكل منطقة على حدة.
- تجمع هذه الأرقام معاً وتنتج قيمة موجزة واحدة لكل منطقة، لتظهر لك في النهاية جدول جديد يضم اسم المنطقة وإلى جوارها المجموع الكلي لطلبتها.
أخطاء شائعة
- نسيان أن الفهرسة في بايثون تبدأ من الرقم صفر وليس من الرقم واحد، مما يجعلك تختار صفاً خاطئاً عند استخدام iloc.
- الخلط بين طريقة loc التي تعتمد على الأسماء وطريقة iloc التي تعتمد على أرقام المواضع.
- إهمال خطوة تنظيف البيانات وتفقد القيم المكررة أو الفارغة قبل البدء بالتحليل، مما يؤدي إلى الحصول على نتائج رقمية خاطئة تماماً.
سؤالان للتدريب مع الإجابة
السؤال الأول: ما الوظيفة التي تستخدمها لعرض بعض التفاصيل الإحصائية الأساسية لإطار البيانات مثل الانحراف المعياري والحد الأدنى والأقصى؟ الإجابة: وظيفة describe().
السؤال الثاني: اكتب الأمر البرمجي الذي تستخدمه للتحقق مما إذا كان إطار البيانات data يحتوي على بيانات مكررة لكل صف. الإجابة: data.duplicated()