تصوير البيانات - علم البيانات - ثاني ثانوي
1. مقدمة في علم البيانات
2. جمع البيانات والتحقق من صحتها
3. التحليل الاستكشافي للبيانات
4. نمذجة البيانات التنبؤية والتوقع
رابط الدرس الرقمي www.ien.edu.sa الدرس الثالث تصوير البيانات كما ذكر سابقا ، فإن تصوير البيانات هو التمثيل البياني للمعلومات والبيانات. إن تصوير البيانات يجعلها أيسر فهما وتحليلا. باستخدام العناصر المرئية مثل المخططات والرسوم البيانية والخرائط، فإنك تجعل البيانات أكثر سهولة وفهما وقابلية للاستخدام. في هذا الدرس، ستستخدم مفكرة جوبيتر لتصوير بياناتك . ويدعم جوبيتر تصوير البيانات بالاستعانة بمكتبات البايثون أنواع تصوير البيانات Types of Data Visualization أكثر أنواع تصوير البيانات شيوعا هي: > المخططات ( الخطية الشريطية، الدائرية). > الرسوم البيانية. > المخطط النقطي. ، > المخطط المدرج التكراري > الجداول. > الخرائط. يتم تمثيل البيانات بشكل مختلف باستخدام الأنواع المختلفة لتصوير البيانات. يجب عليك اختيار نوع الرسم البياني حسب ما تريد تحقيقه من تقريرك. الشكل 3.36: الرسوم الأكثر شيوعًا في تصوير البيانات وزارة التعليم Ministry of Education 2024-1446 } 40 30 30 40 130
أنواع تصوير البيانات
131 Age of empoloyee 42 39 36 33 30 27 24 21 18 15 Monthly temperature January February March April May June July Months August September October November December min temperature average temperature max temperature الشكل :3.37: مخطط خطي يوضح المتوسط السنوي لدرجات الحرارة المنخفضة والمتوسطة المسجلة في أبها 45 40 35 30 25 20 15 10 5 0 Monthly temperature January February March April May June Months average temperature July August September October November December min temperature max temperature الشكل 3.38 مخطط شريطي يوضح المتوسط السنوي لدرجات الحرارة المنخفضة والمتوسطة المسجلة في أبها 44 41 24 38 35 32 29 26 23 20 0 5 10 15 Years of experience الشكل 3.39: مخطط نقطي يبين وجود ارتباط إيجابي بين سنوات الخبرة وزارة التعليم Ministry of Education 2024-1446 وعمر الموظف 20 المخططات Charts المخطط الخطي Line Chart المخطط الخطّي هو تقنية تصوير بيانات بحيث يتم رسم كل قيمة لمتغير مستقل على مدى فترة زمنية وتتصل هذه القيم بخطوط مستقيمة. عادة ما يكون المحور الأفقي متغيرًا مستمرًا مثل الوقت، والمحور الرأسي هو قيم المتغير المستقل. وتكمن بعض المزايا في بساطته في تمثيل تغيير المتغير بمرور الوقت والذي يمكن أن يساعد في اكتشاف التوجهات والأنماط. ويمكنك رسم خطوط متعددة على نفس الرسم البياني ومقارنة تقدم أكثر من متغير مستقل واحد في نفس الفترة الزمنية. المخطط الشريطي Bar Chart المخطط الشريطي يمثل عناصر متغير فئوي على المحور الأفقي (س)، بينما توضح الأعمدة قيم تلك العناصر من خلال ارتفاعها نسبة إلى قيم المحور الرأسي (ص) . يمكن أن تكون المخططات الشريطية عمودية أو أفقية، وعادة ما تسمى المخططات الشريطية العمودية مخططات الأعمدة وهناك العديد من أنواع المخططات الشريطية مثل المخططات الشريطية المجمعة ، والمخططات الشريطية المكدسة، والمخططات الشريطية مع أشرطة الخطأ، وغيرها المزيد. المخطط النقطي Scatter Plot المخطط النقطي هو طريقة لتصوير البيانات باستخدام النقاط لتمثيل قيم المتغيرات المختلفة، وتكون هذه النقاط مبعثرة على الشكل، ومن هنا جاء الاسم. موقع هذه النقط على محوري ( س) و (ص) يمثل قيمها، ويمكنك استخدام ألوان مختلفة لرسم النقاط، حيث يمثل كل لون متغير معين. وعندما تكون قيم المتغيرات التي تمت دراستها بيانات متقطعة، فإن المخطط النقطي يكون أكثر ملاءمة من المخطط الخطي ، حيث أنه أكثر قابلية للتطبيق لتمثيل المتغيرات ذات القيم المستمرة (الحقيقية) . وهناك أنواع مختلفة من المخطط النقطي بناءً على الارتباط بين المتغيرات إيجابي، سلبي لاغي).
المخطط الخطي
المخطط النقطي
المخطط الشريطي
Number of employees 33% 44% 22% car bus metro الشكل 3.40 : مخطط دائري يبين النسبة المئوية لوسيلة النقل المفضلة 12 10 10 00 4 2 0 [1,4] (4,7] (7,10] (10, 13] (13, 16] Years of experience المخطط الدائري Pie Chart المخطط الدائري هو مخطط يشبه الفطائر ، مقسم إلى شرائح تمثل القيم النسبية لبعض المتغيرات في فئة معينة. تمثل كل شريحة من المخطط فئة مختلفة. هناك العديد من أنواع المخططات الدائرية، مثل المخططات الدائرية المجوّفة (Doughnut Charts) والمخططات نصف المجوفة Half-Doughnut Pie Charts) والمخططات الدائرية متعددة الطبقات Multilayered as). مخطط المدرج التكراري Histogram يُعد مخطط المدرّج التكراري ( الهيستوقرام) أحد أقدم تقنيات تصوير البيانات، حيث يشبه المخططات الشريطية ولكنه يختلف عنها في أنه يظهر تواتر البيانات العددية، بينما المخططات الشريطية تعد طريقة لمقارنة فئات البيانات. وعندما تريد إنشاء مخطط المدرج التكراري، فعليك بتجميع البيانات في نطاقات يتم رسمها بعد ذلك على شكل أعمدة متصلة ببعضها البعض، ويُظهر ارتفاع الأعمدة عدد البيانات الموجودة في كل نطاق. البيانات الفئوية هي متغيرات متقطعة، ويمكن أن يكون لها عدد معين من القيم، فعلى سبيل المثال عدد الطلبة في كل منطقة من المملكة العربية السعودية. ويمكن أن يكون للبيانات المستمرة أي قيمة بين الحد الأدنى والقيمة القصوى، على سبيل المثال، الوقت أو درجة الحرارة. الشكل :3.41 مخطط مدرّج تكراري يبيّن توزيع سنوات الخبرة بين الموظفين الجدول 3.12 طرائق مكتبة مات بلوت ليب (Matplotlib) وزارة التعليم Ministry of Education 2024-1446 المعنى ينشئ مخططا شريطيًا. ينشئ مخططا دائريا. يحدد عنوان المخطط. يحدد تسمية محور . يحدد تسمية محور X. يعرض المخطط. الطريقة bar() pie() set_title() set_ylabel() set_xlabel() show() مكتبة مات بلوت ليب Matplotlib Library من أجل تصوير بياناتك، تحتاج إلى استيراد مكتبة جديدة، وهي التي تسمى مات بلوت ليب. وتحتوي هذه المكتبة على بعض الأساليب الجاهزة التي يمكنك استخدامها لجعل المخطط الخاص بك أكثر قابلية للفهم، ويمكنك الاطلاع على هذه الأساليب في الجدول 3.12. وباستخدام هذه المكتبة، يمكنك تقديم بياناتك في أي مخطط تريده. في هذا الدرس، ستستخدم هذه الأساليب لإنشاء مخططات بناءً على إطار البيانات الخاص بك. لدعم النص العربي داخل المخططات التي أنشأتها مكتبـة مـات بلوت ليب، تحتاج إلى تحويل النص العربي إلى تنسيق يمكن عرضه بشكل صحيح. ستستخدم مكتبتي البايثون: arabic_reshaper < bidi.algorithm < من خلال تشغيل المقطع البرمجي الآتي في مفكرة جوبيتر الخاصة بك، يتم تنزيل هاتين المكتبتين وتثبيتهما تلقائيا. !pip install arabic-reshaper !pip install python-bidi الشكل :3.42 تنزيل وتثبيت المكتبتين 132
المخطط الدائري
المخطط المدرج التكراري
البيانات الفئوية هي متغيرات متقطعة
مكتبات مات بلوت ليب
طرق مكتبة مات بلوت ليب
المخطط الشريطي Bar Chart حان الوقت لإنشاء أول مخطط لك في مفكرة جوبيتر. ابدأ باستيراد المكتبات التي ستستخدمها. import matplotlib.pyplot as plt import numpy as np import arabic_reshaper from bidi.algorithm import get_display الشكل 3.43: المكتبات المستوردة الخطوة التالية هي إنشاء مجموعة البيانات التي ستستخدمها. من مجموعة البيانات التي استخدمتها في الدرس السابق، ابدأ بتجميع بياناتك حسب المنطقة باستخدام دالة ( )mean واحصل على متوسط عدد الطلبة والمعلمين والإداريين. قم بفرز إطار البيانات هذا حسب عمود الطلبة. (0)mean().round.[[مجموع الطلبة, مجموع المعلمين, مجموع الإداريين] (as_index=false [ المنطقة الإدارية ]data.groupby (ascending=false ,[ ' مجموع الطلبة ]=groupsB.sort_values by المنطقة الإدارية مجموع الطلبة مجموع المعلمين مجموع الإداريين 4 الشرقية 3 6 7 11 مكة المكرمة الرياض المدينة المنورة تبوك 12 نجران 8 1 2 10 5 9 0 جازان الجوف الحدود الشمالية عسير القصيم حائل الباحة 22.0 110.0 1582.0 20.0 105.0 1378.0 27.0 102.0 1313.0 17.0 97.0 1148.0 20.0 85.0 1088.0 16.0 73.0 1054.0 17.0 71.0 956.0 19.0 79.0 953.0 8.0 61.0 756.0 17.0 72.0 741.0 15.0 72.0 708.0 15.0 69.0 648.0 10.0 57.0 433.0 صنف البيانات بحسب الترتيب التنازلي. الشكل 3.44: إنشاء مجموعة البيانات groupsB groupsB groupsB = = لإنشاء مخطط شريطي أكثر وضوحًا، سيكون الاختيار والاستخدام للصفوف الخمسة الأولى فحسب من مجموعة البيانات الخاصة بك. reg = groupsB.iloc[:5,0].tolist () studentsH == teacherH adminsH = print (reg) == groups B.iloc[:5,1].tolist() groupsB.iloc[:5,2].tolist () groupsB.iloc[:5,3].tolist () print (studentsH) print (teacherH) print (adminsH) [الشرقية', 'مكة المكرمة', ' الرياض', 'المدينة المنورة', 'تبوك'] [1088.0,1148.0, 1312.0,1378.0,1582.0] [85.0,97.0,102.0,105.0,110.0] [20.0,17.0,27.0,20.0, 22.0] الشكل 3.45: حدد الصفوف الخمسة الأولى من مجموعة البيانات 133 وزارة التعليم Ministry of Education 2024-1446
المخطط الشريطي
إنشاء مجموعة البيانات
حدد الخمسة الصفوف الأولى من مجموعة البيانات
وزارة التعليم Ministry of Education 2024-1446 المقطع البرمجي لإنشاء المخطط الخاص بك. reg = groupsB.iloc[:5,0].tolist() studentsH = groupsB.iloc[:5,1].tolist() teacherH = groupsB.iloc[:5,2].tolist () adminsH = groupsB.iloc[:5,3].tolist () يمكنك استخدام هذا المقطع البرمجي، لعرض الأحرف العربية بشكل صحيح. regCor = [get_display (arabic_reshaper.reshape(element)) for element in reg] x = np.arange (len (reg)) #23 the label locations width = 0.5 # the width of the bars # This is a Matplotlib built-in style. plt.style.use('fivethirtyeight') # Determine the size of the figure fig, ax = plt.subplots (figsize=(10,6)) إحداثيات الأعمدة ضع التسمية على المخطط. ((('مجموع الطلبة ) rects1 = ax.bar(x, studentsH, width, label=get_display(arabic_reshaper.reshape # Reshape Arabic letters to display them correctly (('المناطق')regionsLabel = get_display(arabic_reshaper.reshape (('العدد المتوسط")meanLabel = get_display(arabic_reshaper.reshape (('مجموع الطلبة والمعلمين والإداريين، أفضل 5 مناطق) title = get_display(arabic_reshaper.reshape # Set the labels to the axes and the title to the Bar chart ax.set_xlabel (regionsLabel) ax.set_ylabel (meanLabel) ax.set_title (title) ax.set_xticks (x, regcor) # show the value under the bars ax. legend () #23 show the legend ax.bar_label (rectsl, padding=3) # show each bar's value on the top of the bar fig.tight_layout () # fit the chart in to the figure area العدد المتوسط الشكل 3.46: إنشاء المخطط الشريطي 1582 1600 1400 1200 1000 800 600 400 200 0 المخطط الشريطي الخاص بك جاهز. مجموع الطلبة والمعلمين والإداريين، أفضل 5 مناطق مجموع الطلبة 1378 1312 1148 1088 تبوك المدينة المنورة الرياض المناطق مكة المكرمة الشرقية الشكل 3.47: المخطط الشريطي 134
المقطع البرمجي لإنشاء المخطط الخاص بك
135 افترض الآن أنك تريد رسم عدد الطلبة والمعلمين والإداريين على نفس المخطط الشريطي. يسمى هذا المخطط بالمخطط الشريطي المجمع وتحتاج إلى وضع الشرائط بشكل صحيح اعتمادًا على عرض الشريط. fig, ax = plt.subplots (figsize=(10,6)) (('مجموع الطلبة ) studentsLabel = get_display (arabic_reshaper.reshape ((مجموع المعلمين')teachersLabel = get_display(arabic_reshaper.reshape ((مجموع الإداريين')get_display(arabic_reshaper.reshape adminsLabel = rects1 = ax.bar (x - width/3, studentsH, width, label=students Label) rects2 = ax.bar(x, teacherH, width, label=teachersLabel) rects3 = ax.bar (x + width/3, adminsH, width, label=admins Label) # Add some text for labels, title and custom x axis tick labels, etc. regionsLabel = get_display (arabic_reshaper.reshape('ab Lil')) meanLabel = (( العدد المتوسط')get_display(arabic_reshaper.reshape (('مجموع الطلبة والمعلمين والإداريين، أفضل 5 مناطق) title = get_display(arabic_reshaper.reshape ax.set xlabel (regionsLabel) ax.set_ylabel (meanLabel) ax.set_title (title) ax.set_xticks(x, regCor) ax. legend () ax.bar_label (rectsl, padding=3) ax.bar_label (rects2, padding=3) ax.bar_label (rects3, padding=3) fig.tight_layout () وزارة التعليم Ministry of Education 2024-1446 العدد المتوسط 1582 1600 1400 1200 1000 800 600 400 الشكل 3.48 إنشاء المخطط الشريطيي المجمع مجموع الطلبة مجموع الطلبة والمعلمين والإداريين، أفضل 5 مناطق 1378 1310 200 110 105 102 22 22 20 27 0 الشرقية مكة المكرمة الرياض المناطق الشكل 3.49: المخطط الشريطي المجمع 1148 1088 مجموع المعلمين مجموع الإداريين 97 85 17 20 تبوك المدينة المنورة
إنشاء المخطط الشريطي المجمع
136 المخطط الدائري Pie Chart سترى خطوات إنشاء المخطط الدائري في مفكرة جوبيتر ستنشئ إطار بيانات جديد يسمى groupsp من مجموعة البيانات التي استخدمتها في الدرس السابق. قم بتجميع بياناتك حسب المرحلة واحصل على المتوسط (( )mean للطلبة والمعلمين والإداريين، ثم قم بفرز إطار البيانات هذا بمتوسط عدد المسؤولين. مجموع الإداريين مجموع المعلمين المرحلة الإبتدائية 1.7% 7.1% 91.2% الشكل 3.50: مخطط دائري (0) mean().round.[[مجموع الطلبة','مجموع المعلمين','مجموع الإداريين']] (as_index=false,['المرحلة'])data.groupby (ascending=false ,[مجموع الإداريين'] =groupsP.sort_values (by المرحلة مجموع الطلبة مجموع المعلمين مجموع الإداريين 1 المرحلة الإبتدائية 1888.0 4 رياض الأطفال 3 المرحلة المتوسطة 870.0 2 المرحلة الثانوية 0 التعليم المستمر 35.0 147.0 25.0 52.0 575.0 15.0 72.0 11.0 79.0 931.0 1.0 0.0 119.0 الشكل :3.51 إنشاء إطار بيانات جديد مجموع الطلبة = = groupsP groups P groups P الآن ستنشئ مخططًا دائريًا يوضح نسبة الطلبة والمعلمين والإداريين لمنطقة واحدة أولًا، تحتاج إلى إنشاء قائمة تحتوي على شرائح المخطط الدائري. في مثالك، ستكون الشرائح عبارة عن قائمة تحتوي على أعداد الطلبة والمعلمين والإداريين للمنطقة في الصف الأول. fig, ax = plt.subplots (figsize=(10, 6), subplot_kw=dict (aspect="equal")) #create the lists for the slices slices = groups P.iloc[0,1:].tolist () groupsP.columns [1:].tolist() [get_display(arabic_reshaper. reshape (element)) for element in labels] labels = labelsCor = # 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 (groups P.iloc[0,0])) ax.set_title (title) الشكل 3.52: إنشاء مخطط دائري خصائص لمظهر المخطط الدائري. وزارة التعليم Ministry of Education 2024-1446
إنشاء المخطط الدائري
137 الآن ستنشئ شكلا يحتوي على أكثر من مخطط دائري. fig, ([ax1, ax2], [ax3, ax4]) = plt.subplots (2,2, figsize=(16,10), subplot_kw=dict (aspect="equal")) # First pie chart slices = groups P.iloc[0,1:].tolist () labels = groupsP.columns [1:].tolist() labelsCor = [get_display (arabic_reshaper.reshape(element)) for element in labels] axl.pie (slices, labels=labels Cor, shadow=False, startangle=45, autopct='1.1f%%', wedgeprops={'edgecolor': 'black' }) titlel = get_display (arabic_reshaper.reshape (groups P.iloc[0,0])) axl.set title (title1) # Second pie chart slices = groups P.iloc[1,1:].tolist () labels = groupsP.columns [1:].tolist() labelsCor = [get_display (arabic_reshaper.reshape(element)) for element in labels] ax2.pie (slices, labels=labels Cor, shadow=False, startangle=45, autopct='1.1f%%', wedgeprops={'edgecolor': 'black'}) title2 = get_display (arabic_reshaper.reshape (groups P.iloc[1,0])) ax2.set title (title2) # Third pie chart slices = groups P.iloc[2,1:].tolist () labels = groupsP.columns [1:].tolist() labelsCor = [get_display (arabic_reshaper.reshape(element)) for element in labels] ax3.pie (slices, labels=labels Cor, shadow=False, startangle=45, autopct='%1.1f88', wedgeprops={'edgecolor': 'black' }) title3 = get_display (arabic_reshaper.reshape (groups P.iloc[2,0])) ax3.set_title (title3) # Fourth pie chart slices = groups P.iloc[3,1:].tolist () labels = groups P. columns [1:].tolist () labelsCor = [get_display (arabic_reshaper. reshape (element)) for element in labels] ax4.pie (slices, labels=labels Cor, shadow=False, startangle=45, autopct='%1.1f%&', wedgeprops={'edgecolor': 'black' }) title4 = get_display (arabic_reshaper.reshape (groups P.iloc[3,0])) ax4.set_title (title4) وزارة التعليم Ministry of Education 2024-1446 الشكل 3.53: إنشاء أربعة مخططات دائرية تحتوي مكتبة مات بلوت ليب على مجموعة كبيرة من الإعدادات لتصميم مخطط أو رسم بياني. يمكنك زيارة موقع المكتبة الإلكتروني http://matplotlib.org والاطلاع على دليل المستخدم للحصول على تفاصيل كافة إعدادتها.
ستنشئ شكل يحتوي على أكثر من مخطط دائري
تحتوي مكتبة مات بلوت ليب على مجموعة كبيرة من الإعدادات لتصميم مخطط
مجموع الطلبة مجموع الطلبة وزارة التعليم Ministry of Education 2024-1446 91.2% 7.1% المرحلة المتوسطة 90.9% هذا هو مخرج البرنامج، ومن خلال تطبيق خطوات إضافية، يمكنك تغيير تنسيق المخططات الدائرية. مجموع الإداريين مجموع المعلمين 16% 7.5% مجموع الإداريين مجموع المعلمين مجموع الطلبة الشكل 3.54: المخطط الدائري Report SALES 3,2 1 2 3 4 5 6 6,2 0 Product 2,9 1.4 مجموع الطلبة 88.2% 1.8% 8.0% المرحلة الثانوية 91.2% مجموع الإداريين مجموع المعلمين 11% 7.7% مجموع الإداريين مجموع المعلمين met September October ANALYSIS 1,2 100% 90% 80% 70% = Product 1 60% - Product 2 50% 4,3 Product 3 40% - Product 4 30% - Product 5 Product 6 20% 10% 0% November December 2 Quarter 1 Quarter 2 Quarter 3 Quarter 4 138 1 C .B A
شكل المخطط الدائري
139 وزارة التعليم Ministry of Education 2024-1446 تمرينات ناقش أهمية تصوير البيانات كمرحلة في التحليل الاستكشافي للبيانات، ثم وضح أهميته بمثالين. قارن بين الخصائص الرئيسة للمخططات البيانية الخطّية والشريطية، ثم اذكر مثالين لمجموعات البيانات واختر المخطط المناسب لكل مثال 1 2
ناقش أهمية تصوير البيانات كمرحلة في التحليل الاستكشافي للبيانات، ثم وضح أهميته بمثالين
قارن بين الخصائص الرئيسية للمخططات البيانية الخطية والشرطية، ثم اذكر مثالين لمجموعات البيانات واختر المخطط المناسب لكل مثال
140 3 حدد الفرق الرئيس بين المخطط النقطي والمخططات الأخرى ، ثم اذكر مثالا على استخدام المخطط النقطي. 4 أدرج مكتبات بايثون التي تحتاج إليها لتطبيق تقنيات تصوير البيانات، وما الخطوات لبدء استخدامها في مفكرة جوبيتر؟ 5 تريد معرفة عدد السياح الذين يزورون المملكة العربية السعودية شهريًا لمنطقة واحدة في مجموعة البيانات. > ما نوع المخطط الأنسب للاستخدام ؟ (ادعم إجابتك بأسباب منطقية). > اخترأي منطقة من مجموعة البيانات واستخدم مكتبة مات بلوت ليب، وأنشئ نوع المخطط الذي تعتقد أنه الأنسب. > بناءً على المخطط الذي أنشأته، اكتشف الشهر الذي استقبلت فيه المنطقة التي اخترتها أكبر عدد من الزوار. وزارة التعليم Ministry of Education 2024-1446
حدد الفرق الرئيسي بين المخطط النقطي والمخططات الأخرى، ثم اذكر مثلاً على استخدام المخطط النقطي
ادراج مكتبات بايثون التي تحتاجها لتطبيق تقنيات تصوير البيانات، وما هي الخطوات لبدء استخدامها في مفكرة جوبيتر؟
نريد معرفة عدد السياح الذين يزورون المملكة العربية السعودية شهرياً لمنطقة واحدة في مجموعة البيانات
6 تريد مقارنة عدد السياح الذين يزورون المملكة العربية السعودية من 3 أجزاء من العالم: أوروبا وآسيا والشرق الأوسط من شهر أكتوبر إلى يناير. > ما نوع المخطط الأنسب للاستخدام ؟ (ادعم إجابتك بأسباب منطقية). > أنشئ نوع المخطط الذي تعتقد أنه الأنسب. بناءً على المخطط الذي أنشأته، اكتشف أي جزء من العالم جاء منه معظم السياح في كل شهر من أكتوبر إلى يناير. 7 تريد معرفة الشهر الذي استقطب معظم الزوار، ثم معرفة النسبة المئوية لزوار كل منطقة لهذا الشهر. > أنشئ إطار بيانات لتحديد الشهر الذي يضم أكبر عدد من الزوار. > أي نوع من المخططات سيكون الأنسب في هذه الحالة ؟ (ادعم إجابتك بأسباب منطقية). > أنشئ نوع المخطط الذي تعتقد أنه الأنسب. بناءً على المخطط الذي أنشأته، ما المنطقة التي لديها أعلى نسبة من الزوار وأي منها لديها أقل نسبة من الزوار ؟ 141 وزارة التعليم Ministry of Education 2024-1446