import pandas as pd import streamlit as st # Define the datasets as Python list dictionaries natural_events = [ {'year': 2011, 'location': 'Thailand', 'type': 'Flood', 'effect': 'Economic losses'}, {'year': 2012, 'location': 'USA', 'type': 'Heat waves', 'effect': 'Crop yield reduction'}, {'year': 2013, 'location': 'Philippines', 'type': 'Typhoon', 'effect': 'Death toll'}, {'year': 2014, 'location': 'Brazil', 'type': 'Drought', 'effect': 'Water scarcity'}, {'year': 2015, 'location': 'Indonesia', 'type': 'Forest fires', 'effect': 'Air pollution'}, {'year': 2016, 'location': 'Russia', 'type': 'Melting permafrost', 'effect': 'Methane emissions'}, {'year': 2017, 'location': 'USA', 'type': 'Hurricane', 'effect': 'Property damage'}, {'year': 2018, 'location': 'Japan', 'type': 'Typhoon', 'effect': 'Economic losses'}, {'year': 2019, 'location': 'Australia', 'type': 'Wildfires', 'effect': 'Temperature increase'}, {'year': 2020, 'location': 'Brazil', 'type': 'Deforestation', 'effect': 'CO2 emissions'}, ] population_growth = [ {'year': 2011, 'country': 'India', 'global_population': 7061000000, 'growth_rate': 1.25}, {'year': 2012, 'country': 'Ethiopia', 'global_population': 7096000000, 'growth_rate': 2.65}, {'year': 2013, 'country': 'India', 'global_population': 7125000000, 'growth_rate': 1.26}, {'year': 2014, 'country': 'Nigeria', 'global_population': 7152000000, 'growth_rate': 2.73}, {'year': 2015, 'country': 'China', 'global_population': 7182000000, 'growth_rate': 0.52}, {'year': 2016, 'country': 'India', 'global_population': 7214000000, 'growth_rate': 1.19}, {'year': 2017, 'country': 'Nigeria', 'global_population': 7253000000, 'growth_rate': 2.61}, {'year': 2018, 'country': 'India', 'global_population': 7291000000, 'growth_rate': 1.17}, {'year': 2019, 'country': 'Pakistan', 'global_population': 7329000000, 'growth_rate': 2.04}, {'year': 2020, 'country': 'Nigeria', 'global_population': 7366000000, 'growth_rate': 2.58}, ] # Convert the datasets to Pandas DataFrames natural_events_df = pd.DataFrame(natural_events) population_growth_df = pd.DataFrame(population_growth) # Find the top natural event for each year top_event_df = natural_events_df.sort_values(by='year').groupby('year').first() # Merge the population growth data with the top event data merged_df = pd.merge(top_event_df, population_growth_df, on='year') # Define a function to calculate the population increase for a given year and country def calculate_population_increase(row): population_increase = row['global_population'] * (row['growth_rate'] / 100) return int(population_increase) # Apply the population increase calculation to the merged data merged_df['population_increase'] = merged_df.apply(calculate_population_increase, axis=1) # Set up the Streamlit app st.title("Top Natural Events and Population Growth") # Display the merged data st.write("Merged Data:") st.write(merged_df) # Perform a join to find the population growth for the top event in each year top_event_population_growth = pd.merge(top_event_df, population_growth_df, on='year', how='left') st.write("Population Growth for Top Events:") st.write(top_event_population_growth) # Display a bar chart of the population growth by year population_chart = pd.DataFrame({'year': population_growth_df['year'], 'population_growth': population_growth_df['growth_rate']}) population_chart.set_index('year', inplace=True) st.write("Population Growth Chart:") st.bar_chart(population_chart['population_growth']) # Display a pie chart of the top event types top_event_types = natural_events_df.groupby('type').size().reset_index(name='count') st.write("Top Event Types:") st.write(top_event_types) st.write("Pie Chart of Top Event Types:") st.plotly_chart(top_event_types, kind='pie', values='count', labels='type') # Display a map of the event locations st.write("Map of Event Locations:") st.map(natural_events_df[['location']].drop_duplicates())