Visualizzazione interattiva dei dati tramite Bokeh (e Python)

Contenuti

introduzione

Recentemente, Stavo leggendo un video della conferenza SciPy 2015, “Creazione di applicazioni dati Python con Blaze e Bokeh“, Tenutosi di recente ad Austin, Texas, EE. UU. Non riuscivo a smettere di pensare al potere che queste due librerie portano ai data scientist che usano Python in tutto il mondo.. In questo articolo, Ti presenterò il mondo delle possibilità nella visualizzazione dei dati utilizzando Bokeh e perché penso che questa sia una libreria che tutti gli scienziati dei dati dovrebbero imparare / usare.

bokeh_introduction-1496563 Fonte: bokeh.pydata.org

Cos'è il bokeh??

Bokeh è una libreria Python per la visualizzazione interattiva che si rivolge ai browser Web per il rendering. Questa è la principale differenza tra Bokeh e altre librerie di visualizzazione. Guarda l'istantanea qui sotto, che spiega il flusso di processo di come Bokeh aiuta a presentare i dati a un browser web.

bokeh_intro-1850441Fonte: Analisi continua

Come potete vedere, Bokeh ha collegamenti in più lingue (Pitone, R, lua e Giulia). Estos enlaces producen un archivo JSON, che funziona come input per BokehJS (una libreria javascript), che a sua volta presenta i dati ai moderni browser web.

Bokeh può produrre un display elegante e interattivo come D3.js con interattività ad alte prestazioni su set di dati molto grandi o in streaming. Bokeh può aiutare chiunque voglia creare grafica rapidamente e facilmente, dashboard e app di dati interattivi.

Cosa offre Bokeh a un data scientist come me??

Ho iniziato il mio viaggio nella scienza dei dati come professionista della BI e poi mi sono fatto strada attraverso la modellazione predittiva, scienza dei dati e apprendimento automatico. Mi sono basato principalmente su strumenti come QlikView e Tableau per la visualizzazione dei dati e SAS e Python per l'analisi predittiva e la scienza dei dati.. Non avevo quasi nessuna esperienza con JavaScript.

Quindi, per tutti i miei dati prodotti o idee, Ho dovuto esternalizzare il lavoro o presentare le mie idee tramite wireframe, che non sono ideali per costruire prototipi rapidi. Ora, Effetto bokeh, posso continuare a lavorare nell'ecosistema Python?, ma posso ancora creare questi prototipi velocemente.

Vantaggi del bokeh:

  • Bokeh ti permette di creare grafici statistici complessi velocemente e usando semplici comandi
  • Bokeh fornisce output in vari media come html, notebook e server
  • Possiamo anche incorporare il display Bokeh nell'app flask e django
  • Bokeh può trasformare il display scritto in altre librerie come matplotlib, nato dal mare, ggplot
  • Bokeh ha la flessibilità di applicare l'interazione, layout e diverse opzioni di stile di visualizzazione.

Sfide con Bokeh:

  • Come con qualsiasi libreria open source in arrivo, Il bokeh sta vivendo un grande sviluppo. Perciò, il codice che scrivi oggi potrebbe non essere completamente riutilizzabile in futuro.
  • Ha relativamente meno opzioni di visualizzazione, rispetto a D3.js. Perciò, improbabile che sfiderà D3.js per la sua corona nel prossimo futuro.

Dati i vantaggi e le sfide, oggi è l'ideale per sviluppare prototipi velocemente. tuttavia, se vuoi creare qualcosa per l'ambiente di produzione, D3.js potrebbe essere la scelta migliore.

Per installare Bokeh, seguire le istruzioni date qui.

Visualizzazione con Bokeh

Bokeh offre funzionalità potenti e flessibili che conferiscono semplicità e personalizzazione altamente avanzata. Fornire più interfacce di visualizzazione all'utente come mostrato di seguito:bokeh_interface-7671639

  • Grafica: un alto livello interfaccia utilizzata per costruire grafici statistici complessi così velocemente e in modo semplicistico.
  • grafico: un livello intermedio interfaccia che si concentra sulla composizione visiva dei glifi.
  • Modelli: un basso livello interfaccia che fornisce la massima flessibilità agli sviluppatori di applicazioni.

In questo articolo, vedremo solo la grafica e il layout delle prime due interfacce. Discuteremo i modelli e altre funzionalità avanzate di questa libreria nel prossimo post..

Grafica

Come menzionato prima, è un'interfaccia di alto livello utilizzata per presentare le informazioni sotto forma di un display standard. Questi moduli includono il box plot, grafico a barre, diagramma di area, mappa di calore, diagramma a ciambella e molti altri. Puoi generare questi grafici semplicemente passando frame di dati, matrici e dizionari.

Diamo un'occhiata alla metodologia comune per la creazione di un grafico:

  1. Importa la libreria e le funzioni / metodi
  2. Prepara i dati
  3. Imposta la modalità di uscita (il computer portatile, browser web o server)
  4. Opzione Crea grafico con stile (se richiesto)
  5. Visualizza il grafico

Per comprendere meglio questi passaggi, Illustrare questi passaggi utilizzando l'esempio seguente:

Esempio di grafici 1: creare un grafico a barre e visualizzarlo nel browser Web utilizzando Bokeh

Seguiremo i passaggi sopra elencati per creare un grafico:

#Import library
from bokeh.charts import Bar, output_file, Mostra #use output_notebook visualizzarlo nel blocco appunti
# preparare i dati (dati fittizi)
dati = {"e": [1, 2, 3, 4, 5]}
# Output to Line.HTML
output_file("linee.html", titolo="esempio di grafico a linee") #metti output_notebook() per notebook
# create a new line chat with a title and axis labels
p = Bar(dati, titolo="Esempio di grafico a linee", xlabel="X", ylabel="valori", larghezza=400, altezza=400)
# show the results
show(P)
bar_chart-7356470

Nel grafico sopra, puoi vedere gli strumenti in alto (zoom, Ridimensionamento, riavviare, zoom rotellina) e questi strumenti consentono di interagire con il grafico. Puoi anche vedere le molteplici opzioni del grafico (leggenda, xlabel, ylabel, xgrid ·, larghezza, alto e molti altri) e diversi esempi di grafici qui.

Esempio di grafico 2: Confrontare la distribuzione della lunghezza del sepale e della lunghezza dei petali dal set di dati IRIS utilizzando il diagramma a scatola nel notebook

Per creare questa visualizzazione, primo, Importerò il set di dati dell'iride utilizzando la libreria sklearn. Dopo, Attenersi alla procedura descritta di seguito per visualizzare il grafico nel Raccoglitore Ipython.

#IRIS Data Set
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
df=pd. DataFrame(iris.data)
df.columns=['petal_width','petal_length','sepal_width','sepal_length']
#Import library
from bokeh.charts import BoxPlot, output_notebook, mostrare
dati=df[['petal_length','sepal_length']]
# Output to Notebook
output_notebook()
# create a new line chat with a title and axis labels
p = BoxPlot(dati, larghezza=400, altezza=400)
# show the results
show(P)

bokeh_box_plot-8049544

Esempio di grafico 3: Creare un grafico a linee sul server bokeh

Prima di tracciare il display sul server Bokeh, È necessario eseguirlo.

Se si utilizza un pacchetto conda, È possibile utilizzare il comando Esegui server bokeh da qualsiasi directory utilizzando il comando. Altro, python ./bokeh-server Il comando dovrebbe funzionare in generale. Per maggiori dettagli su questo, controlla questo link “Distribuzione di Bokeh Server“.

Ci sono molteplici vantaggi della visualizzazione del percorso sul server Bokeh:

  • Le trame possono essere pubblicate per un pubblico più ampio
  • Visualizzare un set di dati di grandi dimensioni in modo interattivo
  • Trasmissione dati per aggiornare automaticamente i grafici
  • Creazione di dashboard e app

Per iniziare a tracciare sul server Bokeh, Ho eseguito il comando server bokeh per inizializzarlo seguito dai comandi utilizzati per la visualizzazione.

bokeh_server-8085815

da bokeh.plotting import figure, output_server, show
output_server("linea")
p = figura(plot_width=400, plot_height=400)
# add a line renderer
p.line([5, 2, 3, 4, 5], [5, 7, 2, 4, 5], larghezza_linea=2)
mostrare(P)

bokeh_server_visualization-6360568

grafico

Trace è un livello intermedio interfaccia che si concentra sulla composizione visiva dei glifi. Qui, crea una visualizzazione combinando diversi Immagini (punto, Cerchi, linea, patch e molti altri) e strumenti (strumento di scorrimento, zoom, Salva, reset e altri).

Grafici bokeh creati con il bokeh.plotting L'interfaccia viene fornita con un set predefinito di strumenti e stili visivi. Per tracciare, segui i passaggi seguenti:

  1. Importa libreria, metodi o funzioni
  2. Seleziona la modalità di output (il computer portatile, browser, server)
  3. Activar una figura (simile a matplotlib)
  4. Eseguire operazioni successive sul percorso, influirà sulla figura generata.
  5. Visualizzalo

Per comprendere meglio questi passaggi, Permettetemi di illustrare questi passaggi utilizzando gli esempi seguenti:

Esempio Chart-1: Creare un segno di dispersione quadrato nel fotogramma XY del blocco appunti

a partire dal bokeh.plotting importare figura, output_notebook, mostrare

# output su notebook
output_notebook()
P = figura(plot_width=400, plot_height=400)
# aggiungi quadrato con una dimensione, colore, e alfa
P.quadrato([2, 5, 6, 4], [2, 3, 2, 1, 2], dimensione=20, colore="Marina militare")
# mostra i risultati
mostrare(P)

bokeh_scatter-9023945

Nello stesso modo, È possibile creare più altri grafici come linea, cunei e fiocco, Ovali, immagini, patch e molti altri, guarda questo Collegamento per vedere diversi esempi.

Trama Esempio-2: Combina due oggetti visivi in un unico grafico

da bokeh.plotting import figure, output_notebook, mostrare
# output to notebook
output_notebook()
p = figura(plot_width=400, plot_height=400)
# aggiungi quadrato con una dimensione, colore, and alpha
p.square([2, 5, 6, 4], [2, 3, 2, 1, 2], dimensione = 20, colore="Marina militare")
p.line([1, 2, 3, 4, 5], [1, 2, 2, 4, 5], larghezza_linea=2) #Aggiunto un plottaggio di linea alla figura esistente
# show the results
show(P)

multiple_plots-2934996

Trama Esempio-3: Aggiungere uno strumento mobile ed etichette degli assi al grafico precedente

da bokeh.plotting import figure, output_notebook, show
from bokeh.models import HoverTool, Strumenti di abilitazione #For BoxSelectTool
# output to notebook
output_notebook()
#Add tools
TOOLS = [BoxSelectTool(), HoverTool()]
p = figura(plot_width=400, plot_height=400, tools=STRUMENTI)
# aggiungi un quadrato con una dimensione, colore, and alpha
p.square([2, 5, 6, 4], [2, 3, 2, 1, 2], dimensione = 20, colore="Marina militare", alfa=0,5)
#Visual Elements
p.xaxis.axis_label = "Asse x"
p.yaxis.axis_label = "Asse y"
# show the results
show(P)

bokeh_tools_visualize-1363299

Per ulteriori dettagli sugli attributi e gli strumenti visivi, vedi questi link:

Esempio Chart-4: Mappa grafico dell'India utilizzando i dati di latitudine e longitudine per i confini

Nota: Ho dati poligonali di latitudine e longitudine per i confini dell'India in formato csv. Lo userò per tracciare.

Qui, andremo con il patch tracing, vediamo i comandi qui sotto:

#Importare librerie
import pandas as pd
from bokeh.plotting import figure, mostrare, output_notebook
#Import Latitude and lanogitude co-ordinates
India=pd.read_csv(«E:/India.csv')
dell'India['ID']
India.index=['IN0','IN1','IN2','IN3','IN4','IN5']
#Convert string values to float as co-ordinates in dataframe are string
for j in range(0,len(India)):
 a = India['lats'][J]
 India['lats'][J] = [galleggiante(io) per i in un[1:len(un)-1].diviso(",")]
per j nell'intervallo(0,len(India)):
 a = India['lons'][J]
 India['lons'][J] = [galleggiante(io) per i in un[1:len(un)-1].diviso(",")]
# Output option
output_notebook()
# Create your plot
p = figure(plot_height=400, plot_width=400, toolbar_location="Giusto",x_axis_type=Nessuno, y_axis_type=Nessuno)
p.patch(xs=India['lons'], ys=India['lats'], fill_color="bianco",line_color="Nero", line_width=0,5)
#Visualize your chart
show(P)

India-7239691

Note finali

In questo articolo, analizziamo la creazione di visualizzazioni utilizzando Bokeh e metodi per presentarle in quaderni, html e bokeh-server. Vengono inoltre illustrati i metodi per la creazione di una visualizzazione personalizzata mediante il plottaggio, Qui è possibile combinare diversi elementi visivi per rappresentare le informazioni.

Nel mio prossimo post su Bokeh, Discuterò di più modelli e funzionalità di visualizzazione interattivi. Ad esempio, Ho coordinato i confini per ogni paese del mondo. Ora, Voglio creare una visualizzazione per rappresentare la mappa di ogni paese in un ciclo (ciclo continuo). Inizia a disegnare con una mappa del paese e aspetta 3 secondi e itera per tutti i paesi. Sembra interessante! Non è così?

Hai trovato questo articolo utile? Fateci sapere i vostri pensieri su questo articolo nella sezione commenti qui sotto..

Se ti piace quello che hai appena letto e vuoi continuare a imparare l'analisi, iscriviti alle nostre email, Seguici su Twitter o come il nostro pagina Facebook.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.