Created
July 27, 2023 16:44
-
-
Save kururu-abdo/0c7fba7329dc01a413397ddbe7d4b4aa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
import folium | |
from js import fetch | |
import datetime as dt | |
import io | |
%matplotlib inline | |
#import data | |
URL = "https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/Data%20Files/Historical_Wildfires.csv" | |
resp = await fetch(URL) | |
text = io.BytesIO((await resp.arrayBuffer()).to_py()) | |
df = pd.read_csv(text) | |
df['Year'] = pd.to_datetime(df['Date']).dt.year | |
df['Month'] = pd.to_datetime(df['Date']).dt.month | |
#normal plot | |
plt.figure(figsize=(12, 6)) | |
df_new=df.groupby('Year')['Estimated_fire_area'].mean() | |
df_new.plot(x=df_new.index, y=df_new.values) | |
plt.xlabel('Year') | |
plt.ylabel('Average Estimated Fire Area (km²)') | |
plt.title('Estimated Fire Area over Time') | |
plt.show() | |
#after notice some patterns and trends you can zoom more in dataa | |
df_new=df.groupby(['Year','Month'])['Estimated_fire_area'].mean() | |
df_new.plot(x=df_new.index, y=df_new.values) | |
plt.xlabel('Year, Month') | |
plt.ylabel('Average Estimated Fire Area (km²)') | |
plt.title('Estimated Fire Area over Time') | |
plt.show() | |
#SEABON: bar plot | |
plt.figure(figsize=(10, 6)) | |
sns.barplot(data=df, x='Region', y='Mean_estimated_fire_brightness') | |
plt.xlabel('Region') | |
plt.ylabel('Mean Estimated Fire Brightness (Kelvin)') | |
plt.title('Distribution of Mean Estimated Fire Brightness across Regions') | |
plt.show() | |
#SEABORN : pie plot | |
plt.figure(figsize=(10, 6)) | |
region_counts = df.groupby('Region')['Count'].sum() | |
plt.pie(region_counts, labels=region_counts.index, autopct='%1.1f%%') | |
plt.title('Percentage of Pixels for Presumed Vegetation Fires by Region') | |
plt.axis('equal') | |
plt.show() | |
#add legend | |
#TODO | |
plt.figure(figsize=(10, 6)) | |
region_counts = df.groupby('Region')['Count'].sum() | |
plt.pie(region_counts, labels=region_counts.index) | |
plt.title('Percentage of Pixels for Presumed Vegetation Fires by Region') | |
plt.legend([(i,round(k/region_counts.sum()*100,2)) for i,k in zip(region_counts.index, region_counts)]) | |
plt.axis('equal') | |
plt.show() | |
#PLT hist | |
#TODO | |
plt.figure(figsize=(10, 6)) | |
plt.hist(x=df['Mean_estimated_fire_brightness'], bins=5) | |
plt.xlabel('Mean Estimated Fire Brightness (Kelvin)') | |
plt.ylabel('Count') | |
plt.title('Histogram of Mean Estimated Fire Brightness') | |
plt.show() | |
#SEABOTN histplot | |
sns.histplot(data=df, x='Mean_estimated_fire_brightness', hue='Region') | |
plt.show() | |
sns.histplot(data=df, x='Mean_estimated_fire_brightness', hue='Region', multiple='stack') | |
plt.show() | |
#SEABORN scatter plot | |
plt.figure(figsize=(8, 6)) | |
sns.scatterplot(data=df, x='Mean_confidence', y='Mean_estimated_fire_radiative_power') | |
plt.xlabel('Mean Estimated Fire Radiative Power (MW)') | |
plt.ylabel('Mean Confidence') | |
plt.title('Mean Estimated Fire Radiative Power vs. Mean Confidence') | |
plt.show() | |
#FOLIUM | |
region_data = {'region':['NSW','QL','SA','TA','VI','WA','NT'], 'Lat':[-31.8759835,-22.1646782,-30.5343665,-42.035067,-36.5986096,-25.2303005,-19.491411], | |
'Lon':[147.2869493,144.5844903,135.6301212,146.6366887,144.6780052,121.0187246,132.550964]} | |
reg=pd.DataFrame(region_data) | |
reg | |
aus_reg = folium.map.FeatureGroup() | |
# Create a Folium map centered on Australia | |
Aus_map = folium.Map(location=[-25, 135], zoom_start=4) | |
# loop through the region and add to feature group | |
for lat, lng, lab in zip(reg.Lat, reg.Lon, reg.region): | |
aus_reg.add_child( | |
folium.features.CircleMarker( | |
[lat, lng], | |
popup=lab, | |
radius=5, # define how big you want the circle markers to be | |
color='red', | |
fill=True, | |
fill_color='blue', | |
fill_opacity=0.6 | |
) | |
) | |
# add incidents to map | |
Aus_map.add_child(aus_reg) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment