Slide 1

Slide 1 text

Data Visualization con Streamlit Luca Corbucci PyCon Italia 🇮🇹 - Firenze 
 04/06/2022

Slide 2

Slide 2 text

• 👨💻 Ph.D. Student @ University of Pisa • 🎤 Podcaster @ PointerPodcast • 🦸 Community Manager @ SuperHeroesValley • 🌏 lucacorbucci.me 👋 Hi, I’m Luca @lucacorbucci

Slide 3

Slide 3 text

C’era una volta, alla fine di un progetto universitario…

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Come possiamo riportare i risultati senza sviluppare da zero una dashboard?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Installazione

Slide 10

Slide 10 text

Creiamo la nostra prima app

Slide 11

Slide 11 text

import streamlit as st import pandas as pd

Slide 12

Slide 12 text

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”)

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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)

Slide 15

Slide 15 text

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)

Slide 16

Slide 16 text

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)

Slide 17

Slide 17 text

@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)

Slide 18

Slide 18 text

@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

Slide 19

Slide 19 text

@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.

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

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)

Slide 22

Slide 22 text

Eseguiamo il deploy della nostra data app

Slide 23

Slide 23 text

Demo!

Slide 24

Slide 24 text

Thank you @lucacorbucci 🌏 lucacorbucci.me 👨💻 github.com/lucacorbucci/ 📥 [email protected] 💬 http://chat.pointerpodcast.it/