المخطط الدائري Pie Chart - كتاب علم البيانات - الصف 11 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب علم البيانات - الصف 11 - الفصل 1 | المادة: علم البيانات | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: المخطط الدائري Pie Chart

📚 معلومات الصفحة

الكتاب: كتاب علم البيانات - الصف 11 - الفصل 1 | المادة: علم البيانات | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

📝 ملخص الصفحة

📚 المخطط الدائري (Pie Chart)

المفاهيم الأساسية

المخطط الدائري (Pie Chart): مخطط يشبه الفطائر مقسم إلى شرائح، يمثل القيم النسبية للمتغيرات في فئة معينة.

خريطة المفاهيم

```markmap

تصوير البيانات

التعريف

التمثيل البياني للمعلومات

يجعل البيانات أيسر فهماً وتحليلاً

الأدوات

مفكرة جوبيتر

#### يدعم تصوير البيانات باستخدام مكتبات البايثون

الأنواع الشائعة

المخططات

#### المخطط الخطي

##### رسم القيم بخطوط مستقيمة عبر الزمن

##### للمقارنة بين أكثر من متغير

#### المخطط الشريطي

##### تمثيل القيم بارتفاع الأعمدة

##### أنواعه: المجمعة، المكدسة، مع أشرطة الخطأ

###### خطوات إنشاء مخطط شريطي في جوبيتر

####### 1. استيراد المكتبات

######## matplotlib.pyplot

######## numpy

######## arabic_reshaper

######## bidi.algorithm

####### 2. إنشاء مجموعة البيانات

######## تجميع البيانات حسب المنطقة باستخدام دالة (mean)

######## الحصول على متوسط عدد الطلبة والمعلمين والإداريين

######## فرز إطار البيانات حسب عمود الطلبة (تنازلياً)

####### 3. اختيار البيانات للرسم

######## استخدام الصفوف الخمسة الأولى فقط لمخطط أوضح

######## استخراج القيم إلى قوائم منفصلة

####### 4. المقطع البرمجي لإنشاء المخطط

######## استخدام أسلوب جاهز في Matplotlib

######### plt.style.use('fivethirtyeight')

######## تحديد حجم الشكل

######### fig, ax = plt.subplots(figsize=(10, 6))

######## رسم الأعمدة

######### rects1 = ax.bar(x, studentsH, width=0.5, label='مجموع الطلبة')

######## ضبط التسميات العربية

######### استخدام arabic_reshaper و get_display لعرض النص العربي بشكل صحيح

######### ضبط تسميات المحور السيني (المناطق) والصادي (العدد المتوسط) والعنوان

######## إظهار القيم على المخطط

######### ax.set_xticks(x, regCor): إظهار أسماء المناطق تحت الأعمدة

######### ax.bar_label(rects1, padding=3): إظهار قيمة كل عمود أعلى العمود

######### ax.legend(): إظهار وسيلة الإيضاح (Legend)

######### fig.tight_layout(): ضبط المخطط داخل مساحة الشكل

###### إنشاء المخطط الشريطي المجمع

####### رسم عدة مجموعات بيانات متجاورة

######## rects1 = ax.bar(x - width/3, studentsH, width, label=studentsLabel)

######## rects2 = ax.bar(x, teacherH, width, label=teachersLabel)

######## rects3 = ax.bar(x + width/3, adminsH, width, label=adminsLabel)

####### إضافة تسميات القيم لكل مجموعة

######## ax.bar_label(rects1, padding=3)

######## ax.bar_label(rects2, padding=3)

######## ax.bar_label(rects3, padding=3)

#### المخطط النقطي

##### تمثيل البيانات بنقاط مبعثرة

##### يوضح الارتباط بين متغيرين (إيجابي، سلبي، لاشيء)

#### المخطط الدائري (Pie Chart)

##### مخطط يشبه الفطائر مقسم إلى شرائح

##### يمثل القيم النسبية للمتغيرات في فئة معينة

##### أنواعه: المجوفة (Doughnut)، نصف المجوفة (Half-Doughnut)، متعددة الطبقات (Multilayered)

###### خطوات إنشاء مخطط دائري في جوبيتر

####### 1. إنشاء إطار بيانات جديد (groupsP)

######## تجميع البيانات حسب 'المرحلة' والحصول على المتوسط (mean)

######## اختيار الأعمدة: 'مجموع الطلبة'، 'مجموع المعلمين'، 'مجموع الإداريين'

######## فرز إطار البيانات حسب عمود 'مجموع الإداريين' (تنازلياً)

####### 2. إنشاء المخطط الدائري لمنطقة واحدة

######## إنشاء قوائم للشرائح (slices) والتسميات (labels) من الصف الأول في groupsP

######## استخدام مكتبة arabic_reshaper لضبط عرض النص العربي (labelsCor)

######## تحديد خصائص المظهر: إزاحة شريحة (explode)، زاوية البدء (startangle)، خصائص الحواف (wedgeprops)

######## استخدام المعلمة autopct='%1.1f%%' لإظهار النسبة المئوية لكل شريحة

#### المخطط المدرج التكراري (Histogram)

##### مخطط يظهر تواتر البيانات العددية

##### الأعمدة متصلة ببعضها البعض

##### يختلف عن المخطط الشريطي الذي يقارن فئات البيانات

الرسوم البيانية

الجداول

الخرائط

مبدأ الاختيار

يتم تمثيل البيانات بشكل مختلف بكل نوع

اختر النوع حسب الهدف من التقرير

مكتبة مات بلوت ليب (Matplotlib)

مكتبة بايثون لإنشاء المخططات

تحتوي على أساليب جاهزة لجعل المخططات أكثر قابلية للفهم

دعم النص العربي

#### يتطلب استخدام مكتبتين إضافيتين:

##### arabic_reshaper

##### bidi.algorithm

#### يتم تثبيتهما بالأمر:

##### !pip install arabic-reshaper

##### !pip install python-bidi

```

نقاط مهمة

  • خطوات إنشاء مخطط دائري في جوبيتر تبدأ بإنشاء إطار بيانات جديد (`groupsP`) عن طريق تجميع البيانات حسب 'المرحلة' وأخذ المتوسط.
  • يتم فرز إطار البيانات `groupsP` حسب عمود 'مجموع الإداريين' ترتيباً تنازلياً.
  • لإنشاء المخطط الدائري لمنطقة واحدة، تُستخرج قيم الشرائح (`slices`) والتسميات (`labels`) من الصف الأول في `groupsP`.
  • المعلمة `autopct='%1.1f%%'` في دالة `ax.pie()` تُستخدم لإظهار النسبة المئوية على كل شريحة.
  • المعلمة `wedgeprops={'edgecolor':'black'}` تُستخدم لتحديد خصائص مظهر شرائح المخطط، مثل لون الحواف.

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

المخطط الدائري Pie Chart

نوع: محتوى تعليمي

المخطط الدائري Pie Chart

نوع: محتوى تعليمي

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

الشكل 3.50: مخطط دائري

نوع: FIGURE_REFERENCE

الشكل 3.50: مخطط دائري

Code Snippet 1

نوع: محتوى تعليمي

groupsP = data.groupby(['المرحلة']).mean().round(0) groupsP = groupsP[['مجموع الطلبة', 'مجموع المعلمين', 'مجموع الإداريين']] groupsP = groupsP.sort_values(by=['مجموع الإداريين'], ascending=False) groupsP

الشكل 3.51: إنشاء إطار بيانات جديد

نوع: FIGURE_REFERENCE

الشكل 3.51: إنشاء إطار بيانات جديد

نوع: محتوى تعليمي

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

Code Snippet 2

نوع: محتوى تعليمي

fig, ax = plt.subplots(figsize=(10,6), subplot_kw=dict(aspect="equal")) #create the lists for the slices slices = groupsP.iloc[0,1:].tolist() labels = groupsP.columns[1:].tolist() labelsCor = [get_display(arabic_reshaper.reshape(element)) for element in labels] # array which specifies the fraction of the radius with which to offset each wedge explode = [0,0.1,0] # create the pie chart ax.pie(slices, labels=labelsCor, explode=explode, shadow=False, startangle=45, autopct='%1.1f%%', wedgeprops={'edgecolor':'black'}) title = get_display(arabic_reshaper.reshape(groupsP.iloc[0,0])) ax.set_title(title)

لإظهار النسبة المئوية لكل شريحة.

نوع: محتوى تعليمي

لإظهار النسبة المئوية لكل شريحة.

خصائص لمظهر المخطط الدائري.

نوع: محتوى تعليمي

خصائص لمظهر المخطط الدائري.

الشكل 3.52: إنشاء مخطط دائري

نوع: FIGURE_REFERENCE

الشكل 3.52: إنشاء مخطط دائري

نوع: METADATA

وزارة التعليم Ministry of Education 2025 - 1447

نوع: METADATA

136

🔍 عناصر مرئية

المرحلة الابتدائية

A pie chart titled 'المرحلة الابتدائية' (Elementary Stage) showing the percentage distribution of three categories: 'مجموع الطلبة' (Total Students), 'مجموع المعلمين' (Total Teachers), and 'مجموع الإداريين' (Total Administrators).

بيانات إطار بيانات جديد

A table displaying aggregated data for different educational stages, including the count of students, teachers, and administrators.

A blue callout box with an arrow pointing to the 'autopct' parameter in the Python code snippet. It explains the purpose of this parameter.

A blue callout box with an arrow pointing to the 'wedgeprops' parameter in the Python code snippet. It explains the purpose of this parameter.

📄 النص الكامل للصفحة

--- SECTION: المخطط الدائري Pie Chart --- المخطط الدائري Pie Chart سترى خطوات إنشاء المخطط الدائري في مفكرة جوبيتر. ستنشئ إطار بيانات جديد يسمى groupsP من مجموعة البيانات التي استخدمتها في الدرس السابق. قم بتجميع بياناتك حسب المرحلة واحصل على المتوسط (mean) للطلبة والمعلمين والإداريين، ثم قم بفرز إطار البيانات هذا بمتوسط عدد المسؤولين. --- SECTION: الشكل 3.50: مخطط دائري --- الشكل 3.50: مخطط دائري --- SECTION: Code Snippet 1 --- groupsP = data.groupby(['المرحلة']).mean().round(0) groupsP = groupsP[['مجموع الطلبة', 'مجموع المعلمين', 'مجموع الإداريين']] groupsP = groupsP.sort_values(by=['مجموع الإداريين'], ascending=False) groupsP --- SECTION: الشكل 3.51: إنشاء إطار بيانات جديد --- الشكل 3.51: إنشاء إطار بيانات جديد الآن ستنشئ مخططًا دائريًا يوضح نسبة الطلبة والمعلمين والإداريين لمنطقة واحدة. أولاً، تحتاج إلى إنشاء قائمة تحتوي على شرائح المخطط الدائري. في مثالك، ستكون الشرائح عبارة عن قائمة تحتوي على أعداد الطلبة والمعلمين والإداريين للمنطقة في الصف الأول. --- SECTION: Code Snippet 2 --- fig, ax = plt.subplots(figsize=(10,6), subplot_kw=dict(aspect="equal")) #create the lists for the slices slices = groupsP.iloc[0,1:].tolist() labels = groupsP.columns[1:].tolist() labelsCor = [get_display(arabic_reshaper.reshape(element)) for element in labels] # array which specifies the fraction of the radius with which to offset each wedge explode = [0,0.1,0] # create the pie chart ax.pie(slices, labels=labelsCor, explode=explode, shadow=False, startangle=45, autopct='%1.1f%%', wedgeprops={'edgecolor':'black'}) title = get_display(arabic_reshaper.reshape(groupsP.iloc[0,0])) ax.set_title(title) --- SECTION: لإظهار النسبة المئوية لكل شريحة. --- لإظهار النسبة المئوية لكل شريحة. --- SECTION: خصائص لمظهر المخطط الدائري. --- خصائص لمظهر المخطط الدائري. --- SECTION: الشكل 3.52: إنشاء مخطط دائري --- الشكل 3.52: إنشاء مخطط دائري وزارة التعليم Ministry of Education 2025 - 1447 136 --- VISUAL CONTEXT --- **CHART**: المرحلة الابتدائية Description: A pie chart titled 'المرحلة الابتدائية' (Elementary Stage) showing the percentage distribution of three categories: 'مجموع الطلبة' (Total Students), 'مجموع المعلمين' (Total Teachers), and 'مجموع الإداريين' (Total Administrators). X-axis: N/A Y-axis: N/A Data: The chart is divided into three slices representing proportions. The largest slice, colored blue, represents 'مجموع الطلبة' at 91.2%. The second largest slice, colored orange, represents 'مجموع المعلمين' at 7.1%. The smallest slice, colored red, represents 'مجموع الإداريين' at 1.7%. Key Values: 91.2% مجموع الطلبة, 7.1% مجموع المعلمين, 1.7% مجموع الإداريين Context: This pie chart visually represents the distribution of different personnel categories within the elementary educational stage, demonstrating data visualization from a dataset. **TABLE**: بيانات إطار بيانات جديد Description: A table displaying aggregated data for different educational stages, including the count of students, teachers, and administrators. Table Structure: Headers: المرحلة | مجموع الطلبة | مجموع المعلمين | مجموع الإداريين Rows: Row 1: 1 المرحلة الابتدائية | 1888.0 | 147.0 | 35.0 Row 2: 2 المرحلة الثانوية | 931.0 | 79.0 | 11.0 Row 3: 3 المرحلة المتوسطة | 870.0 | 72.0 | 15.0 Row 4: 4 رياض الأطفال | 575.0 | 52.0 | 25.0 Row 5: 0 التعليم المبكر | 119.0 | 0.0 | 1.0 Calculation needed: This table represents the output of a data aggregation operation (groupby and mean) on an educational dataset, showing counts for different stages. Context: This table provides the numerical data used to generate the pie chart, illustrating how raw data is processed and structured before visualization. **HIGHLIGHT_BOX**: Untitled Description: A blue callout box with an arrow pointing to the 'autopct' parameter in the Python code snippet. It explains the purpose of this parameter. Context: This box highlights a specific parameter in the Python code for creating a pie chart, explaining how to display percentage values on each slice. **HIGHLIGHT_BOX**: Untitled Description: A blue callout box with an arrow pointing to the 'wedgeprops' parameter in the Python code snippet. It explains the purpose of this parameter. Context: This box highlights a specific parameter in the Python code for creating a pie chart, explaining how to customize the visual properties (like edge color) of the pie chart wedges.

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 5 بطاقة لهذه الصفحة

ما هو الهدف الأساسي من استخدام المخطط الدائري (Pie Chart) في علم البيانات؟

  • أ) عرض العلاقة بين متغيرين كميين على محوري x و y.
  • ب) توضيح النسبة المئوية أو التوزيع النسبي لمجموعة من الفئات من الكل.
  • ج) مقارنة القيم الفردية عبر فئات مختلفة باستخدام أعمدة.
  • د) عرض اتجاه البيانات وتغيرها عبر الزمن.

الإجابة الصحيحة: b

الإجابة: توضيح النسبة المئوية أو التوزيع النسبي لمجموعة من الفئات من الكل.

الشرح: المخطط الدائري هو تمثيل بياني يُستخدم لعرض البيانات النوعية أو الكمية المصنفة. يُمثل الدائرة الكاملة بنسبة 100%، وتمثل كل شريحة (wedge) نسبة مئوية أو حصة فئة معينة من المجموع الكلي، مما يسهل مقارنة الأجزاء مع بعضها ومع الكل.

تلميح: فكر في كيفية تمثيل أجزاء من كل.

التصنيف: تعريف | المستوى: سهل

في سياق إنشاء مخطط دائري باستخدام pandas و matplotlib، ما هي الخطوة التي تلي تجميع البيانات وحساب المتوسط؟

  • أ) تحديد ألوان الشرائح في المخطط الدائري.
  • ب) إنشاء قائمة التسميات (labels) للشرائح.
  • ج) فرز إطار البيانات بناءً على عمود معين (مثل مجموع الإداريين).
  • د) رسم المخطط الدائري مباشرة باستخدام `plt.pie()`.

الإجابة الصحيحة: c

الإجابة: فرز إطار البيانات بناءً على عمود معين (مثل مجموع الإداريين).

الشرح: بعد استخدام `data.groupby(['المرحلة']).mean().round(0)` لتجميع البيانات وحساب المتوسط، تأتي خطوة تنظيم البيانات للعرض أو التحليل اللاحق. في المثال، تم استخدام `groupsP.sort_values(by=['مجموع الإداريين'], ascending=False)` لفرز الإطار الناتج تنازلياً حسب متوسط عدد الإداريين.

تلميح: يتم ذكر خطوة مرتبطة بـ `sort_values` بعد `groupby` و `mean`.

التصنيف: صيغة/خطوات | المستوى: متوسط

ما هي وظيفة المعلمة `autopct` في دالة `ax.pie()` عند إنشاء مخطط دائري باستخدام matplotlib؟

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

الإجابة الصحيحة: c

الإجابة: إظهار النسبة المئوية لكل شريحة على المخطط نفسه.

الشرح: المعلمة `autopct` (اختصار لـ automatic percentage) في matplotlib تُستخدم لتنسيق و عرض النسبة المئوية التي تمثلها كل شريحة من المخطط الدائري مباشرة على الرسم البياني. مثال: `autopct='%1.1f%%'` يعرض النسبة بصيغة عدد عشري بمكان واحد (مثل 91.2%).

تلميح: يرتبط اسمها بكلمة 'auto' و 'percent'.

التصنيف: مفهوم جوهري | المستوى: متوسط

ما هو الغرض من المعلمة `wedgeprops` في دالة `ax.pie()` لإنشاء مخطط دائري؟

  • أ) تحديد حجم الرسم البياني (figure size).
  • ب) تخصيص الخصائص المرئية للشرائح (الأوتاد) مثل لون الحواف.
  • ج) تعيين عنوان للمخطط الدائري.
  • د) إنشاء قائمة بالقيم (slices) المراد تمثيلها.

الإجابة الصحيحة: b

الإجابة: تخصيص الخصائص المرئية للشرائح (الأوتاد) مثل لون الحواف.

الشرح: تُستخدم المعلمة `wedgeprops` لتمرير قاموس (dictionary) من الخصائص التي تتحكم في مظهر كل شريحة (wedge) في المخطط الدائري. على سبيل المثال، `wedgeprops={'edgecolor':'black'}` يضيف حدوداً سوداء حول كل شريحة، مما يحسن من وضوح الفصل بينها.

تلميح: كلمة 'wedge' تعني شريحة أو وتد في المخطط الدائري.

التصنيف: مفهوم جوهري | المستوى: متوسط

في عملية تحضير البيانات لرسم مخطط دائري يوضح توزيع الفئات لمنطقة واحدة، كيف يتم الحصول على قائمة القيم (slices)؟

  • أ) باستخدام `.mean()` على عمود 'المرحلة' فقط.
  • ب) باستخدام `.groupby()` على جميع الأعمدة دون فرز.
  • ج) باستخدام `.iloc[0, 1:].tolist()` لاستخراج صف معين (المنطقة) والأعمدة المطلوبة من إطار البيانات المجمع.
  • د) بكتابة القيم يدوياً في قائمة بناءً على قراءة الجدول.

الإجابة الصحيحة: c

الإجابة: باستخدام `.iloc[0, 1:].tolist()` لاستخراج صف معين (المنطقة) والأعمدة المطلوبة من إطار البيانات المجمع.

الشرح: 1. `groupsP.iloc[0, 1:]` تختار الصف الأول (المنطقة الأولى بعد الفرز) والأعمدة من العمود الثاني فما بعده (عادةً أعمدة البيانات الرقمية). 2. `.tolist()` تحول سلسلة البانداس (Pandas Series) الناتجة إلى قائمة بيثون (Python list) قابلة للاستخدام في دالة `ax.pie()` لتمثيل أحجام الشرائح.

تلميح: يتم الوصول إلى صف معين وأعمدة محددة ثم تحويلها إلى قائمة.

التصنيف: صيغة/خطوات | المستوى: صعب