delete

Contattaci

back to resources

Introduzione alla libreria Dash per Python

Dash
Python
Data Science
Data Visualization
Data Analysis
data
19/6/2023
data progetto
autore
Carla Melia
cliente
partnership
url
No items found.

In questo articolo vedremo un’introduzione alle caratteristiche principali di Dash, un tutorial base con un esempio pratico e una overview su alcune delle sue funzionalità più avanzate.

Cos'è e a cosa serve Dash

Dash è una libreria open-source per Python che consente di creare applicazioni web interattive basate su dati.

Una delle caratteristiche principali di Dash è la sua architettura basata su React.js. Ciò consente di creare applicazioni web responsive e reattive con un'esperienza utente fluida.

Dash include inoltre la libreria Plotly per la visualizzazione dei dati, il che significa che è possibile creare grafici interattivi e animati in modo semplice ed efficiente.

La libreria è disponibile per Python 3 ed è facile da installare tramite pip. Dash fornisce numerosi componenti HTML e CSS predefiniti, che permettono di creare interfacce utente sofisticate. Inoltre, Dash offre una vasta gamma di opzioni di personalizzazione e integrazione con altri framework come Flask.

Dash è una libreria molto utile per Data Analyst e Data Scientist che desiderano creare applicazioni web per condividere i propri risultati con gli altri o per creare dashboard interattive per la visualizzazione dei dati.

Python Dash Tutorial Base

Vediamo ora un tutorial di Dash con un esempio pratico.

In questo tutorial, creeremo una semplice applicazione web che consente all'utente di selezionare un Paese e visualizzare il numero di medaglie d'oro, d'argento e di bronzo vinte da quel Paese alle Olimpiadi estive del 2021.

Passo 1: Installazione e importazione delle librerie necessarie

Per iniziare, è necessario installare la libreria Dash.

Apriamo il prompt dei comandi o il terminale e digitiamo:

pip install dash

Dopo aver installato Dash, importiamo le librerie necessarie nel nostro script:

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd

dash è la libreria principale di Dash, dash_core_components contiene i componenti principali come input, output, dropdown, ecc., mentre dash_html_components contiene componenti HTML come div, H1, p, ecc. pandas sarà utilizzato per caricare i dati dal file csv. 

Passo 2: Caricamento dei dati

Creiamo un file CSV con i dati delle medaglie olimpiche del 2021.

I dati saranno organizzati in questo modo:

Paese               Oro      Argento            Bronzo

Italia                10        10        20

Stati Uniti         20        30        10

Giappone         30        20        10

...         ...         ...         ...

Salviamo il file come "medals.csv" nella stessa cartella in cui si trova lo script.

 

Dopo aver creato il file, possiamo caricarlo nel nostro script usando Pandas:

medals_df= pd.read_csv('medals.csv')

 

Passo 3: Creazione dell'applicazione

Per creare la nostra applicazione, dobbiamo creare un'istanza dell'oggetto dash.Dash() e definire il layout dell'applicazione usando componenti HTML e core di Dash.

In questo esempio, creeremo un'applicazione con un dropdown che consente all'utente di selezionare un Paese e visualizzare il numero di medaglie d'oro, d'argento e di bronzo vinte da quel Paese.

 

app= dash.Dash(__name__)

app.layout= html.Div([
   dcc.Dropdown(
       id='country-dropdown',
       options=[{'label': country, 'value':country} for country in medals_df['Paese']],
       value='Italia'
   ),
   html.H1(id='medals-header'),
   html.Div([
       html.Div([
           html.H2('Oro'),
           html.Div(id='gold-medals')
       ], className='medal'),
       html.Div([
           html.H2('Argento'),
           html.Div(id='silver-medals')
       ], className='medal'),
       html.Div([
           html.H2('Bronzo'),
           html.Div(id='bronze-medals')
       ], className='medal')
   ], className='medals-container')
])

 

Nella prima riga del layout, abbiamo un dropdown con l'id "country-dropdown", che consente all'utente di selezionare il Paese. Le opzioni del dropdown sono generate in base ai Paesi presenti nel nostro dataframe.

La riga successiva è un'intestazione HTML con id"medals-header", che verrà utilizzata per visualizzare il nome del Paese selezionato dall'utente.

Nel blocco successivo, creiamo tre div con classe "medal" all'interno di un div con classe "medals-container". Ogni div contiene un'intestazione HTML con il nome del metallo e un div con un id che utilizzeremo per visualizzare il numero di medaglie.

Passo 4: Definizione delle funzioni di callback

Per aggiornare i numeri di medaglie quando l'utente seleziona un nuovo Paese, dobbiamo definire alcune funzioni di callback.

In particolare, dobbiamo definire una funzione che aggiorna l'intestazione HTML con il nome del Paese selezionato e tre funzioni che aggiornano i div con i numeri di medaglie.

 

@app.callback(
   dash.dependencies.Output('medals-header','children'),
  [dash.dependencies.Input('country-dropdown', 'value')])
defupdate_header(selected_country):
   return f'Medaglie vinte da{selected_country}'

 

@app.callback(
   dash.dependencies.Output('gold-medals','children'),
  [dash.dependencies.Input('country-dropdown', 'value')])
defupdate_gold_medals(selected_country):
   gold = medals_df.loc[medals_df['Paese'] ==selected_country, 'Oro'].iloc[0]
   return f'{gold}'

 

@app.callback(
   dash.dependencies.Output('silver-medals','children'),
  [dash.dependencies.Input('country-dropdown', 'value')])
defupdate_silver_medals(selected_country):
   silver = medals_df.loc[medals_df['Paese']== selected_country, 'Argento'].iloc[0]
   return f'{silver}'

 

@app.callback(
   dash.dependencies.Output('bronze-medals','children'),
  [dash.dependencies.Input('country-dropdown', 'value')])
defupdate_bronze_medals(selected_country)
   bronze = medals_df.loc[medals_df['Paese']== selected_country, 'Bronzo'].iloc[0]
   return f'{bronze}'

 

Ciascuna funzione di callback è decorata con l'annotazione @app.callback, che specifica l'output che la funzione deve aggiornare e gli input che devono attivare la funzione.

 

Passo 5: Esecuzione dell'applicazione

Per eseguire l'applicazione, possiamo aggiungere il seguente codice alla fine del nostro script:

if__name__ == '__main__':
   app.run_server(debug=True)

Questo avvia il server di sviluppo e apre l'applicazione nel browser predefinito.

Funzionalità avanzate di Dash

Dash è una libreria estremamente flessibile e personalizzabile, in grado di supportare una vasta gamma di funzionalità avanzate per la creazione di applicazioni web interattive.

Vediamo di seguito alcune delle principali funzioni avanzate che offre.

Integrazione con Plotly

Dash è costruito su Plotly, una libreria di visualizzazione dei dati interattiva che supporta una vasta gamma di tipi di grafici. Dash consente di incorporare facilmente grafici Plotly nelle applicazioni web.

Funzionalita' di interattivita' avanzata

Dash consente di creare interazioni complesse tra i componenti dell'applicazione, come l'aggiornamento di un grafico in base alle selezioni dell'utente o il filtraggio dei dati in tempo reale.

Supporto per la gestione degli stati

Dash consente di gestire lo stato dell'applicazione, ad esempio mantenere traccia delle selezioni dell'utente o delle modifiche ai dati. Ciò consente di creare applicazioni web che offrono un'esperienza più personalizzata e coerente per l'utente.

Personalizzazione dell'aspetto

Dash consente di personalizzare l'aspetto dell'applicazione utilizzando fogli di stile CSS personalizzati. Ciò consente di creare applicazioni web con un'esperienza utente personalizzata e coerente con il marchio dell'azienda.

Supporto per le animazioni

Dash supporta le animazioni, consentendo di creare applicazioni web con effetti visivi accattivanti che migliorano l'esperienza utente.

Gestione dei file

Dash consente di caricare, salvare e scaricare file utilizzando componenti come dcc.Upload e dcc.Download. Ciò consente di creare applicazioni web che consentono agli utenti di interagire con i file in modo più intuitivo.

Supporto per il caching dei dati

Dash consente di memorizzare in cache i dati per migliorare le prestazioni dell'applicazione. Ciò è particolarmente utile quando si lavora con grandi quantità di dati o quando l'aggiornamento dei dati è costoso in termini di tempo.

Supporto per la condivisione di applicazioni web

Dash consente di condividere facilmente le applicazioni web con altre persone utilizzando servizi di hosting come Heroku o AWS.

Conclusione

Queste sono solo alcune delle funzionalità offerte da Dash. Grazie alla sua flessibilità e possibilità di personalizzazione, Dash può essere utilizzato per creare una vasta gamma di applicazioni web interattive, dalle dashboard di Business Intelligence alle applicazioni scientifiche.

 

Risultati

resources

Monitoraggio proattivo dell'infrastruttura IT con il software RMM

Monitoraggio proattivo dell'infrastruttura IT con il software RMM

RMM software

Sicurezza

Virtual tour per l'immobiliare: creare esperienze immersive con le app per visori di VR

Virtual tour per l'immobiliare: creare esperienze immersive con le app per visori di VR

esperienza immersiva

virtual reality

visori VR

mixed reality

Le opportunità dell’AI generativa per chi vende online

Le opportunità dell’AI generativa per chi vende online

Massimizzare l'efficienza: come gestire la profondità delle code con Infrared360®

Massimizzare l'efficienza: come gestire la profondità delle code con Infrared360®

sistemi di messaggistica aziendale

Infrared360

profondità code ambienti IBM MQ

ambienti IBM MQ

Gestione dell'identità e degli accessi negli ambienti MQ

Gestione dell'identità e degli accessi negli ambienti MQ

middleware

accessi ambienti MQ

ambienti MQ

gestione MQ

Ottimizzazione delle configurazioni dei canali IBM MQ

Ottimizzazione delle configurazioni dei canali IBM MQ

canali IBM MQ

Infrared360

monitoraggio IBM MQ

Integrazione efficiente di sistemi bancari e finanziari transazionali nelle fusioni e acquisizioni bancarie

Integrazione efficiente di sistemi bancari e finanziari transazionali nelle fusioni e acquisizioni bancarie

integrazioni IT

sistemi transazionali

sistemi finanziari

Monitoraggio dello stato di salute del middleware: l'importanza di un approccio proattivo

Monitoraggio dello stato di salute del middleware: l'importanza di un approccio proattivo

monitoraggio middleware

Avada Software

middleware

Migliora l’efficienza operativa dell’infrastruttura middleware in tutte le unità aziendali

Migliora l’efficienza operativa dell’infrastruttura middleware in tutte le unità aziendali

Middleware

Efficienza operativa

Introduzione a Godot, game engine free & open source

Introduzione a Godot, game engine free & open source

Game Engine

Open Source

Unreal Engine

Unity

TDA in a nutshell: how can we find multidimensional voids and explore the “black boxes” of deep learning?

TDA in a nutshell: how can we find multidimensional voids and explore the “black boxes” of deep learning?

Multidimensional Voids

Black Boxes

Deep Learning

Topological Data Analysis

AI: bias, esempi nella realtà e nella cinematografia

AI: bias, esempi nella realtà e nella cinematografia

Bias

Cinema

AMRITA (Automatic, Maintenance, Reengineering, Integrated, Technology Application)

AMRITA (Automatic, Maintenance, Reengineering, Integrated, Technology Application)

L'ascesa del Prompt Designer: trasformare il design nell'era dell'AI generativa

L'ascesa del Prompt Designer: trasformare il design nell'era dell'AI generativa

Prompt

Design

AI Generativa

AI Designer

Le nuove linee guida per la sicurezza delle password aziendali

Le nuove linee guida per la sicurezza delle password aziendali

Password aziendali

Linee guida Garante Privacy

Garante Privacy

GDPR

6 motivi per scegliere Flutter nel 2024

6 motivi per scegliere Flutter nel 2024

App Development

Google

React Native

AI, sistemi esperti e rappresentazione della conoscenza

AI, sistemi esperti e rappresentazione della conoscenza

Sistemi esperti

Rappresentazione della conoscenza

Tradurre la Lingua Italiana dei Segni - il Progetto LIS2Speech

Tradurre la Lingua Italiana dei Segni - il Progetto LIS2Speech

LIS2SPEECH

Traduzione LIS

User experience design: dalla progettazione all'usability testing per siti web accessibili

User experience design: dalla progettazione all'usability testing per siti web accessibili

Usability testing

Accessibilità

Inclusività

Assitech.Net entra nella galassia Orbyta Technologies

Assitech.Net entra nella galassia Orbyta Technologies

Orbyta Technologies

Orbyta Group

Acquisizione

News

Programmazione Funzionale Java

Programmazione Funzionale Java

Functional Programming

Java

Software Development

Reactive Programming: parallelizzare con Project Reactor

Reactive Programming: parallelizzare con Project Reactor

Programmazione Reattiva

Reactive Programming

Project Reactor

Piattaforme E-commerce Wholesale per il settore B2B

Piattaforme E-commerce Wholesale per il settore B2B

Wholesale

B2B

Antipattern nello sviluppo software: altri errori da evitare

Antipattern nello sviluppo software: altri errori da evitare

Software Development

Antipattern nello sviluppo software: definizione, ambiti di applicazione ed esempi

Antipattern nello sviluppo software: definizione, ambiti di applicazione ed esempi

Software Development

App tattiche di supporto alla gestione dei progetti reiterativi

App tattiche di supporto alla gestione dei progetti reiterativi

App Development

Power Platform

Low Code

DevOps

Introduzione a Power Pages, il servizio Microsoft per siti web low-code

Introduzione a Power Pages, il servizio Microsoft per siti web low-code

Microsoft

Low-code

Power Platform

Introduzione a Jupyter e Seaborn per Data Analysis e Visualization

Introduzione a Jupyter e Seaborn per Data Analysis e Visualization

Jupiter

Python

Data Analysis

Data Visualization

Come utilizzare Matplotlib per la Data Visualization in Python

Come utilizzare Matplotlib per la Data Visualization in Python

Python

Data Visualization

Data Science

Data Analysis

Introduzione alla libreria Dash per Python

Introduzione alla libreria Dash per Python

Python

Data Science

Data Visualization

Data Analysis

Prime Video passa al monolite: ma allora serverless è inutile? 

Prime Video passa al monolite: ma allora serverless è inutile? 

Tableau per la Business Intelligence: introduzione, tutorial e confronto

Tableau per la Business Intelligence: introduzione, tutorial e confronto

Introduzione a Qlik Sense, piattaforma di Business Intelligence avanzata

Introduzione a Qlik Sense, piattaforma di Business Intelligence avanzata

Applicazioni Cloud Native: definizione, vantaggi e tecnologie

Applicazioni Cloud Native: definizione, vantaggi e tecnologie

Power Apps Tutorial – Case Study: come costruire una business app da zero

Power Apps Tutorial – Case Study: come costruire una business app da zero

Il futuro del gaming tra F2P, GaaS, Crypto e Play to Earn

Il futuro del gaming tra F2P, GaaS, Crypto e Play to Earn

Power Apps Basics: interfacce, implementazione & vantaggi

Power Apps Basics: interfacce, implementazione & vantaggi

Strumenti di Business Intelligence: QlikSense & Power BI a confronto

Strumenti di Business Intelligence: QlikSense & Power BI a confronto

Introduzione a Serverless: non solo Lambda Function

Introduzione a Serverless: non solo Lambda Function

Metaverso: siamo pronti a cogliere l’opportunità?

Metaverso: siamo pronti a cogliere l’opportunità?

Recap Flutter Forward 2023: le 7 novità più interessanti

Recap Flutter Forward 2023: le 7 novità più interessanti

Let's Redux React to a Game

Let's Redux React to a Game

Introduzione a PowerShell

Introduzione a PowerShell

Pago con carta: i trend dei pagamenti digitali e il futuro delle carte di credito

Pago con carta: i trend dei pagamenti digitali e il futuro delle carte di credito

NFT World: il fenomeno NFT tra metaverso, business e GameFi

NFT World: il fenomeno NFT tra metaverso, business e GameFi

Quick Escape Room

Quick Escape Room

Orbyta Invaders Ignition

Orbyta Invaders Ignition

Il lancio della nuova Identity di Orbyta parte dal Metaverso!

Il lancio della nuova Identity di Orbyta parte dal Metaverso!

development

design

metaverse

brand identity

Database a grafo in SQL Server

Database a grafo in SQL Server

Data Science Job Roles: i 4 ruoli più richiesti nel settore

Data Science Job Roles: i 4 ruoli più richiesti nel settore

Teoria dei giochi: Propagazione delle strategie

Teoria dei giochi: Propagazione delle strategie

The chosen one: .NET 5

The chosen one: .NET 5

Network Science e Social Network Analysis

Network Science e Social Network Analysis

Isolation levels on SSMS

Isolation levels on SSMS

Teoria dei Grafi

Teoria dei Grafi

Creare un podcast in automatico a partire da audio vocali e musica

Creare un podcast in automatico a partire da audio vocali e musica

Teoria dei Giochi

Teoria dei Giochi

Recommender systems: principali metodologie degli algoritmi di suggerimento

Recommender systems: principali metodologie degli algoritmi di suggerimento

Introduction to Quantum Computing and Qiskit

Introduction to Quantum Computing and Qiskit

System Versioned Tables

System Versioned Tables

Vim o non Vim

Vim o non Vim

I vantaggi di un Message Broker

I vantaggi di un Message Broker

PlayStation 5 e l'accesso ai dati: un cambio architetturale?

PlayStation 5 e l'accesso ai dati: un cambio architetturale?

Protezione dei Web Services

Protezione dei Web Services

need more info?

Contattaci