Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Data Visualization con Streamlit

Data Visualization con Streamlit

Streamlit è un progetto open source che permette di creare in pochi minuti delle data-web-app (e non solo) scrivendo solamente codice Python senza necessità di avere esperienza di front-end. In questa sessione scopriremo il suo funzionamento, come deployare un’app e vedremo un possibile caso d’uso.
Abstract

Vi è mai capitato di dover mostrare e spiegare i risultati di un progetto di analisi di dati? Non c’è sempre tempo e modo di sviluppare da zero una dashboard per l’occasione e presentare direttamente un jupyter notebook potrebbe non essere la soluzione ideale.

E qui arriva in soccorso Streamlit: si tratta di un progetto open source che permette di creare in pochissimi minuti una data-web-app (e non solo) scrivendo solamente codice Python senza necessità di avere esperienza di front-end.

In questa sessione scopriremo come funziona Streamlit, come deployare un’app e vedremo un possibile caso d’uso.

Luca Corbucci

June 11, 2022
Tweet

More Decks by Luca Corbucci

Other Decks in Programming

Transcript

  1. • 👨💻 Ph.D. Student @ University of Pisa • 🎤

    Podcaster @ PointerPodcast • 🦸 Community Manager @ SuperHeroesValley • 🌏 lucacorbucci.me 👋 Hi, I’m Luca @lucacorbucci
  2. Cos’è Streamlit • È un framework open source per data

    scientist e ML engineer • Permette di sviluppare delle interfacce per progetti di ML • Ti permette di scrivere l’interfaccia utilizzando solamente Python • È facile da usare! Non avrai bisogno di essere esperto di frontend per scrivere la tua data app • Permette un deploy facile del progetto
  3. import streamlit as st import pandas as pd st.title("Hello Pycon

    IT”) # possiamo anche scrivere # “# Hello Pycon IT” # Oppure # st.write(“# Hello Pycon IT”)
  4. import streamlit as st import pandas as pd st.title("Hello Pycon

    IT") df = pd.read_csv("./race-winners.csv") st.dataframe(df)
  5. import streamlit as st import pandas as pd st.title("Hello Pycon

    IT") df = pd.read_csv("./race-winners.csv") st.dataframe(df) df1 = df[df['Class'] == 'MotoGP™'] count = df1['Rider'].value_counts().head(20) st.bar_chart(count)
  6. import streamlit as st import pandas as pd st.title("Hello Pycon

    IT") df = pd.read_csv("./race-winners.csv") st.dataframe(df) class_type = st.radio( "Choose the class you want to display", ('Moto3™', 'Moto2™', 'MotoGP™')) df1 = df[df['Class'] == class_type] count = df1['Rider'].value_counts().head(20) st.bar_chart(count)
  7. import streamlit as st import pandas as pd st.title("Hello Pycon

    IT") df = pd.read_csv("./race-winners.csv") st.dataframe(df) class_type = st.radio( "Choose the class you want to display", ('Moto3™', 'Moto2™', 'MotoGP™')) df1 = df[df['Class'] == class_type] count = df1['Rider'].value_counts().head(20) st.bar_chart(count) option = st.selectbox( 'Select the year you want to display:', (i for i in range(1949, 2023))) df1 = df1[df1['Season'] == option] count = df1['Rider'].value_counts().head(20) st.bar_chart(count)
  8. @st.cache è nostro amico • Non vogliamo eseguire più volte

    lo stesso codice, specialmente se l’esecuzione non è veloce • Possiamo usare il decoratore @st.cache • Ci permette di riutilizzare il codice già eseguito senza necessità di eseguirlo più volte def load_data(path: str) -> pd.DataFrame: data = pd.read_csv(path) return data df = load_data("./race-winners.csv") st.dataframe(df)
  9. @st.cache def load_data(path: str) -> pd.DataFrame: data = pd.read_csv(path) return

    data df = load_data("./race-winners.csv") st.dataframe(df) • Non vogliamo eseguire più volte lo stesso codice, specialmente se l’esecuzione non è veloce • Possiamo usare il decoratore @st.cache • Ci permette di riutilizzare il codice già eseguito senza necessità di eseguirlo più volte @st.cache è nostro amico
  10. @st.cache nel dettaglio • Una volta aggiunto il decoratore, Streamlit

    controllerà: • Se i parametri di input della funzione sono cambiati • Se il body della funzione è cambiato • Se il body delle funzioni chiamate nella funzione è cambiato • Se le variabili usate dentro la funzione sono cambiate • Streamlit memorizza i dati in una cache locale, se uno di questi componenti viene modi fi cato allora eseguirà il codice di nuovo, altrimenti utilizzerà i dati della cache.
  11. Eseguiamo il deploy della nostra data app • Streamlit permette

    il deploy delle data app direttamente su Streamlit Cloud • Streamlit Cloud è connesso ad una repo GitHub ed è in grado di eseguire il deploy • Il servizio è gratuito (con alcune limitazioni)