Corso
La visualizzazione dei dati è un elemento fondamentale per interpretare dataset complessi.
Nel mondo della programmazione in Python, Seaborn spicca come una potente libreria per creare grafici statistici chiari e informativi, come istogrammi e grafici a linee.
Si basa sulle funzionalità di Matplotlib, migliorandone l'interfaccia e offrendo più opzioni per la visualizzazione dei dati, soprattutto per l'analisi statistica. L'integrazione fluida di Seaborn con i DataFrame di Pandas lo rende una scelta preferita tra data scientist e analisti.
In questa guida dettagliata ci concentreremo su uno dei grafici più usati in Seaborn: l'istogramma.
Panoramica della funzione sns.histplot
La funzione sns.histplot in Seaborn è pensata per tracciare istogrammi, indispensabili per esaminare la distribuzione di dati continui. È versatile e consente un'ampia personalizzazione, rendendo più semplice ricavare insight significativi dai dati.
Questa è una delle tante funzioni disponibili nella libreria Seaborn. Dai un'occhiata alla cheat sheet qui sotto per una panoramica rapida.

Cheat sheet di Seaborn per data science - fonte
Configurare l'ambiente
Importare le librerie necessarie
Prima di passare alla visualizzazione dei dati, dobbiamo configurare l'ambiente. Questo prevede l'import delle librerie necessarie, con Seaborn come focus principale. Per comodità, Seaborn viene solitamente importata come sns.
Accanto a Seaborn, le altre librerie essenziali includono spesso NumPy per le operazioni numeriche, pandas per la gestione dei dati e Matplotlib per ulteriori opzioni di personalizzazione.
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Queste sono tutte librerie fondamentali che forniscono gli strumenti necessari per creare e manipolare visualizzazioni dei dati in Python. Sono le più usate da data analyst e data scientist.
Se stai iniziando a imparare Python, ti suggerisco di provare il nostro corso Introduzione a Python. Per approfondire pandas, NumPy e Matplotlib, dai un'occhiata ai corsi Data Manipulation with pandas, Introduction to NumPy e Introduction to Data Visualization with Matplotlib.
Preparare i dati
Useremo il dataset Boston Housing Prices, caricabile dalla libreria Scikit-Learn. Questo dataset fornisce i valori delle abitazioni in diverse zone di Boston insieme a diversi attributi come il tasso di criminalità, il numero medio di stanze, ecc.
from sklearn.datasets import load_boston
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['MEDV'] = boston.target
Disporre di dati adeguati per i tuoi istogrammi è ciò che li rende efficaci o meno. In questo caso, usiamo una variabile continua: il valore mediano delle case occupate dai proprietari (MEDV) a Boston.
Poiché gli istogrammi mostrano tipicamente la distribuzione di una singola variabile, selezioneremo una colonna dal nostro DataFrame.
Nuovo a Scikit-Learn? Prova il nostro tutorial su Machine Learning in Python. Se vuoi maggiori informazioni, il corso Supervised Learning with scikit-learn ti aiuterà a coprire le basi.
Costruire il tuo primo istogramma con Seaborn
Prima di iniziare, ecco alcuni prerequisiti di base per creare il tuo istogramma con Seaborn:
- Almeno una colonna di dati continui
- Comprensione di base del dataset
- Familiarità con le operazioni sui DataFrame di Pandas
- Conoscenza di base della sintassi e delle funzioni di Seaborn
Inizieremo passando in rassegna parte della sintassi e dei parametri comuni della funzione `sns.histplot`.
Sintassi e parametri
La sintassi di base per creare un istogramma con `sns.histplot` è lineare.
I parametri chiave includono:
data: Il dataset, spesso un DataFrame di Pandas.x: La variabile per cui tracciare l'istogramma.color: Per specificare il colore delle barre.alpha: La trasparenza delle barre.bins: Il numero di classi (gruppi di barre) da usare.binwidth: La larghezza di ciascuna classe.kde: Booleano per aggiungere il grafico di stima della densità con kernel (KDE).hue: Per distinguere sottoinsiemi di dati in base a un'altra variabile.
La funzione accetta molti parametri e argomenti, ma ci concentreremo su quelli necessari per il nostro dataset.
Creare un istogramma semplice
Creiamo un istogramma di base per visualizzare la distribuzione dei prezzi mediani delle case (MEDV).
plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
Questo comando mostrerà l'istogramma per la colonna MEDV.
Ecco il grafico generato da questo codice:

Qui vedi l'istogramma che mostra la distribuzione dei prezzi mediani delle case (MEDV) nel dataset di Boston. L'istogramma fornisce una rappresentazione visiva della distribuzione di frequenza dei valori mediani delle abitazioni occupate dai proprietari.
Migliorare il tuo istogramma Seaborn
Regolare dimensione e numero delle classi
Regolare il numero di classi può aiutare a comprendere meglio la distribuzione. Un numero maggiore può rivelare più dettagli, mentre un numero inferiore semplifica la visualizzazione.
Per aumentare il numero di classi, puoi modificare il parametro bins.
Ecco un esempio:
plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV', bins=30)
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

Come puoi vedere dall'istogramma di Seaborn qui sopra, il numero di barre è aumentato al valore impostato, in questo caso 30. È un buon modo per approfondire i dettagli e ottenere maggiore granularità nei tuoi dati.
Modificare l'estetica
Personalizzare l'estetica, come cambiare colore e trasparenza delle barre, può rendere l'istogramma più informativo e gradevole.
Nell'esempio seguente ho ricreato il nostro istogramma originale usando il viola al posto del colore predefinito.

Ecco il codice che ho usato per creare il grafico qui sopra.
plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV', color='purple')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
Aggiungere la Kernel Density Estimation (KDE)
La KDE fornisce una stima continua e levigata della distribuzione dei dati. Può essere particolarmente utile per individuare pattern nei dati.
Crea una curva morbida che aiuta a visualizzare l'andamento generale.
Per ottenerla, usiamo il parametro kde in questa funzione:
plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV', kde=True)
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
Questo aggiungerà una bella curva al nostro istogramma, come mostrato sotto.

L'aggiunta della linea di stima della densità con kernel (KDE) offre una stima più fluida della distribuzione.
Tecniche avanzate per istogrammi
Istogrammi multivariati
Il parametro hue permette di confrontare diverse categorie all'interno dell'istogramma.
Questo parametro ci consente di distinguere categorie diverse nello stesso istogramma, offrendo un confronto visivo delle distribuzioni.
In poche parole, prende una colonna categorica del DataFrame e differenzia i dati usando colori diversi.
Per esempio, se nel nostro DataFrame abbiamo una colonna chiamata "CHAS", che indica se una casa si affaccia sul fiume Charles (1) o no (0), possiamo usare il parametro "hue" per confrontare la distribuzione dei prezzi mediani delle case vicino al fiume rispetto a quelle che non lo sono.

Il codice sarà il seguente:
plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV', hue='CHAS')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
Questo produrrà un istogramma in cui la distribuzione di MEDV per le case che costeggiano il fiume Charles (CHAS=1) è distinta da quella delle case che non lo costeggiano (CHAS=0), ciascuna rappresentata da un colore diverso.
Buone pratiche per gli istogrammi in Seaborn
Quando crei istogrammi con Seaborn, ci sono diversi aspetti da tenere a mente, elencati qui sotto:
1. Scegliere il numero giusto di classi
Selezionare il numero ottimale di classi è fondamentale per creare un istogramma informativo. Un numero elevato può fornire più dettagli, ma può anche portare a un overfitting e a una rappresentazione fuorviante dei dati.
D'altra parte, troppo poche classi possono semplificare eccessivamente la distribuzione.
Un modo per scegliere il numero giusto di classi è usare una regola empirica chiamata regola di Scott. Questa regola calcola la dimensione ideale delle classi in base al numero di punti nel dataset.
2. Bilanciare dettaglio e chiarezza
Pur essendo importante fornire un livello sufficiente di dettaglio in un istogramma, è altrettanto cruciale assicurare che la visualizzazione rimanga chiara e facile da interpretare.
Aggiungere troppi elementi, come linee KDE o troppi colori, può generare grafici affollati e difficili da comprendere.
È meglio trovare un equilibrio tra elementi informativi e semplicità.
3. Considerare il tipo di dati
Anche il tipo di dati visualizzati influisce sulla scelta dei parametri appropriati dell'istogramma.
Ad esempio, le variabili continue richiederanno dimensioni delle classi diverse rispetto alle variabili categoriche.
È importante considerare la natura dei dati quando si creano istogrammi, per rappresentare accuratamente la distribuzione.
Tieni presente, però, che Seaborn è solo una delle librerie disponibili per la visualizzazione dei dati in Python. Se preferisci, puoi anche creare i tuoi istogrammi in Matplotlib.
Considerazioni finali
Seaborn è una libreria potente per creare visualizzazioni in Python e la funzione `histplot` consente di creare istogrammi con facilità. Modificando semplicemente i parametri all'interno della funzione, puoi cambiare l'aspetto del grafico per ottenere il livello di dettaglio e l'estetica che desideri.
Ricorda tutti i suggerimenti sugli istogrammi in Seaborn menzionati sopra: considera sempre il tipo di dati, scegli dimensioni delle classi appropriate e bilancia dettaglio e chiarezza quando crei istogrammi con Seaborn.
Ti interessa saperne di più su Seaborn e le sue altre potenti funzionalità di visualizzazione? Il nostro corso Introduction to Data Visualization with Seaborn è un'ottima scelta per chi inizia.
Sono Austin, blogger e autore tech con anni di esperienza come data scientist e data analyst nel settore sanitario. Partito dalla biologia, oggi aiuto altri a fare lo stesso passaggio attraverso il mio blog tecnologico. La mia passione per la tecnologia mi ha portato a collaborare come autore con decine di aziende SaaS, ispirando altre persone e condividendo le mie esperienze.


