Streamlit è una libreria Python open source per la creazione di web app analitiche veloci, performanti e belle. Trasforma gli script di dati in applicazioni condivisibili in pochi minuti.

In questo articolo vedremo come costruire una web app utilizzando streamlit.

Hello World in Streamlit

Possiamo creare una semplice app hello world in questo modo:

  1. Assicurarsi di avere installata una versione di python 3.6+.
  2. Installare streamlit usando PIP:
pip install streamlit

3. Creare un file python app.py, inserire il codice seguente e salvarlo:

import streamlit as st

st.title('Hello World')
st.write('Prima app in streamlit')

Analizziamo nel dettaglio le ultime due righe di codice:

  • st.title() ci consente di impostare il titolo della pagina;
  • st.write() accetta diversi tipi di dati in input (testo, dataframe, numeri ecc…) e li mostra a video.

Per approfondire si consiglia la documentazione delle API di streamlit.

4. Avviare l’applicazione lanciando dal terminale il comando:

streamlit run app

Dopo qualche secondo l’applicazione andrà in esecuzione nel browser predefinito.

Hello World in streamlit (Dark Mode)

Creare un’Applicazione per il Monitoraggio del Covid-19 nelle Regioni Italiane

Creiamo adesso, una semplice applicazione che consentirà, dopo aver selezionato una regione di:

  • Visualizzare il capoluogo della stessa su una mappa;
  • Riepilogare, in real time, alcuni dati relativi al covid-19 della regione.

Per la costruzione di questa applicazione, ci focalizziamo più sulle funzionalità che sul design. Negli articoli successivi, vedremo come realizzare delle vere e proprie dashboard accattivanti.

Il risultato finale è accessibile al seguente link e vengono mostrate, di seguito, alcune immagini:

Selezione della regione
Dati della regione Sicilia

Coding…

Iniziamo adesso a scrivere il codice, partendo dall’import delle librerie streamlit pandas(che utilizzeremo per gestire i dataframe):

import streamlit as st
import pandas as pd

I dati utilizzati dall’applicazione provengono dal repository ufficiale della protezione civile. Per usufruire dei dati in real time, utilizziamo pandas e creiamo un dataframe dall’url del file csv contenente i dati aggiornati:

url = "https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-regioni/dpc-covid19-ita-regioni-latest.csv"
df = pd.read_csv(url, parse_dates=['data'])
df = df.rename(columns={'long': 'lon'}) # Rinominiamo la colonna

Successivamente con st.title() settiamo il titolo della nostra applicazione, seguito da un header. Per consentire all’utente di scegliere una regione, utilizziamo l’oggetto st.selectbox(), al quale passiamo la label e la lista di opzioni da visualizzare. Dopo che l’utente ha selezionato un valore, questo viene memorizzato nella variabile regione, la quale viene utilizzata successivamente per filtrare il dataframe e prelevare solo i dati della regione selezionata:

st.title("COVID-19 NELLE REGIONI ITALIANE 🦠")
st.header("Seleziona una regione per visualizzare un riepilogo dei dati")
regione = st.selectbox('REGIONE', options=list(df['denominazione_regione']))
df_regione = df[df['denominazione_regione'] == regione]

Grazie all’oggetto st.map(), è possibile creare una mappa interattiva passando come parametro la longitudine e la latitudine. Successivamente, al di sotto della mappa, sono state create due colonne che riportano i dati di riepilogo, della regione selezionata, accedendo direttamente alle colonne del dataframe.

# Creazione mappa
st.map(df_regione[['lon', 'lat']], zoom=7)# Creazione colonne
col1, col2 = st.beta_columns(2)# Colonna 1
col1.write(f"🔘 Casi Totali: {df_regione['totale_casi'].values[0]}")
col1.write(f"🔘 Nuovi Positivi: {df_regione['nuovi_positivi'].values[0]}")
col1.write(f"🔘 Tamponi Effettuati: {df_regione['tamponi'].values[0]}")# Colonna 2
col2.write(f"🟢 Guariti: {df_regione['dimessi_guariti'].values[0]}")
col2.write(f"🟠 Terapia Intensiva: {df_regione['terapia_intensiva'].values[0]}")
col2.write(f"🔴 Deceduti: {df_regione['deceduti'].values[0]}")

Deploy

Un’altra funzionalità di streamlit, di notevole importanza, è Streamlit Sharing. La quale consente di distribuire, gestire e condividere le applicazioni con il mondo, direttamente da Streamlit, gratuitamente.

Streamlit Sharing

La vedremo meglio nel prossimo articolo.


L’argomento ti interessa e vuoi imparare di più a riguardo ? Dai uno sguardo ai corsi offerti dalla Online School di ProfessionAI, usando il codice LMARINO al checkout potrai avere il 30% di sconto su tutti i corsi.

About Luca Marino

Sono un Data Scientist di formazione ingegneristica. Mi occupo della progettazione di algoritmi e modelli per l’analisi di dati, della realizzazione di web app analitiche per il dashboarding e di formazione aziendale sull'AI. Sono un fan della matematica, delle nuove tecnologie e delle nuove opportunità di Business.