الإحصاء والتحليل الكميالبرمجة بلغة بايثونعلم البيانات

كيفية إنشاء جداول التكرار في بايثون

دليل أكاديمي شامل ومفصل حول كيفية إنشاء جداول التكرار الأحادية والمتقاطعة في بايثون باستخدام مكتبة Pandas والتمثيل البياني المتقدم للبيانات.

تاريخ النشر

يمثل التحليل الإحصائي الاستكشافي حجر الزاوية في فهم بنية البيانات وتفسير الظواهر المعقدة الكامنة خلف الأرقام والمدخلات الفئوية. وفي هذا السياق، تبرز جداول التكرار بوصفها إحدى أقدم وأنجع الأدوات المنهجية في الإحصاء الوصفي، حيث تتيح للباحثين والمحللين تحويل البيانات الخام المبعثرة إلى ملخصات هيكلية منظمة تكشف بوضوح عن أنماط التكرار والتركز والتشتت. ومن خلال هذه الجداول، يمكن الانتقال بسلاسة من الملاحظات الفردية المعزولة إلى رؤية بانورامية شاملة تعكس سلوك المتغيرات الإحصائية المختلفة، سواء كانت متغيرات نوعية تصنيفية أو كمية متصلة تم تقطيعها وفق معايير حسابية محددة.

ومع التطور المتسارع في علوم البيانات والذكاء الاصطناعي، أصبحت لغة Python المنظومة البرمجية الأكثر هيمنة على بيئات المعالجة الإحصائية المتقدمة، متفوقة على العديد من الأدوات التقليدية بفضل مرونتها الفائقة ونظامها البيئي الغني بالمكتبات المتخصصة. توفر بايثون عبر مكتبات رائدة مثل Pandas و NumPy ترسانة برمجية متكاملة تتيح إنشاء جداول التكرار بمختلف مستوياتها، بدءاً من الجداول البسيطة أحادية الاتجاه وصولاً إلى الجداول المتقاطعة متعددة الأبعاد، وبكفاءة حسابية عالية قادرة على معالجة ملايين السجلات في أجزاء من الثانية.

يهدف هذا الدليل المرجعي الشامل إلى استعراض كافة المفاهيم الرياضية والتقنيات البرمجية اللازمة لبناء وتحليل وتخصيص جداول التكرار في بايثون بأسلوب منهجي وأكاديمي رصين. سنتناول عبر فصول هذا المقال المفاهيم النظرية للإحصاء الوصفي، والوظائف البرمجية المتقدمة لمعالجة البيانات الفئوية والمستمرة، وتطبيقات الاحتمال الشرطي، واختبارات الفرضيات الاستدلالية مثل اختبار كاي تربيع، مع تسليط الضوء على أفضل الممارسات البرمجية لتحسين الأداء وتفادي الأخطاء الشائعة في التقارير الإحصائية الميدانية.

1. مقدمة شاملة حول جداول التكرار وأهميتها الإحصائية

1.1 المفهوم النظري لجدول التكرار في الإحصاء الوصفي

يُعرَّف جدول التكرار (Frequency Distribution Table) في الأدبيات الإحصائية بأنه تمثيل جدولي منظم يلخص تكرار ظهور القيم أو الفئات المختلفة لمتغير عشوائي ضمن عينة أو مجتمع إحصائي محدد. وتكمن الوظيفة الأساسية لهذا الجدول في اختزال الحجم الهائل من البيانات الأولية دون الإخلال بخصائصها الجوهرية، مما يمنح الباحث وسيلة مباشرة لفهم معالم التوزيع الاحتمالي التجريبي وتحديد القيمة المنوالية (Mode) والتباين الظاهري بين الفئات المدروسة. سواء كان المتغير قيد الدراسة فئوياً اسمياً (Nominal) كالجنس أو الحالة الاجتماعية، أو رتبياً (Ordinal) كمستويات التعليم ودرجات الرضا، فإن جدول التكرار يشكل الخطوة الأولى الإلزامية في أي مسار تحليلي جاد.

يتفرع مفهوم التكرار إلى ثلاثة مقاييس رئيسية تتكامل فيما بينها لتوفير قراءة دقيقة للمشهد الإحصائي. المقياس الأول هو التكرار المطلق (Absolute Frequency)، وهو العدد الفعلي البسيط لمرات ظهور مشاهدة معينة في مجموعة البيانات. ورغم أهميته المباشرة، إلا أنه قد يفتقر إلى الدلالة المقارنة إذا اختلفت أحجام العينات، وهنا يبرز المقياس الثاني وهو التكرار النسبي (Relative Frequency)، والذي يُحسب بقسمة التكرار المطلق لفئة ما على إجمالي حجم العينة الكلي، وغالباً ما يُعبر عنه بنسبة مئوية تمثل الاحتمال التجريبي لحدوث تلك الفئة. أما المقياس الثالث فهو التكرار التراكمي (Cumulative Frequency)، ويُستخدم حصرياً مع البيانات الرتبية والكمية لبيان مجموع التكرارات (المطلقة أو النسبية) لتلك الفئة وجميع الفئات السابقة لها في الترتيب، وهو ما يفيد في تحديد المئينات والوسيط وتوزيع التراكم.

تكتسب جداول التكرار أهمية استثنائية في الأبحاث الاجتماعية والسلوكية ودراسات استطلاع الرأي، حيث تمثل الاستبيانات أداة جمع البيانات الأكثر شيوعاً. من خلال هذه الجداول، يستطيع الباحث قياس مدى تشتت إجابات المبحوثين، واكتشاف الانحيازات المنهجية، وتقييم جودة الصدق والثبات للفقرات المقاسة. كما تساهم الجداول التكرارية في استكشاف البيانات الاستكشافي (EDA) عبر الكشف السريع عن القيم الشاذة (Outliers) أو المدخلات الخاطئة الناتجة عن أخطاء الإدخال البشري، مما يجعلها خط دفاع أول لضمان جودة البيانات قبل الانتقال إلى مراحل النمذجة الرياضية المتقدمة والتنبؤ الإحصائي.

1.2 دور لغة بايثون في المعالجة الإحصائية للبيانات

تبوأت لغة بايثون مكانة الصدارة في مجالات الحوسبة العلمية وتحليل البيانات بفضل فلسفتها القائمة على البساطة الهيكلية والقابلية العالية للقراءة، مقترنة بقدرات توسعية مذهلة تدعمها مكتبات مفتوحة المصدر عالية التحسين مبنية في جوهرها على لغات منخفضة المستوى مثل C و Fortran. في سياق المعالجة الإحصائية، توفر بايثون بيئة موحدة تدمج بين جمع البيانات، ومعالجتها، واستخلاص الإحصاءات الوصفية، والنمذجة التعلمية، وإنتاج التقارير التفاعلية، مما يلغي الفجوة التقليدية بين بيئات التحليل الاستكشافي وبيئات الإنتاج البرمجي والتطبيقي في المؤسسات الأكاديمية والشركات التقنية.

يرتكز النظام البيئي لبايثون الموجه للبيانات على ثالوث برمجي متين: مكتبة NumPy التي توفر هياكل المصفوفات متعددة الأبعاد وتدعم العمليات الرياضية المتجهية بسرعة فائقة، ومكتبة Pandas التي تمثل العمود الفقري للتعامل مع البيانات الجدولية من خلال كائنات أطر البيانات (DataFrames) والسلاسل (Series)، ومكتبة SciPy المتخصصة في الخوارزميات العلمية والاختبارات الإحصائية الاستدلالية المتقدمة. يتيح هذا التكامل التلقائي للمحلل بناء جداول تكرار معقدة وحساب المقاييس الإحصائية المشتقة بخطوات برمجية موجزة للغاية تتميز بالكفاءة التجريدية العالية والسرعة التنفيذية الفائقة.

عند مقارنة بايثون بالبرمجيات الإحصائية الاحتكارية التقليدية مثل SPSS، تتفوق بايثون بقدرتها اللامحدودة على أتمتة العمليات الإحصائية (Pipeline Automation)، ومعالجة مجموعات البيانات الضخمة التي تعجز الذاكرة التقليدية لبرامج النقر عبر القوائم عن استيعابها، فضلاً عن مجانيتها التامة وانفتاحها للتطوير المستمر. أما عند مقارنتها بلغة R، ورغم أن R صُممت في الأصل من قِبل إحصائيين وتتمتع بثرائها الحزمي الأكاديمي، إلا أن بايثون تتميز عنها بتنوع استخداماتها وتكاملها الأسهل مع بيئات الويب وقواعد البيانات وخطوط الإنتاج السحابية، مما يجعلها المهارة الأوسع انتشاراً والأكثر طلباً في المشهد التكنولوجي الحديث.

2. تهيئة بيئة العمل البرمجية واستيراد المكتبات الأساسية

2.1 تثبيت وإعداد مكتبة Pandas و NumPy

يتطلب الشروع في بناء جداول التكرار إعداد بيئة عمل برمجية مستقرة ومتوافقة. يتم تثبيت مكتبات معالجة البيانات الأساسية عادةً عبر مدير الحزم القياسي في بايثون pip من خلال تنفيذ الأوامر الخاصة بتثبيت pandas و numpy. كما يفضل العديد من الباحثين في المجالات الأكاديمية وعلوم البيانات استخدام منصة Anaconda وتوزيعة conda التي تتكفل بإدارة التبعيات البرمجية المعقدة والبيئات الافتراضية المعزولة، مما يحول دون حدوث تعارض بين إصدارات المكتبات المثبتة على نظام التشغيل.

وفق الأعراف والتقاليد البرمجية الراسخة والمعيارية المعترف بها في مجتمع بايثون، يتم استيراد مكتبة Pandas بالاسم المختصر pd واستيراد مكتبة NumPy بالاسم المختصر np. يساعد هذا التوحيد الاصطلاحي على تحسين وضوح الشيفرة البرمجية وتسهيل تبادلها بين الباحثين والمطورين حول العالم. إن استخدام هذه الاختصارات لا يقتصر فقط على اختصار عدد الأحرف المكتوبة، بل يمثل معياراً هيكلياً يتيح الاستفادة من آلاف التوثيقات والمراجع العلمية المتاحة عبر الإنترنت بسهولة ويسر.

من الضروري أيضاً في سياقات البحث العلمي والعمل المؤسسي التأكد من توافق الإصدارات البرمجية للبيئة المستخدمة. يمكن استدعاء الخاصية __version__ التابعة للمكتبات للتأكد من استخدام إصدارات حديثة تدعم أحدث الدوال الحسابية وتحسينات الأداء، لا سيما في الإصدارات الأحدث من مكتبة Pandas (مثل الإصدار 2.0 فما فوق) التي شهدت تحسينات جذرية في دعم أنواع البيانات السهمية المتطورة (Apache Arrow) وأنواع البيانات الفئوية (Categorical)، والتي تؤثر تأثيراً مباشراً على استهلاك الذاكرة وسرعة إنتاج الجداول التكرارية.

2.2 بناء وهيكلة مجموعات البيانات التجريبية

لبناء فهم تطبيقي متين لكيفية توليد جداول التكرار، يقوم المحلل في العادة بإنشاء سلاسل بيانات تجريبية (Pandas Series) تمثل متغيراً فردياً معزولاً، أو بناء أطر بيانات متعددة المتغيرات (DataFrames) تحاكي استبياناً إحصائياً شاملاً. السلسلة في Pandas هي مصفوفة أحادية البعد قادرة على حمل أي نوع من البيانات، ويمكن ملؤها ببيانات اسمية مثل الفئات العمرية أو الحالة الوظيفية أو التخصصات الجامعية، مع إمكانية تحديد نوع البيانات الفئوي category لرفع الكفاءة التشغيلية.

في الحالات الأكثر تعقيداً والشبيهة بالمشروعات الواقعية، يتم تجميع مصفوفات وسلاسل متعددة داخل إطار بيانات (DataFrame) ثنائي الأبعاد يتكون من صفوف تمثل وحدات المعاينة (المبحوثين أو المشاهدات) وأعمدة تمثل المتغيرات المقاسة. يمكن لمحاكاتنا البرمجية أن تتضمن متغيرات ديموغرافية، وأخرى سلوكية، ومتغيرات تقييمية مستمرة. كما تدعم بايثون استدعاء دوال التوليد العشوائي الموزعة وفق احتمالات محددة مسبقاً باستخدام np.random.choice لاختبار سلوك الخوارزميات على عينات اصطناعية ذات خصائص معلومة.

بالإضافة إلى توليد البيانات افتراضياً، توفر مكتبة Pandas أدوات فائقة السلاسة لاستيراد مجموعات البيانات الميدانية الضخمة المخزنة بتنسيقات متعددة مثل الملفات المفصولة بفواصل (CSV) عبر الدالة pd.read_csv()، وملفات الجداول الإلكترونية (Excel) عبر pd.read_excel()، وقواعد البيانات العلائقية عبر دوال SQL. تتضمن هذه الدوال معاملات متقدمة لتحديد الفواصل النصية، وضبط ترميز النصوص العالمية (مثل UTF-8 للنصوص العربية)، وتحديد الأعمدة المستهدفة وأنواع البيانات المبدئية، مما يضمن تهيئة المادة الخام للتحليل الإحصائي بكفاءة وتجرد.

3. إنشاء جدول التكرار أحادي الاتجاه لسلاسل البيانات (Series)

3.1 استخدام دالة value_counts() الأساسية

تُعد دالة value_counts() التابعة لكائنات السلاسل في مكتبة Pandas الأداة البرمجية المباشرة والأكثر شيوعاً لحساب التوزيع التكراري أحادي الاتجاه (One-Way Frequency Table). بمجرد تطبيق هذه الدالة على سلسلة بيانات تمثل متغيراً معيناً، تبدأ خوارزمية الدالة بفحص عناصر السلسلة وتجميع العناصر المتطابقة معاً ثم حساب عدد المرات التي ظهرت فيها كل فئة من الفئات الفريدة، لتعيد في النهاية كائناً جديداً من نوع Series يحتوي على الفئات كمفاتيح للفهرس (Index) والأعداد المحسوبة كقيم تكرارية (Values).

تتميز دالة value_counts() بأنها تقوم افتراضياً بترتيب المخرجات تنازلياً وفقاً لقيمة التكرار المطلق، مما يضع الفئة الأكثر تكراراً (المنوال) في أعلى الجدول، متبوعة بالفئات الأقل تكراراً على التوالي. تتيح هذه الآلية التلقائية للباحث تحديد النمط المركزي للبيانات بلمحة بصرية واحدة دون الحاجة إلى تطبيق دوال ترتيب إضافية. كما أن معالجة الدالة تتم على المستوى المترجم في لغة C، مما يمنحها أداءً زمنياً يقترب من الخطية الحسابية O(n)، حيث يمثل n حجم العينة الكلي.

إن قراءة المخرجات الناتجة عن هذه الدالة تتطلب فهماً لبنية كائن السلسلة في Pandas؛ حيث يمثل العمود الأيسر مسميات الفئات (مثل: “نعم”، “لا”، “ربما”) بينما يمثل العمود الأيمن التكرار المطلق المقابل لكل فئة. ينتهي التقرير بتحديد نوع البيانات الداخلي للتكرارات والذي يكون افتراضياً عدداً صحيحاً (int64)، مما يؤكد سلامة العد العددي وخلوه من الكسور أو أخطاء التقييم الحسابي البسيط.

3.2 التحكم في ترتيب وتصنيف النتائج (Sorting)

على الرغم من الفائدة التحليلية للترتيب التنازلي التلقائي حسب التكرار، إلا أن بعض الدراسات الإحصائية تتطلب الحفاظ على ترتيب ظهور البيانات كما هي في المسح الأصلي، أو تتطلب ترتيباً تصاعدياً، أو ترتيباً أبجدياً ومنطقياً للفئات. يمكن التحكم في هذا السلوك بسهولة عبر المعامل sort؛ فعند تمرير القيمة المنطقية sort=False للدالة، تمتنع الدالة عن ترتيب النتائج وفق حجم التكرار، وتعيد الفئات حسب ترتيب أول ظهور لكل منها في مصفوفة البيانات الأصلية.

في المقابل، إذا رغب المحلل في عرض الفئات الأقل تكراراً أولاً للتركيز على الظواهر النادرة أو الفئات ذات التمثيل الضعيف في العينة، يمكنه تفعيل المعامل ascending=True. يؤدي هذا الخيار إلى قلب مصفوفة النتائج لتصبح مرتبة تصاعدياً من أصغر تكرار إلى أكبر تكرار، وهو ما يعد مفيداً في تحليلات الكشف عن الاحتيال أو مراقبة الجودة الصناعية حيث تكون الحالات النادرة والعيوب المصنعية هي محور الاهتمام الأساسي للبحث.

علاوة على ذلك، في حالة المتغيرات الرتبية مثل مستويات الرضا (مثلاً: “ضعيف”، “متوسط”، “جيد”، “ممتاز”) أو المراحل التعليمية، يصبح الترتيب وفق حجم التكرار غير منطقي من الناحية الإحصائية ويشوش تسلسل المعنى. في مثل هذه الحالات، يتم تطبيق دالة sort_index() بعد دالة value_counts()، والتي تقوم بإعادة ترتيب الأسطر بناءً على الترتيب الأبجدي أو الترتيب الفئوي المحدد مسبقاً في فهرس السلسلة، مما يعيد للجدول تسلسله المنطقي السليم الذي يسهل إدراجه في التقارير الأكاديمية.

4. التحكم المتقدم في مخرجات دالة value_counts

4.1 حساب التكرارات النسبية والنسب المئوية

في معظم التطبيقات الإحصائية والمسوح الديموغرافية، لا يقدم التكرار المطلق وحده صورة مكتملة المعالم، خاصة عند الحاجة إلى مقارنة عينتين مختلفتين في الحجم أو عند كتابة استنتاجات قائمة على التقدير الاحتمالي. تتيح دالة value_counts() حل هذه المعضلة عبر المعامل الرياضي normalize. عند ضبط هذا المعامل ليأخذ القيمة المنطقية normalize=True، تتحول الدالة تلقائياً من حساب الأعداد الصحيحة إلى قسمة كل تكرار فئوي على مجموع التكرارات الكلية، لتعيد جدولاً يمثل التكرار النسبي (الاحتمال التجريبي) بحيث تنحصر جميع القيم الناتجة بين الصفر والواحد الصحيح ويكون مجموعها النهائي مساوياً تماماً للرقم 1.0.

لتحويل هذه النسب العشرية إلى نسب مئوية سهلة القراءة في التقارير الإدارية والأكاديمية، يمكن ببساطة ضرب المخرجات بالرقم 100، أو تطبيق دوال التنسيق النصي في بايثون لتقريب الفواصل العشرية باستخدام round(2) لإظهار منزلتين عشريتين فقط مع إضافة رمز النسبة المئوية. يمنح هذا الإجراء مرونة هائلة في التعبير عن البيانات؛ حيث تصبح القراءة التقريرية مثلاً: “65.40% من العينة يفضلون الخيار الأول” بدلاً من الاكتفاء بالقول إن “654 مبحوثاً يفضلون الخيار الأول”، وهو ما يعزز القيمة التفسيرية للنتائج.

تقتضي المنهجية الإحصائية المقارنة الجمع بين التكرارين في جدول واحد متكامل؛ حيث يوضع التكرار المطلق في عمود، والتكرار النسبي المئوي في عمود موازٍ له، يليهما التكرار التراكمي المحسوب باستخدام دالة cumsum() الرياضية. يضمن هذا العرض الثلاثي تغطية كافة أبعاد المتغير المدروس ويزود القارئ برؤية شاملة تتيح له التحقق من الحجم الفعلي للعينة ومن الأوزان النسبية لكل قطاع سكاني أو سلوكي في آن واحد.

4.2 معالجة القيم المفقودة (Missing Values / NaN)

تعد مشكلة القيم المفقودة (Missing Data / NaN) إحدى الظواهر الحتمية في الأبحاث التطبيقية الميدانية، وتنتج إما عن امتناع المبحوث عن الإجابة، أو تلف بعض السجلات أثناء التحويل الرقمي، أو عدم انطباق السؤال على شريحة معينة. تقوم دالة value_counts() في مكتبة Pandas افتراضياً بإسقاط وتجاهل كافة القيم المفقودة (dropna=True)، مما يعني أن التكرارات المحسوبة والنسب المئوية الناتجة ستعبر فقط عن البيانات المكتملة المتوفرة، متجاهلة تماماً حجم الفقد في المتغير.

غير أن هذا السلوك الافتراضي قد يؤدي إلى انحياز إحصائي خطير وتفسيرات مضللة إذا كانت نسبة الفقد مرتفعة أو لم تكن مفقودة عشوائياً بالكامل (MCAR). لتفادي هذه الفجوة التحليلية، يتيح المعامل dropna=False إجبار الدالة على تضمين القيم المفقودة وحساب تكرارها الصريح كفئة مستقلة في الجدول. يكشف هذا التضمين على الفور حجم البيانات غير المسجلة ومقارنتها ببقية الفئات، مما يتيح تقييم مصداقية الاستبيان أو الأداة القياسية المستخدمة.

في الأبحاث النفسية والاجتماعية المتقدمة، يُعد تحليل نمط القيم المفقودة جزءاً لا يتجزأ من التقرير الإحصائي النهائي؛ فإذا أظهر جدول التكرار أن 30% من المبحوثين اختاروا عدم الإجابة على سؤال معين، فإن هذه المعلومة بذاتها تعد مؤشراً سلوكياً جوهرياً قد يعكس حساسية السؤال أو عدم وضوح صياغته اللغوية. لذلك، يجب على المحلل البرمجي دائماً فحص المتغير مع تفعيل dropna=False قبل اتخاذ أي قرار بحذف الصفوف الفارغة أو تعويضها إحصائياً (Imputation).

5. إنشاء جداول التكرار أحادية الاتجاه لأطر البيانات (DataFrames)

5.1 تطبيق value_counts على أعمدة DataFrame محددة

عند التعامل مع أطر البيانات المتكاملة التي تحتوي على عشرات المتغيرات المترابطة، يمكن استدعاء دالة value_counts() بعدة أساليب منهجية. الأسلوب المباشر يتمثل في الوصول إلى العمود المستهدف ككائن سلسلة معزول باستخدام صيغة الأقواس المربعة df['column_name'].value_counts()، أو باستخدام خاصية النقطة df.column_name.value_counts(). يضمن هذا النهج الفردي استخراج التوزيع التكراري الدقيق للمتغير المعني مع الحفاظ على سرعة المعالجة واستقلالية المتغير.

في المشاريع الاستكشافية التي تتطلب إنتاج جداول تكرار لعدة أعمدة فئوية متزامنة، يمكن استخدام الحلقات التكرارية (For Loops) أو دوال التطبيق الشامل مثل apply() للمرور على قائمة محددة من الأعمدة. يسمح هذا التكرار البرمجي بتوليد سلسلة من التقارير الإحصائية المتتالية وطباعتها أو حفظها في هياكل تخزينية منظمة، مما يوفر وقتاً كبيراً ويقلل من تكرار الشيفرة البرمجية (DRY Principle).

لتحسين إمكانية الاستخدام اللاحق لمخرجات التكرار وربطها بعمليات دمج وتصدير متقدمة، يفضل تحويل المخرجات من كائن Series إلى DataFrame مستقل ومنسق. يتحقق ذلك عبر استخدام دالة reset_index() التي تحول الفئات من مجرد فهرس نصي إلى عمود بيانات رسمي، مع إمكانية استخدام دالة rename() لتسمية الأعمدة الناتجة بمسميات واضحة مثل “الفئة” و”التكرار المطلق”، مما يجعل الجدول مهيأً تماماً للإدراج المباشر في التقارير التنفيذية والبيئات التفاعلية.

5.2 استخدام الدالة التجميعية groupby() لإنشاء التكرارات

توفر مكتبة Pandas نمطاً بنيوياً قوياً ومكافئاً لإنشاء جداول التكرار يستند إلى إطار عمل التجميع المعروف باسم (Split-Apply-Combine)، وذلك باستخدام الدالة التجميعية groupby(). عند كتابة التعبير البرمجي df.groupby('column').size()، يقوم المحرك البرمجي بتقسيم إطار البيانات إلى مجموعات فرعية بناءً على الفئات الفريدة للمتغير المختار، ثم يطبق دالة الحساب الحجمي ليعيد عدد الصفوف التابعة لكل مجموعة، وهو ما يطابق رياضياً مفهوم التكرار المطلق.

من المهم جداً للمحلل الإحصائي استيعاب الفارق الدقيق بين دالتي size() و count() داخل سياق التجميع عبر groupby(). تقوم دالة size() بحساب الحجم الكلي للمجموعة بما في ذلك الصفوف التي تحتوي على قيم مفقودة (NaN)، بينما تقتصر دالة count() على حساب المشاهدات غير الفارغة فقط داخل كل عمود. هذا التمييز الرياضي يحدد الدقة الحسابية للجدول، فاستخدام الدالة الأولى يضمن احتساب الحجم الإجمالي الدقيق لصفوف العينة بينما تكشف الثانية عن مواضع الفقد الجزئي داخل كل فئة فرعية.

يمتاز نهج groupby() بمرونة استثنائية تفوق دالة value_counts() في بعض الحالات المعقدة، حيث يتيح للمحلل دمج حساب التكرارات مع مقاييس إحصائية أخرى في نفس السطر البرمجي باستخدام دالة التجميع المتعدد agg(). على سبيل المثال، يمكن للمحلل استخراج التكرار المطلق، إلى جانب المتوسط الحسابي، والانحراف المعياري لمتغير رقمي تابع، كل ذلك ضمن جدول مدمج وموحد يسهل قراءته ومقارنة مؤشراته.

6. إنشاء الجداول المتقاطعة ثنائية الاتجاه باستخدام pd.crosstab

6.1 البنية التركيبية لدالة crosstab() ومحدداتها

عند الانتقال من تحليل المتغيرات المعزولة إلى دراسة العلاقات الثنائية والاقتران بين متغيرين فئويين، تصبح الجداول المتقاطعة ثنائية الاتجاه (Two-Way Contingency Tables) الأداة الإحصائية الأهم. توفر مكتبة Pandas الدالة المستقلة pd.crosstab() المصممة خصيصاً لبناء هذه المصفوفات التقاطعية المعقدة. تقبل هذه الدالة معاملين أساسيين وإلزاميين: المعامل الأول هو index الذي يستقبل المتغير الفئوي المراد توزيعه على الصفوف، والمعامل الثاني هو columns الذي يستقبل المتغير الفئوي المراد توزيعه على الأعمدة.

تقوم الدالة بحساب التكرار المشترك (Joint Frequency) لكل توليفة ممكنة من فئات المتغيرين، بحيث تمثل كل خلية ناتجة داخل المصفوفة عدد الحالات التي تشترك في صفة الصف وصفة العمود معاً. كما تتيح الدالة معاملات إضافية لتخصيص أسماء المحاور مثل rownames و colnames، مما يمنح المخرجات عناوين وصفية واضحة تمنع أي التباس مفاهيمي أثناء قراءة الجدول وعرضه على الباحثين وصناع القرار.

تتميز بنية دالة pd.crosstab() بالمرونة الرياضية العالية؛ فهي لا تشترط أن تكون المتغيرات المدخلة مأخوذة من نفس إطار البيانات، بل يمكن تمرير سلاسل مستقلة أو مصفوفات NumPy مجردة طالما أنها تتطابق في الطول الإجمالي ومحاذاة الفهارس. تُشكل المصفوفة الناتجة كائن DataFrame ثنائي الأبعاد يمكن إخضاعه مباشرة لكافة عمليات الفلترة الحسابية والاستعلام الإحصائي وإعادة التشكيل الهندسي.

6.2 تحليل جداول الاقتران في الأبحاث والبيانات المسحية

تمثل جداول الاقتران حجر الأساس في البحوث المسحية والتطبيقية؛ إذ تسمح بالتقييم الظاهري للعلاقة الارتباطية بين الخصائص الديموغرافية (مثل النوع، الفئة العمرية، المستوى التعليمي) والأنماط السلوكية أو الاتجاهات النفسية والسياسية. على سبيل المثال، يتيح تقاطع متغير “المستوى التعليمي” مع متغير “الموافقة على سياسة معينة” معرفة ما إذا كان التأييد يتركز في فئات تعليمية محددة أم أنه موزع بالتساوي عبر كافة شرائح المجتمع المدروس.

تتطلب القراءة العلمية السليمة لخلايا جدول الاقتران فحص التكرارات المشتركة مقارنة بحجم العينات الفرعية؛ فالأرقام المطلقة الصرفة داخل الخلايا قد تكون خادعة إذا كانت أحجام المجموعات الصفية أو العمودية غير متوازنة في العينة الأصلية. إذا كان عدد الذكور في الاستبيان يفوق عدد الإناث بأربعة أضعاف، فإن مجرد زيادة التكرار المطلق في خلايا الذكور لا يعني بالضرورة وجود ارتباط حقيقي أو سلوك مغاير للإناث دون الرجوع إلى الحسابات النسبية المعايرة.

لذلك، تُعد جداول الاقتران في بايثون الخطوة التمهيدية الأولى التي تسبق تطبيق الاختبارات الإحصائية الاستدلالية مثل اختبار استقلالية كاي تربيع (Chi-Square Test of Independence) أو حساب معاملات الاقتران والارتباط الفئوي مثل معامل فاي (Phi) ومعامل كرامر (Cramér’s V). يوفر جدول التكرار المشاهد المادة الرقمية الخام التي تعتمد عليها خوارزميات الحسابات الاستدلالية لتأكيد أو نفي وجود دلالة إحصائية للعلاقة الملاحظة.

7. الحسابات المتقدمة في الجداول المتقاطعة (المجاميع والنسب)

7.1 إضافة المجاميع الهامشية (Marginal Totals)

تشكل المجاميع الهامشية (Marginal Distributions) عنصراً حيوياً في أي جدول اقتران إحصائي متكامل؛ حيث تعبر عن مجموع التكرارات لكل صف عبر كافة الأعمدة، ومجموع التكرارات لكل عمود عبر كافة الصفوف. في مكتبة Pandas، يمكن تفعيل هذه المجاميع بصورة تلقائية وفورية من خلال تمرير المعامل المنطقي margins=True داخل دالة pd.crosstab(). يؤدي هذا الخيار إلى إضافة صف أخير وعمود أخير يحملان افتراضياً العنوان “All”، ويمثلان التوزيعات التكرارية الأحادية للمتغيرات قيد الدراسة.

توفر الدالة أيضاً المعامل margins_name لتخصيص وتغيير المسمى الافتراضي “All” إلى أي مصطلح تحليلي آخر يفضله الباحث، مثل “الإجمالي” أو “المجموع الكلي” (Total). يضمن هذا التخصيص إنتاج مخرجات جدولية جاهزة للنشر الأكاديمي والطباعة باللغة العربية دون الحاجة إلى تدخل يدوي لاحق لإعادة تسمية الحقول الإجمالية.

تكمن الفائدة الإحصائية الكبرى للمجاميع الهامشية في تمكين المحلل من التحقق السريع من صحة العينة (Data Integrity)، والتأكد من عدم سقوط أي مشاهدات أثناء المعالجة التقاطعية، فضلاً عن كونها تمثل المقامات الرياضية (Denominators) الأساسية المستخدمة لاحقاً في حساب الاحتمالات الهامشية والشرطية واختبارات التجانس واستقلال التوزيعات المتعددة.

7.2 تطبيع الجداول وحساب النسب المئوية المشروطة

يعد التطبيع (Normalization) الآلية الإحصائية التي تحول أعداد التكرارات المطلقة إلى أوزان نسبية واحتمالية، وهو ما توفره دالة pd.crosstab() ببراعة عبر المعامل المتقدم normalize. يقبل هذا المعامل عدة خيارات هيكلية تؤدي كل منها إلى بناء نمط تحليلي مختلف تماماً يلبي فرضية بحثية محددة:

  • التطبيع على مستوى الصفوف (normalize='index'): يقوم بقسمة كل خلية داخل الصف على مجموع ذلك الصف المحدد، بحيث يصبح مجموع نسب كل صف مساوياً لـ 1.0 (أو 100%). يُستخدم هذا النمط للإجابة على الأسئلة المشروطة بالصف، مثل: “من بين الأفراد الحاصلين على مؤهل جامعي، ما هي النسبة المئوية للموافقين على المقترح؟”. يمثل هذا رياضياً حساب الاحتمال الشرطي P(A|B).
  • التطبيع على مستوى الأعمدة (normalize='columns'): يقوم بقسمة كل خلية داخل العمود على مجموع ذلك العمود، بحيث يصبح مجموع نسب كل عمود مساوياً لـ 1.0 (أو 100%). يُستخدم هذا النمط لتحليل التوزيع الديموغرافي داخل كل استجابة، مثل: “من بين جميع الموافقين على المقترح، ما هي نسبة الذكور مقارنة بنسبة الإناث؟”.
  • التطبيع الكلي للجدول (normalize='all'): يقوم بقسمة كل خلية على الحجم الإجمالي المطلق لكامل العينة، بحيث يصبح مجموع كافة خلايا الجدول مجتمعة مساوياً لـ 1.0 (أو 100%). يمثل هذا النمط التوزيع الاحتمالي المشترك P(A and B) لكل زوج من الفئات عبر كامل فضاء العينة.

إن الاختيار الدقيق بين هذه الأنماط التطبيعية يمثل الفارق بين التحليل الإحصائي السليم والتحليل المضلل؛ فالخلط بين النسبة المشروطة بالصف والنسبة المشروطة بالعمود يعد من أشهر الأخطاء الشائعة التي يقع فيها الباحثون المبتدئون عند صياغة استنتاجاتهم الميدانية.

7.3 تضمين الدوال التجميعية المتقدمة (Aggregation with crosstab)

تتجاوز قدرات دالة pd.crosstab() مجرد العد الحسابي للتكرارات الفئوية لتشمل حساب وتلخيص المتغيرات الرقمية المستمرة داخل كل خلية تقاطعية، مما يحولها إلى جدول محوري إحصائي متطور (Pivot Aggregation Table). يتحقق هذا الدمج المتقدم عبر استخدام المعاملين المقترنين: values لتحديد العمود الرقمي المراد قياسه، والمعامل aggfunc لتحديد الدالة الإحصائية المستهدفة.

يمكن تمرير مجموعة واسعة من الدوال الرياضية إلى المعامل aggfunc، مثل المتوسط الحسابي 'mean'، أو الوسيط 'median'، أو الانحراف المعياري 'std'، أو حتى دوال مخصصة مكتوبة بلغة بايثون. على سبيل المثال، يمكن للباحث بناء جدول متقاطع يعرض فئات “المستوى التعليمي” في الصفوف و”الجنس” في الأعمدة، ولكن بدلاً من إظهار عدد الأفراد في كل خلية، يُظهر الجدول “متوسط الدخل الشهري” لتلك الفئة المحددة، مما يدمج المتغيرات النوعية والكمية في شاشة تحليلية واحدة بالغة الكثافة المعرفية.

يتيح هذا النمط الهجين من الجداول التكرارية التجميعية استكشاف التفاعلات الإحصائية الدقيقة (Interaction Effects) بين المتغيرات المستقلة وتأثيرها المشترك على المتغير التابع، مما يمهد الطريق لبناء نماذج تحليل التباين (ANOVA) ونماذج الانحدار الخطي المتعدد بدقة منهجية واضحة ومسنودة رقمياً.

8. إنشاء جداول التكرار متعددة الأبعاد (Multi-way Frequency Tables)

8.1 جداول التكرار ثلاثية الأبعاد والأبعاد المركبة

في العديد من الظواهر السلوكية والطبية المعقدة، لا تكفي دراسة العلاقة بين متغيرين اثنين فقط لفهم الصورة الكلية، حيث يبرز دائماً متغير ثالث (أو أكثر) يعمل كمتغير وسيط أو معدل (Moderator / Confounding Variable) يؤثر على العلاقة الأصلية. تتيح دالة pd.crosstab() استيعاب هذه التعقيدات وبناء جداول تكرار ثلاثية الأبعاد ومركبة بكل سهولة عبر تمرير قوائم من السلاسل (Lists of Series) إلى المعاملين index و columns.

عند تمرير قائمتين أو أكثر إلى معاملات الدالة، تقوم مكتبة Pandas ببناء فهرس هرمي متعدد المستويات يُعرف باسم الفهرس المركب (MultiIndex). على سبيل المثال، يمكن تمرير قائمتين تمثلان “المنطقة الجغرافية” و”الفئة العمرية” في الصفوف، بينما يمثل العمود متغير “نوع الاشتراك في الخدمة”. ينتج عن ذلك جدول تكراري يعرض الأعداد المشتركة لكل فئة عمرية داخل كل منطقة جغرافية على حدة ومقارنتها بنوع الاشتراك، مما يكشف عن الأنماط الدقيقة التي قد تختفي عند دمج البيانات إجمالياً (تجنب مغالطة سمبسون – Simpson’s Paradox).

إن تحليل الجداول متعددة الأبعاد يمنح الباحثين قدرة متفوقة على تفكيك التفاعلات المعقدة بين المتغيرات المتعددة في التصاميم التجريبية والعاملية (Factorial Designs)، مما يوفر أساساً تجريبياً صلباً لاختبار الفرضيات النظرية وتفسير السلوكيات المتشابكة في البيئات الواقعية المفتوحة.

8.2 إعادة تشكيل وهيكلة الجداول متعددة الأبعاد

تنتج الجداول متعددة الأبعاد هياكل بيانات غنية ولكنها قد تكون معقدة من حيث التنسيق والعرض التقريري؛ لذا توفر مكتبة Pandas أدوات هندسية فائقة القوة لإعادة تشكيل وتدوير هذه المصفوفات بما يخدم راحة المحلل وتطلبات التصدير. تأتي في مقدمة هذه الأدوات دالتا stack() و unstack()؛ حيث تقوم دالة unstack() بتحويل أحد مستويات الفهرس الصفي الداخلي إلى أعمدة أفقية، بينما تقوم دالة stack() بالعكس، محولة الأعمدة إلى مستويات صفية عمودية مكدسة.

في كثير من الحالات، يتطلب إعداد التقارير أو تغذية نماذج التعلم الآلي تسطيح الفهارس المركبة (Flattening MultiIndex) لإلغاء التداخل الهرمي وتحويل الجدول إلى شكل جدولي مسطح قياسي (Tidy Data Format). يمكن تحقيق ذلك بسهولة عبر استخدام دالة reset_index() مع دمج مستويات التسميات النصية باستخدام تعبيرات الفهم النصي (List Comprehensions) لدمج أسماء الأعمدة المشتركة بفاصلة أو شرطة منسقة.

كما تتيح ميزة الفهرسة المتقدمة عبر المعامل .loc استخراج شرائح محددة بدقة جراحية من الجداول المركبة. يستطيع المحلل، على سبيل المثال، استدعاء التوزيع التكراري لمنطقة جغرافية بعينها عبر كافة الفئات العمرية والاشتراكات دون الحاجة إلى إعادة تصفية قاعدة البيانات الأصلية بالكامل، مما يوفر جهداً حوسبياً كبيراً ويسرع وتيرة الاستكشاف التحليلي التفاعلي.

9. إنشاء جداول التكرار للبيانات الرقمية المستمرة (Binning)

9.1 تقسيم البيانات المستمرة إلى فئات باستخدام pd.cut()

تتسم العديد من المتغيرات الإحصائية بطبيعتها الرقمية المستمرة أو المتقطعة واسعة المدى، مثل الدخل المالي، والسن بالسنوات، وضغط الدم، ودرجات الاختبارات الأكاديمية. لا يمكن تطبيق جداول التكرار البسيطة على هذه المتغيرات مباشرة بصورتها الخام لأن كل قيمة فريدة تقريباً ستتكرر مرة أو مرتين فقط، مما ينتج جدولاً طويلاً وفارغ المعنى. يكمن الحل الإحصائي في عملية تُعرف باسم التقطيع الفئوي (Data Binning / Discretization)، والتي تهدف إلى تحويل المتغير المستمر إلى فئات فترية مغلقة أو شبه مفتوحة.

توفر مكتبة Pandas الدالة المتخصصة pd.cut() لتقسيم القيم الرقمية المستمرة إلى فترات رقمية متساوية الطول أو فترات مخصصة يحددها الباحث بدقة عبر المعامل bins. يمكن للمحلل تمرير عدد صحيح يمثل عدد الفئات المطلوبة لتقوم الدالة بحساب المدى وقسمته بالتساوي، أو تمرير قائمة صريحة من الحدود الفاصلة (مثل: [0, 18, 35, 60, 100]). كما يتيح المعامل labels استبدال كتابة الفترات الحسابية المجردة بأسماء وتسميات وصفية ذات دلالة لغوية (مثل: “أطفال”، “شباب”، “كهول”، “كبار سن”).

بمجرد تطبيق pd.cut()، ينتج متغير فئوي جديد يمكن تمريره مباشرة إلى دالة value_counts() أو دمجها في سطر برمجي واحد عبر كتابة df['continuous_col'].value_counts(bins=5). يعيد هذا الإجراء جدولاً تكرارياً فئوياً كلاسيكياً يوضح عدد الحالات في كل فترة رقمية، وهو المفهوم المطابق تماماً للبنية الحسابية التي تبنى عليها المخططات المدرجة التكرارية (Histograms).

9.2 التقسيم بناءً على المئينات باستخدام pd.qcut()

على الرغم من فعالية دالة pd.cut()، إلا أنها قد تواجه عيباً إحصائياً بارزاً عند التعامل مع البيانات الملتوية بشدة (Skewed Data) أو البيانات التي تحتوي على تركز هائل في نطاق ضيق مع وجود قيم متطرفة بعيدة؛ حيث يؤدي تقسيم المدى إلى فترات متساوية الطول إلى امتلاء فئة أو فئتين بمعظم البيانات بينما تظل بقية الفئات شبه فارغة، مما يضعف التحليل الإحصائي المقارن.

هنا تبرز الدالة البديلة والمتطورة pd.qcut()، والتي تعتمد على مفهوم التقطيع المئيني المتساوي التكرار (Quantile-based Discretization). بدلاً من تقسيم مدى المتغير إلى فواصل متساوية المسافة، تقوم دالة pd.qcut() بتقسيم البيانات إلى فئات تحتوي كل منها على نفس العدد المتساوي تقريباً من المشاهدات والتكرارات. على سبيل المثال، عند تمرير المعامل q=4، تقوم الدالة بحساب الربيعات الإحصائية (Quartiles) وتقسيم البيانات إلى أربع فئات متكافئة التعداد تمثل كل منها 25% من إجمالي حجم العينة.

يساعد التقطيع المئيني المحللين في معالجة التوزيعات الاقتصادية المعقدة كالدخل والثروة وتصنيف العملاء في المؤسسات المالية، حيث تضمن هذه الطريقة تمثيلاً متوازناً داخل كل شريحة تصنيفية. توفر المقارنة بين مخرجات pd.cut() ومخرجات pd.qcut() فهماً عميقاً لشكل المنحنى التكراري ودرجة التوائه حول وسطه ووسيطه الحسابي، مما يعزز دقة النمذجة المتقدمة.

10. التمثيل البياني لجداول التكرار في بايثون

10.1 رسم التوزيعات التكرارية الأحادية

يمثل التحويل البصري لجداول التكرار خطوة حاسمة في إيصال الرؤى الإحصائية بكفاءة إلى مختلف الجماهير؛ إذ تساعد المخططات البيانية العقل البشري على استيعاب الفروق التكرارية والأنماط التوزيعية بصورة أسرع وأعمق من قراءة الأرقام الجدولية الصماء. توفر مكتبة Pandas تكاملاً أصيلاً مع محرك الرسم الرياضي Matplotlib، مما يسمح بتوليد المخططات الشريطية (Bar Charts) مباشرة عبر استدعاء دالة الرسم .plot(kind='bar') على كائن جدول التكرار الناتج من value_counts().

يتيح المخطط الشريطي تمثيل الفئات على المحور الأفقي مع رفع أعمدة رأسية يتناسب طول كل منها طردياً مع حجم التكرار المطلق أو النسبي، مما يبرز الفئة المنوالية والفئات الأقل تكراراً بشكل فوري. كما يمكن تحويل المخطط إلى أعمدة أفقية باستخدام kind='barh'، وهو ما يعد مثالياً وأكثر راحة للعين عند التعامل مع متغيرات تحتوي على أسماء فئات طويلة أو نصوص متعددة الكلمات باللغة العربية، لمنع تداخل النصوص وتصادمها على المحور الأفقي.

أما المخططات الدائرية (Pie Charts)، ورغم جاذبيتها الشكلية في العروض التقديمية السريعة عبر kind='pie'، إلا أن المراجع الإحصائية القياسية تحذر من الإفراط في استخدامها، خاصة عند زيادة عدد الفئات عن أربعة أو خمسة عناصر، أو عند تقارب النسب المئوية بصورة تجعل التمييز الزاوي بين شرائح الدائرة صعباً على العين البشرية، مما يجعل المخططات الشريطية الخيار العلمي الأفضل والأدق دائماً لتمثيل التكرارات الأحادية.

10.2 التمثيل البصري للجداول المتقاطعة والخرائط الحرارية

يتطلب التمثيل البياني للجداول المتقاطعة ثنائية ومتعددة الأبعاد تقنيات بصرية متطورة تعكس التفاعل بين المتغيرات دون تعقيد بصري غير مبرر. من أبرز هذه التقنيات استخدام الأشرطة المكدسة (Stacked Bar Charts) والأشرطة المجمعة (Grouped Bar Charts) التي يمكن توليدها مباشرة من مخرجات pd.crosstab() بعد تطبيعها أو باستخدام قيمها المطلقة عبر تمرير المعامل stacked=True داخل دالة الرسم، مما يوضح التركيبة الداخلية لكل فئة عمودية ضمن كل شريط رئيسي.

علاوة على ذلك، تعد الخرائط الحرارية (Heatmaps) المتوفرة عبر مكتبة Seaborn الأداة البصرية الأرقى والأكثر فاعلية لعرض مصفوفات الاقتران الكبيرة؛ حيث تستخدم دالة sns.heatmap() التدرج اللوني لتمثيل كثافة التكرار داخل كل خلية تقاطعية. يتيح المعامل annot=True طباعة الأرقام والنسب الإحصائية الفعلية داخل الخلايا الملونة، مما يجمع بين الدقة الرقمية للجدول والجاذبية البصرية للتدرج الحراري.

تسهم الخرائط الحرارية في تسهيل القراءة السريعة لجداول الاقتران المعقدة التي تحتوي على مصفوفات ضخمة (مثل تقاطع عشرات التخصصات المهنية مع المناطق الجغرافية)، حيث تبرز النقاط الساخنة (Hotspots) ذات التكرار الكثيف والألوان الداكنة فوراً، مما يكشف عن التجمعات الارتباطية والعلاقات غير النمطية في البيانات دون الحاجة إلى فحص مئات الأرقام الفردية في الجدول.

11. تطبيقات ودراسات حالة عملية باستخدام بايثون

11.1 تحليل استبيان مقياس ليكرت (Likert Scale Analysis)

يعد مقياس ليكرت الخماسي أو السباعي (Likert Scale) الأداة الأكثر استخداماً في استبيانات العلوم الإدارية والنفسية والتربوية، حيث يُطلب من المبحوثين تحديد درجة موافقتهم على مجموعة من العبارات (من “غير موافق بشدة” إلى “موافق بشدة”). يتطلب التعامل مع هذه البيانات في بايثون تعريفها أولاً كمتغيرات رتبية ذات ترتيب محدد منطقياً باستخدام الصنف pd.CategoricalDtype لضمان الحفاظ على التسلسل الرتبي في كافة العمليات اللاحقة.

يبدأ التحليل ببناء جدول التكرار والنسب المئوية لكل فقرة من فقرات المقياس بصورة مستقلة، ثم تجميع هذه التوزيعات في إطار بيانات موحد يوضح التوزيع التكراري لكافة عبارات الاستبيان جنباً إلى جنب. يتيح هذا العرض المنسق للباحث مقارنة مستويات القبول والرفض بين مختلف المحاور والفقرات بسهولة ويسر، واكتشاف الفقرات التي حظيت بإجماع مرتفع مقابل تلك التي أثارت انقساماً وتشتتاً بين أفراد العينة.

يستكمل التحليل بحساب مقاييس النزعة المركزية والتشتت الملائمة لطبيعة البيانات الرتبية؛ حيث يُحسب الوسيط والمنوال لكل فقرة، إلى جانب النطاق الربيعي (IQR)، مع تجنب الاعتماد الحصري على المتوسط الحسابي والانحراف المعياري إذا لم تكن الفواصل بين الدرجات متساوية تماماً بالمعنى الفاصل المتري (Interval Scale)، مما يرسخ الدقة المنهجية في التفسير السلوكي للنتائج.

11.2 إجراء اختبار استقلالية كاي تربيع (Chi-Square Test of Independence)

يمثل التكامل بين جداول التكرار المتقاطعة والاختبارات الإحصائية الاستدلالية جوهر التحليل العلمي الرصين. يُستخدم اختبار استقلالية كاي تربيع لتقييم ما إذا كان التوزيع التكراري الملاحظ في جدول الاقتران يختلف اختلافاً جوهرياً ذو دلالة إحصائية عن التوزيع المتوقع حدوثه بمحض الصدفة العشوائية في حال عدم وجود أي علاقة بين المتغيرين في المجتمع الأصلي.

يتم تطبيق هذا الاختبار في بايثون عبر توليد جدول التكرار المشاهد أولاً باستخدام table = pd.crosstab(df['var1'], df['var2'])، ثم تمرير هذه المصفوفة مباشرة إلى دالة chi2_contingency() المستوردة من مكتبة scipy.stats. تعيد هذه الدالة مصفوفة متكاملة من المخرجات الإحصائية الحيوية تشمل: قيمة إحصائية الاختبار المحسوبة (Chi-square statistic)، والقيمة الاحتمالية الدقيقة (p-value)، ودرجات الحرية (Degrees of Freedom)، بالإضافة إلى مصفوفة التكرارات المتوقعة نظرياً (Expected Frequencies).

تتم عملية التفسير العلمي بمقارنة القيمة الاحتمالية (p-value) بمستوى الدلالة المعياري المعتمد (غالباً 0.05)؛ فإذا كانت القيمة أقل من 0.05، يرفض الباحث الفرضية الصفرية (Null Hypothesis) ويستنتج وجود علاقة ارتباطية دالة إحصائياً بين المتغيرين، مع التحقق الإلزامي من شرط كاي تربيع الكلاسيكي الذي يشترط ألا يقل التكرار المتوقع في 80% من خلايا الجدول على الأقل عن 5 مشاهدات لضمان صحة الاستدلال الرياضي.

12. أفضل الممارسات، معالجة الأخطاء، وتحسين الأداء الحسابي

12.1 تحسين الأداء للتعامل مع البيانات الضخمة (Big Data)

عند التعامل مع مجموعات البيانات المؤسسية الضخمة التي تحتوي على عشرات أو مئات الملايين من السجلات، قد تصبح العمليات الحسابية التقليدية بطيئة وتستهلك حجماً هائلاً من ذاكرة الوصول العشوائي (RAM) إذا لم يتم تحسين أنواع البيانات برمجياً. تتمثل الخطوة الأولى الحاسمة في تحويل الأعمدة النصية المكررة من النوع العام object إلى النوع الفئوي المتخصص category في مكتبة Pandas، مما يقلل استهلاك الذاكرة بنسبة قد تتجاوز 80% ويسرع عمليات الفهرسة وحساب التكرار بمقدار عدة أضعاف.

من الناحية الحسابية الخالصة، توضح المقارنات الأدائية (Benchmarking) أن استخدام التركيب df.groupby(['col1', 'col2']).size() يكون في كثير من الأحيان أسرع وأقل استهلاكاً للموارد مقارنة بدالة pd.crosstab() عند معالجة المصفوفات المليونية؛ وذلك لأن دالة crosstab تنطوي على عمليات تشكيل ومحاذاة إضافية قد تسبب عبئاً حوسبياً زائداً (Overhead) لا تحتاجه خوارزميات التجميع المباشر.

في الحالات التي يتجاوز فيها حجم الملف سعة الذاكرة الفعلية بالكامل، يُنصح بتطبيق تقنية المعالجة بالتجزئة الحسابية (Chunking) عبر قراءة الملف على دفعات محددة الحجم باستخدام المعامل chunksize في دالة pd.read_csv()، حيث يتم حساب التكرارات لكل دفعة بشكل تراكمي وجمع النتائج الجزئية في جدول نهائي موحد، أو اللجوء إلى مكتبات الحوسبة الموزعة والمتوازية مثل Dask و Polars للتعامل مع البيانات الضخمة بكفاءة فائقة.

12.2 الأخطاء البرمجية والإحصائية الشائعة وكيفية تجنبها

يواجه العديد من الممارسين أخطاء منهجية متكررة عند بناء وتفسير جداول التكرار، يأتي في مقدمتها الخلط المنهجي بين التكرار النسبي المحسوب على مستوى الصف والتكرار النسبي المحسوب على مستوى العمود، وهو ما يؤدي إلى صياغة استنتاجات مقلوبة حول اتجاه العلاقات الإحصائية. لتفادي هذا الخطأ، يجب مراجعة منطق السؤال البحثي دائماً وتسمية الأعمدة والصفوف بمسميات تعكس بوضوح اتجاه ونوع الاحتمال الشرطي المحسوب.

من الأخطاء التقنية الشائعة أيضاً تجاهل تنظيف البيانات وإزالة المسافات الزائدة أو توحيد حالة الأحرف والنصوص قبل إنشاء الجداول، مما يؤدي إلى ظهور نفس الفئة مكررة عدة مرات تحت مسميات تبدو مختلفة برمجياً ولكنها متطابقة دلالياً (مثل: “نعم ” و “نعم” بمسافة إضافية). يجب تطبيق دوال المعالجة النصية مثل str.strip() وتوحيد صيغ الحروف لضمان دمج الفئات المتطابقة تحت مدخل تكراري واحد وسليم.

أخيراً، عند توثيق وتصدير الجداول التكرارية للتقارير والأوراق العلمية المحكمة، يجب الابتعاد عن النسخ واللصق اليدوي المشوه. توفر مكتبة Pandas دوال تصدير برمجية بالغة الدقة مثل to_excel() مع خيارات التنسيق الشكلي، ودالة to_latex() التي تتيح توليد الشيفرات البرمجية الجاهزة للتضمين المباشر في بيئات النشر الأكاديمي LaTeX، مما يضمن خروج الجداول بأعلى مستويات الاحترافية والتنسيق البصري المتوافق مع المعايير العلمية الدولية.

خاتمة

تمثل جداول التكرار الركيزة الأولى والأساسية التي تبنى عليها كافة الصروح التحليلية والرياضية في علوم البيانات والإحصاء التطبيقي. وقد استعرضنا عبر هذا الدليل الشامل كيف توفر لغة بايثون ومنظومتها البرمجية المتطورة ممثلة بمكتبات Pandas و NumPy و SciPy بيئة متكاملة تتيح للمحلل الإحصائي الانتقال بسلاسة وثقة من أبسط الجداول التكرارية الأحادية لسلاسل البيانات إلى أعقد المصفوفات التقاطعية متعددة الأبعاد، مع التحكم الكامل في ترتيب الفئات، ومعالجة القيم المفقودة، وحساب التكرارات النسبية، وتطبيق الدوال التجميعية المتقدمة.

إن إتقان هذه الأدوات البرمجية لا يقتصر فقط على معرفة أسماء الدوال ومعاملاتها، بل يتطلب في جوهره وعياً إحصائياً عميقاً يوجه اختيار المقياس المناسب، ويفرق بدقة بين الاحتمالات الشرطية والمشتركة، ويربط النتائج الوصفية بالاختبارات الاستدلالية الرصينة مثل اختبار كاي تربيع. وبفضل الكفاءة الحسابية العالية والقدرة الفائقة على الأتمتة والتمثيل البياني، تظل بايثون الخيار الرائد الذي يُمكّن الباحثين وصناع القرار من تحويل البيانات الخام المبعثرة إلى معرفة استراتيجية دقيقة تدعم القرارات وتكشف عن الحقائق الكامنة في عمق البيانات.

References

اقتباس هذا المقال

looti, M. (2026, أغسطس 26). كيفية إنشاء جداول التكرار في بايثون. عرب سايكلوجي. https://arabpsychology.com/statistics/how-to-create-frequency-tables-in-python/
looti, Mohammed. “كيفية إنشاء جداول التكرار في بايثون.” عرب سايكلوجي, 26 أغسطس 2026, https://arabpsychology.com/statistics/how-to-create-frequency-tables-in-python/.
looti, Mohammed. “كيفية إنشاء جداول التكرار في بايثون.” عرب سايكلوجي. أغسطس 26, 2026. https://arabpsychology.com/statistics/how-to-create-frequency-tables-in-python/.