You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

15 KiB

تصور النسب

رسم توضيحي من (@sketchthedocs)
تصور النسب - رسم توضيحي من @nitya

في هذا الدرس، ستستخدم مجموعة بيانات تركز على الطبيعة لتصور النسب، مثل عدد الأنواع المختلفة من الفطريات الموجودة في مجموعة بيانات عن الفطر. دعونا نستكشف هذه الفطريات المثيرة للاهتمام باستخدام مجموعة بيانات مأخوذة من Audubon تحتوي على تفاصيل حول 23 نوعًا من الفطر ذو الخياشيم من عائلتي Agaricus وLepiota. ستجرب تصورات ممتعة مثل:

  • الرسوم البيانية الدائرية 🥧
  • الرسوم البيانية الحلقية 🍩
  • الرسوم البيانية الشبكية 🧇

💡 مشروع مثير للاهتمام يسمى Charticulator من Microsoft Research يقدم واجهة مجانية تعتمد على السحب والإفلات لإنشاء تصورات البيانات. في أحد دروسهم التعليمية، يستخدمون أيضًا مجموعة بيانات الفطر هذه! لذا يمكنك استكشاف البيانات وتعلم المكتبة في نفس الوقت: درس Charticulator.

اختبار ما قبل المحاضرة

تعرف على الفطر الخاص بك 🍄

الفطر كائنات مثيرة للاهتمام. دعونا نستورد مجموعة بيانات لدراستها:

import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()

يتم طباعة جدول يحتوي على بيانات رائعة للتحليل:

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

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

print(mushrooms.select_dtypes(["object"]).columns)

الناتج هو:

Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor',
       'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color',
       'stalk-shape', 'stalk-root', 'stalk-surface-above-ring',
       'stalk-surface-below-ring', 'stalk-color-above-ring',
       'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number',
       'ring-type', 'spore-print-color', 'population', 'habitat'],
      dtype='object')

خذ هذه البيانات وحوّل العمود 'الفئة' إلى فئة:

cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass

الآن، إذا قمت بطباعة بيانات الفطر، يمكنك رؤية أنها قد تم تجميعها في فئات وفقًا لفئة السام/الصالح للأكل:

شكل القبعة سطح القبعة لون القبعة كدمات الرائحة ارتباط الخياشيم تباعد الخياشيم حجم الخياشيم لون الخياشيم شكل الساق ... سطح الساق تحت الحلقة لون الساق فوق الحلقة لون الساق تحت الحلقة نوع الغشاء لون الغشاء عدد الحلقات نوع الحلقة لون بصمة الأبواغ التوزيع الموطن
الفئة
صالح للأكل 4208 4208 4208 4208 4208 4208 4208 4208 4208 4208 ... 4208 4208 4208 4208 4208 4208 4208 4208 4208 4208
سام 3916 3916 3916 3916 3916 3916 3916 3916 3916 3916 ... 3916 3916 3916 3916 3916 3916 3916 3916 3916 3916

إذا اتبعت الترتيب المعروض في هذا الجدول لإنشاء تسميات فئاتك، يمكنك إنشاء رسم بياني دائري:

دائري!

labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()

وها هو، رسم بياني دائري يظهر نسب هذه البيانات وفقًا لهاتين الفئتين من الفطر. من المهم جدًا ترتيب التسميات بشكل صحيح، خاصة هنا، لذا تأكد من التحقق من ترتيب مصفوفة التسميات!

رسم بياني دائري

الحلقات!

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

انظر إلى الموائل المختلفة التي ينمو فيها الفطر:

habitat=mushrooms.groupby(['habitat']).count()
habitat

هنا، تقوم بتجميع بياناتك حسب الموطن. هناك 7 موائل مدرجة، لذا استخدمها كتسميات لرسمك البياني الحلقي:

labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood']

plt.pie(habitat['class'], labels=labels,
        autopct='%1.1f%%', pctdistance=0.85)
  
center_circle = plt.Circle((0, 0), 0.40, fc='white')
fig = plt.gcf()

fig.gca().add_artist(center_circle)
  
plt.title('Mushroom Habitats')
  
plt.show()

رسم بياني حلقي

يرسم هذا الكود رسمًا بيانيًا ودائرة مركزية، ثم يضيف تلك الدائرة إلى الرسم. قم بتعديل عرض الدائرة المركزية عن طريق تغيير 0.40 إلى قيمة أخرى.

يمكن تعديل الرسوم البيانية الحلقية بطرق عدة لتغيير التسميات. يمكن تسليط الضوء على التسميات لتحسين القراءة. تعرف على المزيد في التوثيق.

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

الشبكات!

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

pip install pywaffle

حدد جزءًا من بياناتك لتجميعه:

capcolor=mushrooms.groupby(['cap-color']).count()
capcolor

أنشئ رسمًا بيانيًا شبكيًا عن طريق إنشاء تسميات ثم تجميع بياناتك:

import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
  
data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'],
    'amount': capcolor['class']
     }
  
df = pd.DataFrame(data)
  
fig = plt.figure(
    FigureClass = Waffle,
    rows = 100,
    values = df.amount,
    labels = list(df.color),
    figsize = (30,30),
    colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"],
)

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

رسم بياني شبكي

يدعم PyWaffle استخدام الأيقونات داخل الرسوم البيانية باستخدام أيقونات متوفرة في Font Awesome. قم ببعض التجارب لإنشاء رسم بياني شبكي أكثر إثارة باستخدام الأيقونات بدلاً من المربعات.

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

🚀 التحدي

حاول إعادة إنشاء هذه الرسوم البيانية اللذيذة في Charticulator.

اختبار ما بعد المحاضرة

المراجعة والدراسة الذاتية

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

https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart

https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce

https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm

https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402

قم ببعض البحث للعثور على مزيد من المعلومات حول هذا القرار الصعب.

الواجب

جربه في Excel


إخلاء المسؤولية:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.