Vai al contenuto principale

Tutorial sulla visualizzazione dei dati con Bokeh: rappresentare le strutture dati

Impara le visualizzazioni di base di varie strutture dati usando Bokeh.
Aggiornato 29 set 2026  · 6 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Nel nostro primo tutorial su Data Visualization with Bokeh hai imparato a creare visualizzazioni da zero usando i glifi. Ora puoi estendere questo concetto e creare grafici a partire da diverse strutture dati, come array e dataframe. In questo tutorial imparerai a tracciare dati con gli array di NumPy, i dataframe in Pandas e ColumnDataSource usando Bokeh. Il ColumnDataSource è l’essenza di Bokeh: rende possibile condividere i dati tra più grafici e widget.

Grafici Bokeh da array NumPy

Creare grafici a linee da array NumPy

# Import packages
import numpy as np
import random
from bokeh.io import output_file, show
from bokeh.plotting import figure

# Create an array
x_array = np.array([10,20,30,40,50,60])
y_array = np.array([50,60,70,80,90,100])

# Create a line plot
plot = figure()
plot.line(x_array, y_array)

# Output plot
show(plot)

Creare grafici a dispersione da array NumPy

# Import packages
import numpy as np
import random
from bokeh.io import output_file, show
from bokeh.plotting import figure

# Create arrays
x_arr = np.array([10,11,12,13,14,15,16])
y_arr = np.array([17,18,19,20,21,22,23])

# Create plot
plot = figure(title = "Scatter plot", x_axis_label = "Label name of x axis", y_axis_label ="Label name of y axis")
plot.circle(x_arr,y_arr, size = 30, alpha = 0.5)

# show plot
show(plot)

Questo produce il seguente grafico:

Creare grafici usando i dataframe di Pandas

Tracciare linee con i dataframe di Pandas

I dati in questo esempio sono ottenuti da Kaggle. Il dataset contiene tutte le azioni incluse nell’indice S&P 500 per cinque anni fino a dicembre 2018. Il file contiene sette colonne:

  • Date - giorno della settimana in formato aa-mm-gg
  • Open - prezzo di apertura del titolo
  • High - prezzo massimo del titolo nella giornata
  • Low - prezzo minimo del titolo nella giornata
  • Close - prezzo di chiusura del titolo a fine giornata
  • Volume - volume di azioni scambiate nella giornata
  • Name - ticker del titolo

Vogliamo vedere l’andamento del titolo Google nel periodo quinquennale. Per prima cosa carichiamo i dati con Pandas e poi controlliamo le prime cinque righe del dataframe di Pandas.

# Import packages
import pandas as pd
# Load data
df = pd.read_csv('all_stocks_5yr.csv')
df.head()
# Focus on Google's stock
df_goog = df[df['Name'] == 'GOOG']
# Convert date column to a time series
df_goog['date'] = pd.to_datetime(df_goog['date'])

plot = figure(title= "Pandas Line Plot", x_axis_type = 'datetime', x_axis_label = 'date', y_axis_label= 'Prices')
plot.line(x = df_goog['date'], y = df_goog['high'])

# Output plot
show(plot)

Nel grafico è stato necessario convertire la colonna delle date in datetime per visualizzare le date lungo l’asse x. Inoltre, la funzione line (glifo in Bokeh) viene usata per generare una serie temporale dei prezzi massimi di Google.

Creare un grafico a dispersione da un dataframe di Pandas

In questa sezione usiamo i dati open source delle azioni dell’S&P 500 disponibili su Kaggle. In questo esempio vogliamo vedere la correlazione tra i prezzi delle azioni di Google e quelli di Apple. Puoi saperne di più sulla correlazione qui.

# Import required packages
# Import packages
import pandas as pd
from bokeh.io import output_file, show
from bokeh.plotting import figure

# Load data
df = pd.read_csv('all_stocks_5yr.csv')

# Select Google and Apple stock
df_goog = df[df['Name'] == 'GOOG']
df_apple = df[df['Name'] == 'AAPL']

# Select only 'date' and 'high' columns for Google and Apple
df_goog = df_goog[['date','high']]
df_apple = df_apple[['date','high']]
# Rename 'high' column to 'high_goog' and 'high_apple'
df_goog.rename(columns={'high': 'high_goog'}, inplace=True)
df_apple.rename(columns={'high': 'high_apple'}, inplace=True)

df_merged = pd.merge(df_goog, df_apple, how='inner', on='date')
# See the first five rows
df_merged.head(5)

Il merge garantisce che i prezzi giornalieri corrispondano tra loro in base alla data. Questo riduce il problema di correlare prezzi riferiti a date diverse, che porterebbe a inferenze statistiche errate.

# Create scatter plot
plot = figure(title= "Pandas Scatter Plot", x_axis_label = "Apple high prices", y_axis_label= "Google high prices")
plot.circle(x = df_merged['high_apple'], y = df_merged['high_goog'],color = 'red', size = 10, alpha = 0.8)

# Output the plot
show(plot)

I cerchi rappresentano il legame tra i prezzi massimi di Apple e quelli di Google. C’è una correlazione positiva generale tra i prezzi delle azioni di Google e Apple.

Creare grafici Bokeh da ColumnDataSource

Lo scopo di ColumnDataSource è permetterti di creare grafici diversi usando gli stessi dati. In breve, ti consente di costruire una base di dati da richiamare in più grafici e analisi. Questo ti farà risparmiare tempo, perché non dovrai caricare i dati più volte in Jupyter Notebook.

Il ColumnDataSource è simile a un dizionario Python, in cui il valore dei dati in una colonna ha una chiave di tipo stringa per quella stessa colonna.

Creare grafici a linee usando ColumnDataSource

# Import packages
from bokeh.io import output_file, show
from bokeh.plotting import figure, ColumnDataSource

# Create the ColumnDataSource object
df_goog['date'] = pd.to_datetime(df_goog['date'])
data = ColumnDataSource(df_goog)

# Create time series plot
plot = figure(x_axis_type='datetime',
              title='GOOG high prices ts plot',
             x_axis_label = "Date",
              y_axis_label = "Prices in $")
plot.line(x='date', y = 'high_goog', source = data, color = 'green')
show(plot)

Il grafico mostra come si sono evoluti i prezzi massimi di Google in un periodo di 5 anni, con la linea che indica ogni punto prezzo del titolo.

Per creare questo grafico abbiamo passato l’intero dataframe del titolo Google alla funzione ColumnDataSource e lo abbiamo salvato in una variabile chiamata data.

Poi abbiamo usato l’argomento source per passare questi dati alla funzione di creazione del grafico. Questo rende possibile usare direttamente i nomi delle colonne quando si crea il grafico, invece di richiamare ripetutamente il dataframe.

Infine, abbiamo usato la funzione line per generare la linea verde che rappresenta i punti dati.

Creare grafici a dispersione usando ColumnDataSource

In questo codice abbiamo passato l’intero dataframe del titolo Google a ColumnDataSource (come nell’esempio del grafico a linee). Il dataframe viene salvato in ColumnDataSource in una variabile chiamata data. Prima creiamo il grafico a linee richiamando direttamente i nomi delle colonne. Infine, usiamo la funzione diamond per generare i rombi rossi che rappresentano i singoli punti dati.

# Import packages
from bokeh.io import output_file, show
from bokeh.plotting import figure, ColumnDataSource

# Create the ColumnDataSource object
df_goog['date'] = pd.to_datetime(df_goog['date'])
data = ColumnDataSource(df_goog)

# Create time series plot
plot = figure(x_axis_type='datetime',
              title='GOOG high prices ts plot',
             x_axis_label = "Date",
              y_axis_label = "Prices in $")
plot.line(x='date', y = 'high_goog', source = data, color = 'green')
plot.diamond(x='date', y = 'high_goog', source = data, color = 'red')
show(plot)

Il grafico mostra l’evoluzione del titolo Google su un periodo di 5 anni, con i rombi rossi che indicano ogni punto prezzo del titolo.

Conclusione

Questo tutorial ha introdotto le strutture dati più comuni che è probabile incontrare in Python e come usarle per dare vita ai tuoi dati. Sebbene Bokeh non sia l’unica opzione per la visualizzazione in Python, si distingue da Matplotlib o Seaborn per la sua semplicità d’uso e le funzionalità interattive. Nel prossimo tutorial farai pratica con i layout per creare visualizzazioni efficaci e interattive. Se vuoi approfondire tutte le possibilità di visualizzazione dei dati offerte da Bokeh, dai un’occhiata al corso di DataCamp Interactive Data Visualization with Bokeh.

Argomenti
Data Visualization
Data Engineering
Analisi dei dati
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro