موقع د. عزيز الجعيد
  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

علم البيانات والذكاء الاصطناعي

  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

تصوير البيانات باستخدام الخرائط في بايثون

15/01/2024 | لغة البرمجة بايثون | شارك بتعليقك

في هذا المقال سوف نستعرض كيفية تصوير البيانات على مستوى مناطق المملكة، وذلك من خلال بيانات السكان SA_population وكذلك من خلال البيانات الجغرافية للمناطق SA_regions. سوف نتبع الخطوات التالية:

اولاً: تحميل المكتبات المطلوبة

In:
import folium
import pandas as pd
import geopandas as gpd

ثانياً: تحميل بيانات السكان والبيانات الجغرافية للمناطق

In:
SA_population = pd.read_csv('media/SA_population.csv',encoding='utf8')
print(SA_population.head(2))
Out:
   الجنسية    المحافظة    المدينة      المنطقة     النوع     السكان
0   سعودي    ميسان  (القان) ابوضروه  مكة المكرمة  أنثى       8
1   سعودي    ميسان  (القان) ابوضروه  مكة المكرمة   ذكر       9

 

In:
SA_regions=gpd.read_file('media/SA_regions.json')
SA_regions.rename(columns={"name": "المنطقة"}, inplace=True)
print(SA_regions.head(2))
Out:
  المنطقة                                           geometry
0  القصيم  POLYGON ((41.23742 25.47977, 41.24561 25.47945...
1  الرياض  POLYGON ((41.97361 23.85194, 41.97388 23.81028...

 

ثالثاً: تهيئة البيانات السكانية

من خلال تجميع عدد السكان على مستوى المناطق وكذلك إضافة عمود نسبة سكان كل منطقة من العدد الإجمالي

In:
Regions_population=SA_population.groupby(['المنطقة'], as_index=False)['السكان'].sum()
Regions_population["النسبة"] = round((Regions_population['السكان'] / Regions_population['السكان'].sum()) * 100)
print(Regions_population.head(2))
Out:
  المنطقة   السكان       النسبة
0  الباحة   339174     1.0
1  الجوف   595822     2.0

 

رابعاً: دمج بيانات السكان والبيانات الجغرافية للمناطق لتسهيل عملية تصويرها

In:
SA_regions_pop=SA_regions.merge(Regions_population,on="المنطقة")
print(SA_regions_pop.head(2))
Out:
   المنطقة                                       geometry       النسبة       السكان        
0  القصيم  POLYGON ((41.23742 25.47977, 41.24561 25.47945...  1336179     4.0
1  الرياض  POLYGON ((41.97361 23.85194, 41.97388 23.81028...  8591748    27.0

خامساً: تصوير البيانات على الخريطة

In:
SA_map = folium.Map(location=[23,45], zoom_start=5, tiles="Stamen Watercolor")
bins = list(SA_regions_pop['النسبة'].quantile([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]))
choropleth = folium.Choropleth(
    geo_data=SA_regions_pop,
    name='choropleth',
    data=SA_regions_pop,
    columns=['المنطقة', 'النسبة'],
    key_on='feature.properties.المنطقة',
    fill_color='YlGn',
    fill_opacity=0.7,
    line_opacity=0.3, 
    legend_name='التوزيع النسبي للسكان على مستوى المناطق',
    bins=bins,
    reset=True
).add_to(SA_map)

style_function = "font-size: 15px; font-weight: bold"
choropleth.geojson.add_child(
    folium.features.GeoJsonTooltip(['المنطقة','السكان','النسبة'], style=style_function, labels=True))
SA_map

ملاحظة:

من خلال خيار (tiles) يمكن التحكم في عرض واجهة الخريطة ومميزاتتها بما يتناسب مع الأغراض المختلفة كما في الكود أدناه:

folium.TileLayer('Stamen Terrain').add_to(SA_map)
folium.TileLayer('Stamen Toner').add_to(SA_map)
folium.TileLayer('Stamen Water Color').add_to(SA_map)
folium.TileLayer('cartodbpositron').add_to(SA_map)
folium.TileLayer('cartodbdark_matter').add_to(SA_map)
folium.LayerControl().add_to(SA_map)
SA_map

 

المصادر:
بيانات السكان – الهيئة العامة للاحصاء
البيانات الجغرافية للمناطق – github.com

جميع الحقوق الفكرية لهذا المقال محفوظة © موقع د. عزيز، يمنع إعادة نشره في موقع آخر

مقالات ذات صلة:

  • مقدمة في البايثون Python

    بايثون هي لغة برمجة متعددة الأغراض، تعمل على عدد من المنصات مثل ويندوز (Windows) و ماك (Mac OS X) و لينوكس (Linux).... مقدمة في البايثون Python
    اقرأ المزيد
  • قراءة ملفات البيانات في بايثون Python

    في هذا المقال سوف نستعرض كيف يمكن قراءة ملفات البيانات بأنواعها المختلفة باستخدام لغة البرمجة بايثون. في البداية نحتاج... قراءة ملفات البيانات في بايثون Python
    اقرأ المزيد
  • دوال القائمة (list) في بايثون Python

    تعتبر القائمة (list) احد انواع هياكل البيانات شائعة الاستخدام في في لغة البرمجة بايثون والتي يمكن أن تحوي انواع مختلفة... دوال القائمة (list) في بايثون Python
    اقرأ المزيد

شارك بتعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.

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

  • YouTube
جميع الحقوق محفوظة © موقع د. عزيز