import streamlit as st import pandas as pd import folium from streamlit_folium import st_folium # Data for each state data = { "MA": { "Companies": [ {"Name": "Amazon (MA)", "Employees": 7000, "City": "Boston"}, {"Name": "MIT (Cambridge, MA)", "Employees": 6300, "City": "Cambridge"}, {"Name": "Fidelity Investments (Boston, MA)", "Employees": 5000, "City": "Boston"}, {"Name": "State Street Corporation (Boston, MA)", "Employees": 4000, "City": "Boston"}, {"Name": "Partners Healthcare System (Boston, MA)", "Employees": 3500, "City": "Boston"} ], "Cities": [ {"Name": "Boston", "Population": 700000, "Income": 75000, "Latitude": 42.3601, "Longitude": -71.0589}, {"Name": "Cambridge", "Population": 120000, "Income": 85000, "Latitude": 42.3736, "Longitude": -71.1097}, # Add other cities... ], "Hospitals": [ {"Name": "Massachusetts General Hospital", "Beds": 1000, "City": "Boston"}, # Add other hospitals... ] }, # Add data for CA and WA... } # Streamlit page configuration st.set_page_config(page_title="State Data", layout="wide") # Main title st.title("State Information Dashboard") # Select a state selected_state = st.selectbox("Select a State:", ["MA", "CA", "WA"]) # Process selected state data companies_df = pd.DataFrame(data[selected_state]["Companies"]) cities_df = pd.DataFrame(data[selected_state]["Cities"]) hospitals_df = pd.DataFrame(data[selected_state]["Hospitals"]) # Display DataFrames st.write("Companies:") st.dataframe(companies_df) st.write("Cities:") st.dataframe(cities_df) st.write("Hospitals:") st.dataframe(hospitals_df) # Create a Folium map for the selected state m = folium.Map(location=[cities_df["Latitude"].mean(), cities_df["Longitude"].mean()], zoom_start=7) # Add markers for cities, companies, and hospitals for _, city in cities_df.iterrows(): folium.Marker([city["Latitude"], city["Longitude"]], tooltip=f"{city['Name']}").add_to(m) for _, company in companies_df.iterrows(): # Find the city's coordinates city = cities_df[cities_df["Name"] == company["City"]].iloc[0] folium.Marker([city["Latitude"], city["Longitude"]], tooltip=f"{company['Name']}").add_to(m) for _, hospital in hospitals_df.iterrows(): # Find the city's coordinates city = cities_df[cities_df["Name"] == hospital["City"]].iloc[0] folium.Marker([city["Latitude"], city["Longitude"]], tooltip=f"{hospital['Name']}").add_to(m) # Display the map st_folium(m, width=700, height=500) # Footer st.caption("Data source: User provided")