Spaces:
Sleeping
Sleeping
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") | |