Photo by oxana v on Unsplash

Questa guida è stata aggiornata con alcuni esempi più approfonditi. Potete trovare l’ultima versione del blog qui.

Se stai iniziando con la visualizzazione in Python, potresti essere sopraffatto dal numero di librerie ed esempi:

  • Matplotlib
  • Seaborn
  • Plotly
  • Bokeh
  • Altair
  • Folium

Se hai un DataFrame che aspetta di essere visualizzato, quale dovresti scegliere? Alcune librerie potrebbero essere migliori in casi specifici rispetto alle altre. Questo articolo mostrerà i pro e i contro di ciascuna. Alla fine di questo articolo, dovreste essere in grado di distinguere le diverse caratteristiche di ogni libreria e scegliere più facilmente quella ottimale.

Lo faremo usando un set di dati di esempio ed esplorandolo con ogni libreria, concentrandoci su alcuni attributi specifici:

Interattività

Vuoi che la tua visualizzazione sia interattiva?

Alcune librerie, come Matplotlib, rendono le visualizzazioni come immagini; quindi, sono buone per spiegare i concetti (in un documento, slide deck, o presentazione).

D’altra parte, librerie come Altair, Bokeh, e Plotly ti permettono di creare grafici interattivi che i tuoi utenti possono immergersi ed esplorare da soli

Sintassi e flessibilità

Come varia la sintassi per ogni libreria? Le librerie di livello inferiore come Matplotlib ti permettono di fare qualsiasi cosa tu possa immaginare, ma al costo di un’API più complessa. Alcune librerie come Altair sono molto dichiarative, il che rende più facile la mappatura dei dati.

Tipo di dati e visualizzazione

Stai lavorando con un caso d’uso specializzato, come un grafico geografico, con grandi dati, o utilizzando un tipo di grafico che è supportato solo da una certa libreria?

Dati

Per rendere più facile il confronto, in questo articolo userò i dati reali che raschio da Github:

Ho intenzione di incorporare le visualizzazioni di ogni libreria utilizzando Datapane, che è un framework Python e API per pubblicare e condividere report Python. Se vuoi vedere altri esempi del mondo reale, dai un’occhiata ai report forniti dagli utenti nella galleria di Datapane.

Per seguire l’articolo, puoi scaricare il file csv da qui o ottenere i dati direttamente da Datapane Blob.

import datapane as dpdp.Blob.get(name='github_data', owner='khuyentran1401').download_df()

Ricordati di accedere a Datapane con il tuo token in anticipo se vuoi usare il Blob. Questo dovrebbe richiedere meno di 1 minuto

Matplotlib

Matplotlib è probabilmente la libreria Python più comune per la visualizzazione dei dati. Tutti coloro che sono interessati alla scienza dei dati hanno probabilmente usato Matplotlib almeno una volta.

Pros

  1. Facile vedere la proprietà dei dati

Quando si analizzano i dati, avere un rapido sguardo alla distribuzione può essere l’ideale.

Per esempio, se voglio dare un rapido sguardo alla distribuzione dei primi 100 utenti con più follower, usare Matplotlib è solitamente sufficiente.

Anche se l’asse x di Matplotlib non ha un bell’aspetto, abbiamo una migliore comprensione della distribuzione dei dati guardando il grafico.

2. Può tracciare qualsiasi cosa

Matplotlib è molto versatile, il che significa che può tracciare qualsiasi tipo di grafico che si possa immaginare. Il sito web di Matplotlib contiene una documentazione molto completa e vari grafici nella galleria, il che rende facile trovare tutorial per qualsiasi folle trama che si possa pensare.

Come un testo come questo:

Cons

Matplotlib può tracciare qualsiasi cosa, ma può essere complesso tracciare trame non basilari o aggiustare le trame per farle sembrare belle.

Anche se la trama è abbastanza buona per visualizzare la distribuzione, se vuoi rappresentare i tuoi dati ad altri, dovrai sistemare l’asse x, l’asse y, il che richiede molto sforzo. Questo perché Matplotlib ha un’interfaccia di livello estremamente basso.

Takeaway: Matplotlib può tracciare qualsiasi cosa ma trame complesse potrebbero richiedere molto più codice di altre librerie

Seaborn è una libreria di visualizzazione dati Python basata su Matplotlib. Fornisce un wrapper di livello superiore sulla libreria che la rende più facile da usare.

Pros

  1. Meno codice

Fornisce un’interfaccia di livello superiore per trame simili. In un’altra parola, seaborn generalmente fornisce trame simili a quelle di matplotlib, ma con meno codice e un design più carino.

Utilizziamo gli stessi dati di prima per disegnare una heatmap simile del grafico.

Abbiamo una heatmap migliore senza impostare le etichette x e y!

Rendere più belli i plot di uso comune

Molte persone optano per seaborn quando si tratta di plot popolari come bar plot, box plot, count plot, istogrammi, ecc. non solo perché possono essere creati con meno codice ma anche perché sembrano molto più belli. Come possiamo vedere nel nostro esempio sopra, anche i colori sembrano migliori di quelli predefiniti di Matplotlib.

Cons

Seaborn è più limitato e non ha una collezione così ampia come matplotlib

Takeaway: Seaborn è una versione di livello superiore di Matplotlib. Anche se non ha un’ampia collezione come Matplotlib, seaborn rende i grafici popolari come bar plot, box plot, heatmap, ecc. molto belli in meno codice.

Plotly

La libreria di grafici Python di Plotly rende facile creare grafici interattivi di qualità per la pubblicazione. Può anche creare grafici simili a quelli di Matplotlib e seaborn, come grafici a linee, a dispersione, ad area, a barre, ecc.

Pros

  1. Come R

Se sei un fan dei grafici in R e ti mancano le sue caratteristiche quando passi a Python, Plotly ti dà la stessa qualità di grafici usando Python!

Il mio preferito è Plotly Express perché rende davvero facile ed è anche più veloce creare grandi grafici da una singola riga di Python.

Facile creare grafici interattivi

Plotly rende anche facile creare grafici interattivi. I grafici interattivi non sono solo belli, ma rendono anche più facile per gli spettatori dare un’occhiata più da vicino ad ogni punto dei dati.

Ricordate il grafico a barre che abbiamo fatto prima con matplotlib? Vediamo come viene fuori con Plotly

Con circa le stesse righe di codice, produciamo una trama interattiva che potremmo far passare il mouse sopra ogni barra per vedere quale utente e il numero di follower la barra rappresenta. Questo significa che il consumatore della vostra visualizzazione può esplorarla da solo.

3. Trame complesse rese facili

Con Plotly, alcune trame che di solito sono difficili da creare possono essere create facilmente.

Per esempio, se volessimo creare una mappa per visualizzare le posizioni degli utenti di Github, possiamo trovare le loro latitudini e longitudini come mostrato qui, e poi usare questi dati per individuare le posizioni degli utenti sulla mappa in questo modo

Con poche righe di codice, le posizioni di tutti gli utenti sono splendidamente rappresentate su una mappa. Il colore delle bolle rappresenta il numero di biforcazioni e la dimensione rappresenta il numero totale di stelle

Takeaway: Plotly è ottimo per creare grafici interattivi e di qualità per la pubblicazione con poche righe di codice.

Altair

Altair è una libreria dichiarativa di visualizzazione statistica per Python basata su vega-lite, che la rende ideale per grafici che richiedono molte trasformazioni statistiche.

Pros

1. Grammatica di visualizzazione semplice

La grammatica usata per creare la visualizzazione è facile da capire. Ha solo bisogno di menzionare i collegamenti tra le colonne dei dati ai canali di codifica e il resto della visualizzazione è gestito automaticamente. Questo sembra astratto ma è un grande affare quando si lavora con i dati, e rende la visualizzazione delle informazioni davvero veloce e intuitiva.

Per esempio, con i dati titanici sopra, vorremmo contare il numero di persone in ogni classe, tutto ciò di cui abbiamo bisogno è usare count() nell’asse y

2. Facile trasformare i dati

Altair rende anche molto facile trasformare i dati durante la creazione del grafico

Per esempio, se vogliamo trovare l’età media di ogni sesso nel Titanic, invece di fare la trasformazione in anticipo come Plotly, possiamo eseguire la trasformazione nel codice per creare il grafico.

Potremmo anche assicurarci che la classe sia un dato nominale (dato categorico senza alcun ordine) usando :N o assicurarci che l’età media sia un dato quantitativo (misure di valori come i numeri) usando :Q

Vedi una lista completa di trasformazioni di dati qui

3. Facile collegare i grafici

Altair ti permette anche di fare alcuni collegamenti impressionanti tra i grafici, come usare una selezione di intervallo per filtrare il contenuto di un istogramma allegato.

Per esempio, se vogliamo visualizzare il numero di persone in ogni classe all’interno dell’intervallo che selezioniamo un grafico a punti tra l’età e la tariffa, potremmo fare qualcosa del genere.

Come trasciniamo il mouse per selezionare l’intervallo nel grafico a dispersione, potremmo vedere il cambiamento nel grafico a barre sottostante. Se combinato con le trasformazioni e i calcoli di prima, questo significa che potete creare alcuni grafici estremamente interattivi che fanno calcoli al volo – senza nemmeno richiedere un server Python in funzione!

Cons

A meno che non specifichiate uno stile personalizzato, i grafici semplici come quello a barre non hanno lo stesso stile di seaborn o Plotly. Altair inoltre non raccomanda set di dati con più di 5000 campioni e raccomanda invece di aggregare i dati prima della visualizzazione.

Takeaway: Altair è ideale per grafici sofisticati per mostrare le statistiche. Altair non può gestire dati al di sopra dei 5000 campioni e alcuni semplici grafici non hanno lo stesso stile di Plotly o Seaborn.

Bokeh

Bokeh è una libreria di visualizzazione interattiva flessibile che si rivolge ai browser web per la rappresentazione.

Pros

  1. Versione interattiva di Matplotlib

Se facciamo una classifica tra le librerie di visualizzazione interattiva di cui sopra, Bokeh sarà probabilmente al primo posto per quanto riguarda la somiglianza con Matplotlib.

Matplotlib può creare qualsiasi trama perché è una libreria di visualizzazione di basso livello. Bokeh può essere utilizzato sia come interfaccia di alto livello che di basso livello; quindi, può creare molte trame sofisticate che Matplotlib crea, ma con meno linee di codice e una risoluzione più alta.

Per esempio, il circle plot di Matplotlib

potrebbe anche essere creato con una migliore risoluzione e più utilità usando Bokeh

2. Collegamento tra trame

Bokeh rende anche molto facile il collegamento tra le trame. Il cambiamento applicato in una trama sarà applicato ad un’altra trama con una variabile simile.

Per esempio, se creiamo 3 grafici affiancati e vogliamo osservare la loro relazione, potremmo usare il linked brushing

ColumnDataSource permette di condividere i dati tra i grafici. Così, quando applichiamo la modifica a una trama, anche le altre trame vengono modificate di conseguenza.

Cons

Perché Bokeh è una libreria che in qualche modo ha un’interfaccia di medio livello, spesso richiede meno codice di Matplotlib ma richiede più codice per produrre la stessa trama di Seaborn, Altair o Plotly.

Per esempio, per creare lo stesso plot di conteggio usando dati titanici, oltre alla necessità di trasformare i dati in anticipo, dobbiamo anche impostare la larghezza della barra e il colore se vogliamo che il grafico abbia un bell’aspetto

Se non aggiungessimo la larghezza per il grafico a barre, il grafico avrebbe questo aspetto

Quindi, dobbiamo regolare manualmente le dimensioni per rendere la trama più bella

Se vuoi creare una bella trama a barre in meno codice, questo potrebbe essere lo svantaggio di Bokeh rispetto ad altre librerie

Taway: Bokeh è l’unica libreria la cui interfaccia spazia dal basso all’alto, il che rende facile produrre grafici versatili ed eleganti. Questo, tuttavia, ha il costo che generalmente ci vuole più codice per Bokeh per creare i grafici con una qualità simile alle altre librerie.

Folium

Folium rende facile la visualizzazione dei dati su una mappa a foglietti interattiva. La libreria ha un certo numero di tileset incorporati da OpenStreetMap, Mapbox e Stamen

Pros

  1. Facile da creare una mappa con marcatori

Anche se Plotly, Altair, e Bokeh ci permettano di creare mappe, Folium usa una mappa stradale aperta per darvi una sensazione più vicina ad una mappa di Google con un minimo di codice

Ricordate come abbiamo creato la mappa per visualizzare le posizioni degli utenti di Github usando Plotly? Potremmo rendere la mappa ancora più bella con Folium

La posizione iniziale a Brooklyn, NY. Ingrandisci per vedere altre località sulla mappa. Con alcune righe di codice, abbiamo creato una vera e propria mappa che mostra le posizioni degli utenti.

2. Aggiungere una posizione potenziale

Se vogliamo aggiungere posizioni potenziali di altri utenti, Folium lo rende facile da fare permettendo agli utenti di aggiungere marcatori

Cliccare sulla mappa per vedere una nuova posizione generata proprio dove si clicca.

3. Plugin

Folium ha una serie di plugin che puoi usare con la tua mappa – incluso un plugin per Altair. E se volessimo vedere la mappa di calore delle stelle totali degli utenti Github nel mondo per identificare dove c’è un alto numero di utenti Github con un alto numero di stelle totali? La heatmap nei plugin di Folium ti permette di fare proprio questo.

Zoom out per vedere il quadro completo della heatmap.

Takeaway: Folium permette di creare una mappa interattiva con poche righe di codice. Ti dà un’esperienza simile a quella di una Google Map.

Conclusione

Congratulazione! Hai appena imparato a conoscere sei diversi strumenti di visualizzazione per la tua visualizzazione. Spero che questo articolo ti dia un’idea di cosa fa ogni libreria e quando usarla. Afferrare le caratteristiche chiave di ogni libreria vi renderà più veloce estrarre la libreria giusta quando ne avete bisogno.

Se siete ancora confusi su quale libreria usare per i vostri dati, sceglietene solo una che trovate abbastanza buona. Poi se il codice è troppo lungo o il grafico non risulta buono come immaginate, provate con un’altra libreria!

Sentitevi liberi di biforcare e giocare con il codice di questo articolo in questo repo Github.

Mi piace scrivere sui concetti base della scienza dei dati e giocare con diversi algoritmi e strumenti di scienza dei dati. Puoi connetterti con me su LinkedIn e Twitter.

Segna questo repo se vuoi controllare i codici per tutti gli articoli che ho scritto. Seguitemi su Medium per rimanere informati sui miei ultimi articoli di scienza dei dati come questi:

.

admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

lg