في هذه المقالة، سأرشدك خلال تحليل أنماط الطقس باستخدام لغة بايثون. بدءًا من تحديد اتجاهات درجات الحرارة وحتى تصور هطول الأمطار، يعد هذا الدليل التفصيلي مثاليًا لأي شخص مهتم باستخدام تقنيات علم البيانات لتحليل الطقس. سأستكشف التعليمات البرمجية ومعالجة البيانات والمرئيات للحصول على رؤى عملية.
في كينيا، يلعب الطقس دورًا حاسمًا في العديد من القطاعات، وخاصة الزراعة والسياحة والأنشطة الخارجية. يحتاج المزارعون والشركات ومخططو الأحداث إلى معلومات دقيقة عن الطقس من أجل اتخاذ القرارات. ومع ذلك، يمكن أن تختلف أنماط الطقس بشكل كبير عبر المناطق المختلفة، وقد لا توفر أنظمة التنبؤ الحالية دائمًا رؤى محلية.
الهدف من هذا المشروع هو جمع بيانات الطقس في الوقت الفعلي من OpenWeatherMap API وWeather API لمناطق مختلفة عبر كينيا. سيتم تخزين هذه البيانات في قاعدة بيانات وتحليلها باستخدام Python للكشف عن رؤى حول: -
في هذا المشروع، أقوم بتحليل مجموعة بيانات تحتوي على معلومات الطقس لمدن مختلفة في كينيا. تتضمن مجموعة البيانات أكثر من 3000 صف من عمليات رصد الطقس، بما في ذلك درجة الحرارة والرطوبة والضغط وسرعة الرياح والرؤية وهطول الأمطار، من بين عوامل أخرى. باستخدام هذه الأفكار، نهدف إلى توفير تنبؤات جوية دقيقة خاصة بالمنطقة والتي يمكن أن تساعد في اتخاذ القرار في القطاعات الحساسة للطقس مثل الزراعة والسياحة وحتى الإدارة.
تم تنظيم مجموعة البيانات باستخدام عدة أعمدة:
هذه هي الطريقة التي يتم بها تنظيم البيانات في قاعدة البيانات.
الخطوة الأولى في التحليل تضمنت الاستكشاف الأساسي للبيانات.
_ أبعاد البيانات - تحتوي مجموعة البيانات على 3000 صف و14 عمود.
_ القيم الخالية - الحد الأدنى من البيانات المفقودة، مما يضمن موثوقية مجموعة البيانات لمزيد من التحليل.
print(df1[['temperature_celsius', 'humidity_pct', 'pressure_hpa', 'wind_speed_ms', 'rain', 'clouds']].describe())
باستخدام الكود أعلاه، قمنا بحساب إحصائيات موجزة للأعمدة الرقمية، التي قدمت رؤى حول نطاق ومتوسط وانتشار درجة الحرارة والرطوبة والضغط وهطول الأمطار والسحب.
للحصول على فهم أوضح لخصائص الطقس، قمنا بتخطيط توزيعات مختلفة:
توزيع درجة الحرارة
sns.displot(df1['temperature_celsius'], bins=50, kde=True) plt.title('Temperature Distribution') plt.xlabel('Temperature (Celsius)')
يكشف هذا التوزيع عن الانتشار العام لدرجات الحرارة على مستوى المدن. يعطي مخطط خط كيدي تقديرًا سلسًا للتوزيع الاحتمالي لدرجة الحرارة.
توزيع الأمطار
sns.displot(df1['rain'], bins=50, kde=True) plt.title('Rainfall Distribution') plt.xlabel('Rainfall (mm/h)')
يقوم هذا الكود بتحليل توزيع هطول الأمطار عبر المدن الكينية.
الرطوبة والضغط وسرعة الرياح
مخططات توزيع مماثلة لـ الرطوبة (٪) ، الضغط (hPa) ، و سرعة الرياح (م / ث) ، كل منها يوفر رؤى مفيدة حول الاختلافات في هذه المعلمات عبر مجموعة البيانات.
تم حساب الظروف الجوية (على سبيل المثال، "السحب"، "المطر") وتصورها باستخدام مخطط دائري لإظهار توزيعها النسبي:
condition_counts = df1['weather_condition'].value_counts() plt.figure(figsize=(8,8)) plt.pie(condition_counts, labels=condition_counts.index, autopct='%1.1f%%', pctdistance=1.1, labeldistance=0.6, startangle=140) plt.title('Distribution of Weather Conditions') plt.axis('equal') plt.show()
كان أحد التحليلات الرئيسية هو إجمالي هطول الأمطار حسب المدينة:
rainfall_by_city = df1.groupby('city')['rain'].sum().sort_values() plt.figure(figsize=(12,12)) rainfall_by_city.plot(kind='barh', color='skyblue') plt.title('Total Rainfall by City') plt.xlabel('Total Rainfall (mm)') plt.ylabel('City') plt.tight_layout() plt.show()
سلط هذا المخطط الشريطي الضوء على المدن التي تلقت أكبر قدر من الأمطار خلال الفترة المرصودة، مع وجود عدد قليل من القيم المتطرفة التي تظهر هطول أمطار كبيرة مقارنة بالمدن الأخرى.
avg_temp_by_month.plot(kind='line') plt.title('Average Monthly Temperature')
كشف الرسم البياني الخطي عن تقلبات درجات الحرارة عبر الأشهر المختلفة، موضحًا التغيرات الموسمية.
monthly_rain.plot(kind='line') plt.title('Average Monthly Rainfall')
وبالمثل، تم تحليل هطول الأمطار لملاحظة مدى اختلافه من شهر لآخر.
قمنا أيضًا بتصور البيانات باستخدام الخرائط الحرارية لفهم أكثر سهولة لدرجة الحرارة الشهرية وهطول الأمطار.
فيما يلي الخرائط الحرارية لمتوسط درجة الحرارة الشهرية وهطول الأمطار
بعد ذلك، قمت بحساب مصفوفة الارتباط بين متغيرات الطقس الرئيسية:
correlation_matrix = df1[['temperature_celsius', 'humidity_pct', 'pressure_hpa', 'wind_speed_ms', 'rain', 'clouds']].corr() correlation_matrix sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm') plt.title('Correlation Between Weather Variables')
أتاحت لنا خريطة الحرارة هذه تحديد العلاقات بين المتغيرات. على سبيل المثال، لاحظنا وجود علاقة سلبية بين درجة الحرارة والرطوبة، كما هو متوقع.
لقد ركزت على مدن فردية مثل مومباسا ونيري، لاستكشاف أنماط الطقس الفريدة الخاصة بها:
اتجاهات درجة الحرارة في مومباسا
plt.plot(monthly_avg_temp_msa) plt.title('Temperature Trends in Mombasa Over Time')
أظهرت هذه المدينة تباينًا كبيرًا في درجات الحرارة على مدار العام.
اتجاهات هطول الأمطار في نييري
plt.plot(monthly_avg_rain_nyr) plt.title('Rainfall Trends in Nyeri Over Time')
أظهرت بيانات هطول الأمطار في نيري نمطًا موسميًا واضحًا، حيث بلغ هطول الأمطار ذروته خلال أشهر معينة.
يوفر هذا التحليل نظرة شاملة عن الأحوال الجوية في المدن الكبرى، مع تسليط الضوء على درجة الحرارة وهطول الأمطار ومتغيرات الطقس الرئيسية الأخرى. باستخدام تصورات مثل الرسوم البيانية، والمخططات الخطية، والمخططات الدائرية، والخرائط الحرارية، تمكنا من استخلاص رؤى ذات معنى في البيانات. يمكن أن يتضمن التحليل الإضافي مقارنة هذه الاتجاهات بأنماط الطقس التاريخية أو استكشاف النماذج التنبؤية للتنبؤ باتجاهات الطقس المستقبلية.
يمكنك العثور على Jupyter Notebook مع الكود الكامل لهذا التحليل في مستودع GitHub الخاص بي).
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3