Spaces:
Runtime error
Runtime error
| import matplotlib.pyplot as plt | |
| import pandas as pd | |
| import plotly.express as px | |
| import streamlit as st | |
| def load_data(): | |
| # Load the data | |
| data = pd.read_csv( | |
| "micro_world.csv" | |
| ) | |
| return data | |
| def introduction(): | |
| # Write the title and the subheader | |
| st.title( | |
| "Overview of Financial Accessibility in the Philippines" | |
| ) | |
| st.subheader( | |
| """ | |
| In line with the National Strategy for Financial Inclusion (NSFI) 2022-2028 by Bangko Sentral ng Pilipinas (BSP), this sprint aims to: | |
| 1. Profile financial inclusion (FI) metrics in the Philippines using survey data from World Bank. | |
| 2. Formulate policy recommendations to further improve access to financial services particularly to vulnerable sectors. | |
| """ | |
| ) | |
| # Load photo | |
| st.image("streamlit-photo-1.jpeg") | |
| # Load data | |
| data = load_data() | |
| # Display data | |
| st.markdown("**The Data**") | |
| st.dataframe(data) | |
| st.markdown("Source: Global Findex 2017 from World Bank.") | |
| def fi_state_ph(): | |
| # Write the title | |
| st.title( | |
| "This is the current state of FI in the Philippines." | |
| ) | |
| # Load data | |
| data = load_data() | |
| # Fetch Philippine data | |
| philippine_data = data[ | |
| data['economy'] == 'Philippines' | |
| ] | |
| # Create another column for debit card ownership | |
| philippine_data['has_debit_card'] = philippine_data['fin2'].apply( | |
| lambda x: 1 if x == 1 else 0 | |
| ) | |
| # Compute overall debit card ownership | |
| percent_debit_card_ownership = philippine_data['has_debit_card'].sum() * 100.0 / philippine_data[ | |
| 'wpid_random'].count() | |
| # Partition the page into 2 | |
| col1, col2 = st.columns(2) | |
| # Display text in column 1 | |
| col1.markdown( | |
| "In the Philippines, there is still an opportunity to expand access to financial services: " | |
| ) | |
| # Display metric in column 2 | |
| col2.metric( | |
| label='% of Population with Debit Card', | |
| value=percent_debit_card_ownership | |
| ) | |
| # Display text | |
| st.markdown("In terms of gender breakdown:") | |
| # Create another column for gender | |
| philippine_data['gender'] = philippine_data['female'].apply( | |
| lambda x: 'male' if x == 1 else 'female' | |
| ) | |
| # Compute breakdown of access to debit card by gender | |
| debit_by_gender = philippine_data.groupby('gender').agg( | |
| total_debit_card_owners=('has_debit_card', 'sum'), | |
| total_population=('wpid_random', 'count') | |
| ).reset_index() | |
| # Compute % debit card ownership | |
| debit_by_gender['% debit card ownership'] = debit_by_gender['total_debit_card_owners'] * 100.0 / debit_by_gender[ | |
| 'total_population'] | |
| # Plot the data | |
| fig, ax = plt.subplots(figsize=(6, 3), dpi=200) | |
| ax.bar( | |
| debit_by_gender["gender"], | |
| debit_by_gender["% debit card ownership"], | |
| ) | |
| ax.set_xlabel("Gender") | |
| ax.set_ylabel("% Debit Card Ownership") | |
| # Show the data | |
| st.pyplot(fig) | |
| def fi_state_worldwide(): | |
| # Write the title and the subheader | |
| st.title( | |
| "This is the current state of FI worldwide." | |
| ) | |
| st.markdown( | |
| "**Here is a bubble map presenting the % of debit card ownership per country:**" | |
| ) | |
| # Load data | |
| data = load_data() | |
| # Create another column for debit card ownership | |
| data['has_debit_card'] = data['fin2'].apply( | |
| lambda x: 1 if x == 1 else 0 | |
| ) | |
| # Group the data and apply aggregations | |
| grouped_data = data.groupby(['economy', 'economycode', 'regionwb']).agg( | |
| total_debit_card_owners=('has_debit_card', 'sum'), | |
| total_population=('wpid_random', 'count') | |
| ).reset_index() | |
| # Compute debit card ownership in % | |
| grouped_data['% of population with debit card'] = grouped_data['total_debit_card_owners'] * 100.0 / grouped_data[ | |
| 'total_population'] | |
| # Build the bubble map | |
| fig = px.scatter_geo( | |
| grouped_data, | |
| locations="economycode", | |
| color="regionwb", | |
| hover_name="economy", | |
| size="% of population with debit card", | |
| projection="natural earth" | |
| ) | |
| # Show the figure | |
| st.plotly_chart(fig) | |
| def recommendations(): | |
| # Write the title | |
| st.title( | |
| "What We Can Do" | |
| ) | |
| def the_team(): | |
| # Write the title | |
| st.title( | |
| "The Team" | |
| ) | |
| list_of_pages = [ | |
| "Towards Financial Inclusion", | |
| "FI Status of the Philippines", | |
| "FI Status Worldwide", | |
| "What We Can Do", | |
| "The Team" | |
| ] | |
| st.sidebar.title(':scroll: Main Pages') | |
| selection = st.sidebar.radio("Go to: ", list_of_pages) | |
| if selection == "Towards Financial Inclusion": | |
| introduction() | |
| elif selection == "FI Status of the Philippines": | |
| fi_state_ph() | |
| elif selection == "FI Status Worldwide": | |
| fi_state_worldwide() | |
| elif selection == "What We Can Do": | |
| recommendations() | |
| elif selection == "The Team": | |
| the_team() | |