Tinsae's picture
dashboard
5c202cd
raw
history blame
3.17 kB
import streamlit as st
import pandas as pd
import geopandas as gpd
from millify import millify
import folium
from PIL import Image
from streamlit_folium import st_folium
def app():
APP_TITLE = "Italy Agrifoods Data"
image = Image.open('data/logo.png')
image=image.resize((100,100))
st.title(APP_TITLE)
#st.set_page_config(layout="wide")
st.title(APP_TITLE)
image = Image.open('data/logo.png')
image=image.resize((100,100))
#load data
df_olives = pd.read_csv("data/Italy_regions_with_code_grapes_olives.csv")
df_cereals = pd.read_csv("data/Italy_regions_with_code_cereals.csv")
df_veg = pd.read_csv("data/Italy_regions_with_code_fresh_veg.csv")
df_fruit = pd.read_csv("data/Italy_regions_with_code_fruit.csv")
df = df_fruit
year = ''
region = "Abruzzo"
#st.write(df.shape)
#st.write(df.head())
product = display_product()
col1, col2 = st.columns(2)
#display map
with col1:
year = display_time_filters(df)
#st.header('{Header!!!!}')
region = display_map(df, year)
with col2:
#display metric
region = display_state_filter(df, region)
metric_title = f"{product} Harvested Production in Quintals {region} - Italy: {year}"
display_yield(df, year, region, metric_title)
def display_time_filters(df):
year_list = list(df['TIME'].unique())
year_list.sort()
year = st.selectbox('Year', year_list, len(year_list)-1)
#st.header(f'{year}')
return year
def display_product():
product_list= ['Cereals', 'Vegetables', 'Fruits', 'Olive']
product = st.selectbox('Agricultural Product',product_list)
return product
def display_state_filter(df, Region):
region_list = [''] + list(df['Region'].unique())
region_list.sort()
state_index = region_list.index(Region) if Region and Region in region_list else 0
return st.selectbox('Region', region_list, state_index)
def display_yield(df, year, region, metric_title):
df = df[df["TIME"] == year]
if region:
df = df[df["Region"] == region]
total = df['Value'].sum()
st.metric(metric_title, millify(total))
def display_map(df, year):
df = df[df["TIME"] == year]
map = folium.Map(location=[42.3, 13], zoom_start=5,scrollWheelZoom=False, tiles='CartoDB positron')
gpd_data = gpd.read_file("data/Italy_regions.zip")
#st.write(gpd_data[gpd_data['NAME_1']=="Valle d'Aosta"])
#st.write(gpd_data)
ch = folium.Choropleth(
geo_data=gpd_data,
data=df,
columns=['region_code', 'Value'],
key_on="feature.properties.ID_1",
fill_color='YlGn',
highlight=True
).add_to(map)
ch.geojson.add_child(
folium.features.GeoJsonTooltip(['NAME_1'], labels=False)
)
st_map = st_folium(map, width=700, height= 450)
region_name = ''
if st_map['last_active_drawing']:
region_name = st_map['last_active_drawing']['properties']['NAME_1']
if region_name == 'Sicily':
return 'Sicilia'
if region_name == 'Apulia':
return 'Puglia'
return region_name