# Import necessary libraries import pandas as pd import streamlit as st import matplotlib.pyplot as plt import pydeck as pdk states = { 'Alabama': {'region': 'South', 'population': 4903185, 'area': 135767, 'lat': 32.806671, 'lon': -86.791130}, 'Alaska': {'region': 'West', 'population': 731545, 'area': 1723337, 'lat': 61.370716, 'lon': -152.404419}, 'Arizona': {'region': 'West', 'population': 7278717, 'area': 295234, 'lat': 33.729759, 'lon': -111.431221}, 'Arkansas': {'region': 'South', 'population': 3017804, 'area': 137732, 'lat': 34.969704, 'lon': -92.373123}, 'California': {'region': 'West', 'population': 39538223, 'area': 423967, 'lat': 36.116203, 'lon': -119.681567}, 'Colorado': {'region': 'West', 'population': 5773714, 'area': 269601, 'lat': 39.059811, 'lon': -105.311104}, 'Connecticut': {'region': 'Northeast', 'population': 3605944, 'area': 14357, 'lat': 41.597782, 'lon': -72.755371}, 'Delaware': {'region': 'South', 'population': 989948, 'area': 6446, 'lat': 39.318523, 'lon': -75.507141}, 'Florida': {'region': 'South', 'population': 21538187, 'area': 170312, 'lat': 27.766279, 'lon': -81.686783}, 'Georgia': {'region': 'South', 'population': 10711908, 'area': 153910, 'lat': 33.040619, 'lon': -83.643074}, 'Hawaii': {'region': 'West', 'population': 1415872, 'area': 28314, 'lat': 21.094318, 'lon': -157.498337}, 'Idaho': {'region': 'West', 'population': 1826156, 'area': 216443, 'lat': 44.240459, 'lon': -114.478828}, 'Illinois': {'region': 'Midwest', 'population': 12671821, 'area': 149995, 'lat': 40.349457, 'lon': -88.986137}, 'Indiana': {'region': 'Midwest', 'population': 6732219, 'area': 94326, 'lat': 39.849426, 'lon': -86.258284}, 'Iowa': {'region': 'Midwest', 'population': 3155070, 'area': 145746, 'lat': 42.011539, 'lon': -93.210526}, 'Kansas': {'region': 'Midwest', 'population': 2913314, 'area': 213099, 'lat': 38.526600, 'lon': -96.726486}, 'Kentucky': {'region': 'South', 'population': 4467673, 'area': 104656, 'lat': 37.668140, 'lon': -84.670067}, 'Louisiana': {'region': 'South', 'population': 4648794, 'area': 135659, 'lat': 31.169546, 'lon': -91.867805}, 'Maine': {'region': 'Northeast', 'population': 1362359, 'area': 91634, 'lat': 44.693947, 'lon': -69.381927}, 'Maryland': {'region': 'South', 'population': 6177224, 'area': 32131, 'lat': 39.063946, 'lon': -76.802101}, 'Massachusetts': {'region': 'Northeast', 'population': 7029917, 'area': 27336, 'lat': 42.230171, 'lon': -71.530106}, 'Michigan': {'region': 'Midwest', 'population': 10077331, 'area': 250487, 'lat': 43.326618, 'lon': -84.536095}, 'Minnesota': {'region': 'Midwest', 'population': 5706494, 'area': 225163, 'lat': 45.694454, 'lon': -93.900192}, 'Mississippi': {'region': 'South', 'population': 2989260, 'area': 125438, 'lat': 32.741646, 'lon': -89.678697}, 'Missouri': {'region': 'Midwest', 'population': 6169270, 'area': 180540, 'lat': 38.456085, 'lon': -92.288368}, 'Montana': {'region': 'West', 'population': 1084225, 'area': 380831, 'lat': 46.921925, 'lon': -110.454353}, 'Nebraska': {'region': 'Midwest', 'population': 1952570, 'area': 200330, 'lat': 41.125370, 'lon': -98.268082}, 'Nevada': {'region': 'West', 'population': 3139658, 'area': 286380, 'lat': 38.313515, 'lon': -117.055374}, 'New Hampshire': {'region': 'Northeast', 'population': 1371246, 'area': 24214, 'lat': 43.452492, 'lon': -71.563896}, 'New Jersey': {'region': 'Northeast', 'population': 9288994, 'area': 22591, 'lat': 40.298904, 'lon': -74.521011}, 'New Mexico': {'region': 'West', 'population': 2117522, 'area': 314917, 'lat': 34.840515, 'lon': -106.248482}, 'New York': {'region': 'Northeast', 'population': 20215751, 'area': 141297, 'lat': 42.165726, 'lon': -74.948051}, 'North Carolina': {'region': 'South', 'population': 10488084, 'area': 139391, 'lat': 35.630066, 'lon': -79.806419}, 'North Dakota': {'region': 'Midwest', 'population': 762062, 'area': 183108, 'lat': 47.528912, 'lon': -99.784012}, 'Ohio': {'region': 'Midwest', 'population': 11689100, 'area': 116098, 'lat': 40.388783, 'lon': -82.764915}, 'Oklahoma': {'region': 'South', 'population': 3953823, 'area': 181037, 'lat': 35.565342, 'lon': -96.928917}, 'Oregon': {'region': 'West', 'population': 4217737, 'area': 254799, 'lat': 44.572021, 'lon': -122.070938}, 'Pennsylvania': {'region': 'Northeast', 'population': 12801989, 'area': 119280, 'lat': 40.590752, 'lon': -77.209755}, 'Rhode Island': {'region': 'Northeast', 'population': 1097379, 'area': 4001, 'lat': 41.680893, 'lon': -71.511780}, 'South Carolina': {'region': 'South', 'population': 5148714, 'area': 82933, 'lat': 33.856892, 'lon': -80.945007}, 'South Dakota': {'region': 'Midwest', 'population': 884659, 'area': 199729, 'lat': 44.299782, 'lon': -99.438828}, 'Tennessee': {'region': 'South', 'population': 6833174, 'area': 109153, 'lat': 35.747845, 'lon': -86.692345}, 'Texas': {'region': 'South', 'population': 29145505, 'area': 695662, 'lat': 31.054487, 'lon': -97.563461}, 'Utah': {'region': 'West', 'population': 3271616, 'area': 219882, 'lat': 40.150032, 'lon': -111.862434}, 'Vermont': {'region': 'Northeast', 'population': 623989, 'area': 24906, 'lat': 44.045876, 'lon': -72.710686}, 'Virginia': {'region': 'South', 'population': 8631393, 'area': 110787, 'lat': 37.769337, 'lon': -78.170400}, 'Washington': {'region': 'West', 'population': 7693612, 'area': 184661, 'lat': 47.400902, 'lon': -121.490494}, 'West Virginia': {'region': 'South', 'population': 1792147, 'area': 62756, 'lat': 38.491000, 'lon': -80.954570}, 'Wisconsin': {'region': 'Midwest', 'population': 5851754, 'area': 169635, 'lat': 44.268543, 'lon': -89.616508}, 'Wyoming': {'region': 'West', 'population': 578759, 'area': 253335, 'lat': 42.755966, 'lon': -107.302490} } # Create a function to calculate population density def calculate_density(population, area): return population / area # Create a function to plot the graph def plot_graph(df, region): plt.figure(figsize=(10, 5)) plt.bar(df['State'], df['Population Density']) plt.title(f'Population Density of States in {region} Region') plt.xlabel('State') plt.ylabel('Population Density') plt.xticks(rotation=90) plt.show() # Group states by region and calculate the total population and area for each region regions = {} for state, data in states.items(): region = data['region'] population = data['population'] area = data['area'] if region not in regions: regions[region] = {'population': population, 'area': area, 'states': []} else: regions[region]['population'] += population regions[region]['area'] += area regions[region]['states'].append(state) # Calculate the population density for each state in each region and create dataframes dataframes = [] for region, data in regions.items(): population = data['population'] area = data['area'] states_in_region = data['states'] densities = [] for state in states_in_region: state_data = states[state] state_population = state_data['population'] state_area = state_data['area'] state_density = calculate_density(state_population, state_area) densities.append(state_density) df = pd.DataFrame({'State': states_in_region, 'Population Density': densities}) dataframes.append(df) plot_graph(df, region) # Use Streamlit to display dataframes for df in dataframes: st.write(df) # Add lat and lon to your states data #states = { # 'Alabama': {'region': 'South', 'population': 4903185, 'area': 135767, 'lat': 32.806671, 'lon': -86.791130}, # 'Alaska': {'region': 'West', 'population': 731545, 'area': 1723337, 'lat': 61.370716, 'lon': -152.404419}, # # Continue for all states... #} # Create dataframe from states data df = pd.DataFrame.from_dict(states, orient='index').reset_index() df.columns = ['State', 'Region', 'Population', 'Area', 'Latitude', 'Longitude'] # Define initial viewport for the deckgl map view_state = pdk.ViewState( longitude=-97.6, latitude=38.5, zoom=3, pitch=50, ) # Define deckgl layer layer = pdk.Layer( "ScatterplotLayer", data=df, get_position='[Longitude, Latitude]', get_radius='Area', get_fill_color='[190, 30, 0, 140]', pickable=True, auto_highlight=True, ) # Render the deckgl map in the Streamlit app st.pydeck_chart(pdk.Deck(layers=[layer], initial_view_state=view_state))