كيف تجد المتوسط ​​والمتوسط ​​والوضع في بايثون؟

نشرت: 2021-06-22

المتوسط ​​والوسيط والوضع هي موضوعات أساسية للإحصاء. يمكنك بسهولة حسابها في Python ، باستخدام المكتبات الخارجية وبدونها.

هذه الثلاثة هي المقاييس الرئيسية للاتجاه المركزي. يتيح لنا الاتجاه المركزي معرفة القيم "العادية" أو "المتوسطة" لمجموعة البيانات. إذا كنت بدأت للتو في علم البيانات ، فهذا هو البرنامج التعليمي المناسب لك.

يعني ، متوسط ​​، وضع القياسات الثلاثة للاتجاه المركزي

بنهاية هذا البرنامج التعليمي سوف:

  • فهم مفهوم الوسيط والوسيط والوضع
  • كن قادرًا على إنشاء وظائف الوسيط والوسيط والوضع الخاص بك في Python
  • استفد من وحدة إحصائيات Python لبدء استخدام هذه القياسات بسرعة

إذا كنت تريد إصدارًا قابلاً للتنزيل من التمارين التالية ، فلا تتردد في التحقق من مستودع GitHub.

دعنا ندخل في الطرق المختلفة لحساب المتوسط ​​والوسيط والوضع.

حساب المتوسط ​​في بايثون

المتوسط ​​الحسابي أو المتوسط ​​الحسابي هو المقياس الأكثر استخدامًا للاتجاه المركزي.

تذكر أن الاتجاه المركزي هو قيمة نموذجية لمجموعة من البيانات.

مجموعة البيانات هي مجموعة من البيانات ، لذلك يمكن أن تكون مجموعة البيانات في Python أيًا من هياكل البيانات المضمنة التالية:

  • القوائم والمجموعات والمجموعات: مجموعة من العناصر
  • الأوتار: مجموعة من الشخصيات
  • القاموس: مجموعة من أزواج المفتاح والقيمة

ملاحظة: مع افتراض وجود هياكل بيانات أخرى في Python مثل قوائم الانتظار أو المداخن ، سنستخدم فقط التركيبات المضمنة.

يمكننا حساب المتوسط ​​عن طريق إضافة جميع قيم مجموعة البيانات وقسمة النتيجة على عدد القيم. على سبيل المثال ، إذا كانت لدينا قائمة الأرقام التالية:

 [1, 2, 3, 4, 5, 6]

سيكون المتوسط ​​أو المتوسط 3.5 لأن مجموع القائمة 21 وطولها 6 . واحد وعشرون على ستة يساوي 3.5 . يمكنك إجراء هذا الحساب باستخدام الحساب أدناه:

 (1 + 2 + 3 + 4 + 5 + 6) / 6 = 21

في هذا البرنامج التعليمي ، سنستخدم لاعبي فريق كرة السلة كعينة بيانات لدينا.

إنشاء دالة متوسط ​​مخصصة

لنبدأ بحساب متوسط ​​(متوسط) عمر اللاعبين في فريق كرة السلة. سيكون اسم الفريق "Pythonic Machines".

 pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24] def mean(dataset): return sum(dataset) / len(dataset) print(mean(pythonic_machine_ages))

تحطيم هذا الكود:

  • "pythonic_machine_ages" هي قائمة بأعمار لاعبي كرة السلة
  • نحدد دالة () التي تعرض مجموع مجموعة البيانات المعطاة مقسومًا على طولها
    • ترجع الدالة sum () المجموع الإجمالي (المفارقة) لقيم قائمة قابلة للتكرار ، في هذه الحالة. حاول تمرير مجموعة البيانات كوسيطة ، فستظهر 211
    • ترجع الدالة len () طول ما يمكن تكراره ، إذا قمت بتمرير مجموعة البيانات إليها ، فستحصل على 8
  • نمرر أعمار فريق كرة السلة إلى الدالة المتوسطة ونطبع النتيجة.

إذا قمت بفحص الإخراج ، فستحصل على:

 26.375 # Because 211 / 8 = 26.375

يمثل هذا الناتج متوسط ​​عمر لاعبي فريق كرة السلة. لاحظ كيف لا يظهر الرقم في مجموعة البيانات ولكنه يصف بدقة عمر معظم اللاعبين.

باستخدام المتوسط ​​() من الوحدة الإحصائية لبايثون

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

نظرًا لأنها جزء من مكتبة Python القياسية ، فلن تحتاج إلى تثبيت أي حزمة خارجية باستخدام PIP.

إليك كيفية استخدام هذه الوحدة:

 from statistics import mean pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24] print(mean(pythonic_machine_ages))

في الكود أعلاه ، تحتاج فقط إلى استيراد دالة المتوسط ​​() من وحدة الإحصاء وتمرير مجموعة البيانات إليها كوسيطة. سيؤدي هذا إلى إرجاع نفس النتيجة مثل الوظيفة المخصصة التي حددناها في القسم السابق:

 26.375

الآن لديك واضحة وضوح الشمس مفهوم اسمحوا يعني تواصل مع قياس متوسط.

إيجاد الوسيط في بايثون

الوسيط هو القيمة المتوسطة لمجموعة البيانات التي تم فرزها. يتم استخدامه - مرة أخرى - لتوفير قيمة "نموذجية" لمجموعة محددة من السكان.

في البرمجة ، يمكننا تعريف الوسيط على أنه القيمة التي تفصل التسلسل إلى جزأين - النصف السفلي والنصف الأعلى -.

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

  • فردي: الوسيط هو القيمة المتوسطة لمجموعة البيانات
  • زوجي: الوسيط هو مجموع القيمتين المتوسطتين مقسومًا على اثنين

بالاستمرار مع مجموعة بيانات فريق كرة السلة لدينا ، دعونا نحسب متوسط ​​ارتفاع اللاعبين بالسنتيمتر:

 [181, 187, 196, 196, 198, 203, 207, 211, 215] # Since the dataset is odd, we select the middle value median = 198

كما ترى ، نظرًا لأن طول مجموعة البيانات فردي ، فيمكننا أخذ القيمة المتوسطة كمتوسط. ومع ذلك ، ماذا سيحدث إذا تقاعد اللاعب للتو؟

سنحتاج إلى حساب الوسيط بأخذ القيمتين المتوسطتين لمجموعة البيانات

 [181, 187, 196, 198, 203, 207, 211, 215] # We select the two middle values, and divide them by 2 median = (198 + 203) / 2 median = 200.5

إنشاء دالة وسيطة مخصصة

دعنا نطبق المفهوم أعلاه في دالة بايثون.

تذكر الخطوات الثلاث التي يتعين علينا اتباعها للحصول على متوسط ​​مجموعة البيانات:

  • فرز مجموعة البيانات: يمكننا القيام بذلك باستخدام الوظيفة Sorted ()
  • حدد ما إذا كان الأمر فرديًا أم زوجيًا: يمكننا القيام بذلك عن طريق الحصول على طول مجموعة البيانات واستخدام عامل التشغيل modulo (٪)
  • قم بإرجاع الوسيط بناءً على كل حالة:
    • فردي: إرجاع القيمة الوسطى
    • زوجي: إرجاع متوسط ​​القيمتين الوسطيتين

سيؤدي ذلك إلى الوظيفة التالية:

 pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215] after_retirement = [181, 187, 196, 198, 203, 207, 211, 215] def median(dataset): data = sorted(dataset) index = len(data) // 2 # If the dataset is odd if len(dataset) % 2 != 0: return data[index] # If the dataset is even return (data[index - 1] + data[index]) / 2

طباعة نتيجة مجموعات البيانات الخاصة بنا:

 print(median(pythonic_machines_heights)) print(median(after_retirement))

انتاج:

 198 200.5

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

يخزن الفهرس القيمة الوسطى - أو القيمة المتوسطة العليا - لمجموعة البيانات ، باستخدام عامل قسمة الأعداد الصحيحة . على سبيل المثال ، إذا مررنا قائمة "pythonic_machine_hights" ، فسيكون لها قيمة 4 .

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

ثم نتحقق مما إذا كان طول مجموعة البيانات فرديًا من خلال مقارنة نتيجة عملية modulo بأي قيمة ليست صفرية. إذا كان الشرط صحيحًا ، نعيد العنصر الأوسط ، على سبيل المثال ، بقائمة "pythonic_machine_heights":

 >>> pythonic_machine_heights[4] # 198

من ناحية أخرى ، إذا كانت مجموعة البيانات حتى نرجع مجموع القيم الوسطى مقسومًا على اثنين. لاحظ أن البيانات [الفهرس -1] تعطينا النقطة الوسطى السفلية لمجموعة البيانات ، بينما تزودنا البيانات [الفهرس] بنقطة الوسط العليا.

باستخدام الوسيط () من الوحدة الإحصائية لبايثون

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

شخصيًا ، إذا كان هناك شيء محدد بالفعل بالنسبة لي ، فسأستخدمه بسبب مبدأ DRY - لا تكرر نفسك - (في هذه الحالة ، لا تكرر كود الآخرين).

يمكنك حساب متوسط ​​مجموعات البيانات السابقة بالشفرة التالية:

 from statistics import median pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215] after_retirement = [181, 187, 196, 198, 203, 207, 211, 215] print(median(pythonic_machines_heights)) print(median(after_retirement))

انتاج:

 198 200.5

حساب الوضع في بايثون

الوضع هو القيمة الأكثر شيوعًا في مجموعة البيانات. يمكننا اعتبارها مجموعة "شعبية" للمدرسة ، والتي قد تمثل معيارًا لجميع الطلاب.

مثال على الوضع يمكن أن يكون المبيعات اليومية لمتجر التكنولوجيا. سيكون وضع مجموعة البيانات هذه هو المنتج الأكثر مبيعًا في يوم معين.

 ['laptop', 'desktop', 'smartphone', 'laptop', 'laptop', 'headphones']

كما يمكنك أن تدرك ، فإن وضع مجموعة البيانات أعلاه هو "كمبيوتر محمول" لأنها كانت القيمة الأكثر شيوعًا في القائمة.

الشيء الرائع في الوضع هو أن مجموعة البيانات لا يجب أن تكون رقمية. على سبيل المثال ، يمكننا العمل مع السلاسل.

دعنا نحلل مبيعات يوم آخر:

 ['mouse', 'camera', 'headphones', 'usb', 'headphones', 'mouse']

تحتوي مجموعة البيانات أعلاه على وضعين: "الماوس" و "سماعات الرأس" لأن كلاهما لهما ترددان. هذا يعني أنها مجموعة بيانات متعددة الوسائط.

ماذا لو لم نتمكن من العثور على الوضع في مجموعة بيانات ، مثل الوضع أدناه؟

 ['usb', 'camera', 'smartphone', 'laptop', 'TV']

يسمى هذا توزيعًا موحدًا ، ويعني هذا في الأساس عدم وجود وضع في مجموعة البيانات.

الآن لديك فهم سريع لمفهوم الوضع ، دعنا نحسبه في بايثون.

إنشاء وظيفة الوضع المخصص

يمكننا أن نفكر في تكرار القيمة كزوج ذي قيمة مفتاح ، وبعبارة أخرى ، قاموس بايثون.

بإعادة تلخيص تشبيه كرة السلة ، يمكننا استخدام مجموعتي بيانات للعمل بهما: النقاط لكل لعبة ، ورعاية الأحذية الرياضية لبعض اللاعبين.

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

دعنا نترجم هذا إلى رمز:

 points_per_game = [3, 15, 23, 42, 30, 10, 10, 12] sponsorship = ['nike', 'adidas', 'nike', 'jordan', 'jordan', 'rebook', 'under-armour', 'adidas'] def mode(dataset): frequency = {} for value in dataset: frequency[value] = frequency.get(value, 0) + 1 most_frequent = max(frequency.values()) modes = [key for key, value in frequency.items() if value == most_frequent] return modes

التحقق من نتيجة تمرير القائمتين كوسيطات:

 print(mode(points_per_game)) print(mode(sponsorship))

انتاج:

 [10] ['nike', 'adidas', 'jordan']

كما ترى ، أعطانا بيان الطباعة الأول وضعًا واحدًا ، بينما أعاد البيان الثاني أوضاعًا متعددة.

شرح أعمق للكود أعلاه:

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

لاحظ مدى أهمية تسمية المتغيرات لكتابة رمز يمكن قراءته.

استخدام الوضع () والوضع المتعدد () من الوحدة الإحصائية لبايثون

مرة أخرى ، توفر لنا وحدة الإحصاء طريقة سريعة للقيام بعمليات الإحصاء الأساسية.

يمكننا استخدام وظيفتين: mode () و multimode ().

 from statistics import mode, multimode points_per_game = [3, 15, 23, 42, 30, 10, 10, 12] sponsorship = ['nike', 'adidas', 'nike', 'jordan', 'jordan', 'rebook', 'under-armour', 'adidas']

يستورد الكود أعلاه كلا الوظيفتين ويحدد مجموعات البيانات التي كنا نعمل معها.

هنا يأتي الاختلاف البسيط: تقوم وظيفة mode () بإرجاع الوضع الأول الذي تواجهه ، بينما تعرض multimode () قائمة بالقيم الأكثر شيوعًا في مجموعة البيانات.

وبالتالي ، يمكننا القول أن الوظيفة المخصصة التي حددناها هي في الواقع وظيفة متعددة الأوضاع () .
 print(mode(points_per_game)) print(mode(sponsorship))

انتاج:

 10 nike

ملاحظة: في Python 3.8 أو أعلى ، تُرجع الدالة mode () الوضع الأول الذي وجدته. إذا كان لديك إصدار أقدم ، فستتلقى "خطأ في الإحصاء".

باستخدام وظيفة multimode () :

 print(multimode(points_per_game)) print(multimode(sponsorship))

انتاج:

 [10] ['nike', 'adidas', 'jordan']

لنلخص

مبروك ! إذا اتبعت حتى الآن ، فقد تعلمت كيفية حساب المتوسط ​​والوسيط والوضع ، قياسات الاتجاه المركزي الرئيسية.

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

بعد ذلك ، اقرأ مقدمة ودية لتحليل البيانات في بايثون.