Il box plot è una tipologia di rappresentazione grafica di una variabile statistica quantitativa tra le più utili in quanto riassume alcuni dei più importanti indici statistici della variabile, mettendone in luce anche la presenza di eventuali outlier.
Cosa serve per disegnare un box plot
In generale potrebbe capitare che software statistici o libri differenti descrivano il processo di costruzione del box plot in maniera simile ma non del tutto identica. In questo articolo vi riporto il metodo più diffuso e secondo me più utile. Per disegnare il box plot di una variabile dovremo preliminarmente calcolare questi indici statistici:
- mediana
- primo quartile e terzo quartile
- valori soglia (detti anche valori limite) per individuare gli outlier, cioè:
- primo quartile – 1.5 * (terzo quartile – primo quartile)
- terzo quartile + 1.5 * (terzo quartile – primo quartile)
- outlier
a cui aggiungere eventualmente anche la media aritmetica.
Come disegnare il box plot
Con il box-plot possiamo rappresentare una singola variabile quantitativa, di conseguenza avremo bisogno di un solo asse cartesiano, disegnato il più delle volte verticalmente. Il grafico sarà costituito da tre elementi fondamentali:
- la scatola: un rettangolo che ha per base inferiore il primo quartile e per base superiore il terzo quartile. Il rettangolo è diviso da un segmento orizzontale parallelo alla base, in riferimento alla mediana. È opzionale segnare con il simbolo X il valore corrispondente alla media aritmetica;
- i baffi: a partire dalle basi del rettangolo, dobbiamo tracciare verso l’esterno del rettangolo due linee (una verso l’alto e l’altra verso il basso). La lunghezza di queste linee è tale da intercettare il più grande e il più piccolo valore che la variabile assume all’interno dell’intervallo individuato dai valori soglia;
- gli outlier: disegniamo con dei cerchietti i valori oltre la soglia degli outlier.
Esempio senza outlier
Disegniamo ad esempio il boxplot della variabile X che assume i seguenti valori:
1, 3, 5, 6, 8, 10, 12, 14
Calcoliamo allora gli indici statistici associati (se non ricordi come fare puoi ripassare qui https://www.yimp.it/indici-statistici-con-sql-e-python/ e qui https://www.yimp.it/quartili/). Teniamo comunque in considerazione che anche per il calcolo del primo e del terzo quartile non esiste un’unica formula universalmente riconosciuta. Ad esempio, in tabella è riportato il risultato ottenuto individuando la posizione del primo quartile con la formula (n-1)/4 + 1 e calcolando la media ponderata dei due valori individuati.
Mediana | 7 |
Primo quartile | 4,5 |
Terzo quartile | 10,5 |
Media aritmetica | 7,375 |
Soglia inferiore per outlier | -4,5 |
Soglia superiore per outlier | 19,5 |
Osserviamo che in questo caso non c’è nessun valore di X oltre le soglie. Di conseguenza nel box-plot non ci saranno outlier e i baffi coincideranno con il massimo e il minimo della variabile. Riportiamo il codice e il grafico ottenuto con la libreria pandas di Python.
import pandas as pd x = [1, 3, 5, 6, 8, 10, 12, 14] df = pd.DataFrame(x, columns =['X']) g = df.boxplot()

Esempio con outlier
Consideriamo ora una variabile Y con outlier che assume i valori:
-8, 3, 5, 6, 8, 10, 11, 13, 25
Calcoliamo gli indici statistici:
Mediana | 8 |
Primo quartile | 5 |
Terzo quartile | 11 |
Media aritmetica | 8,11 |
Soglia inferiore per outlier | -4 |
Soglia superiore per outlier | 20 |
e disegniamo il box plot con Python
y = [-8, 3, 5, 6, 8, 10, 11, 13, 25] df = pd.DataFrame(y, columns =['y']) g = df.boxplot()

Osserviamo che i valori -8 e 25 oltre le soglie sono rappresentati con dei cerchietti. I baffi invece arrivano fino a 3 e 13, cioè i valori rispettivamente più piccoli e più grandi entro le soglie.
Sinonimi di Box-Plot
Spesso ci si riferisce a questa tipologia di grafico anche con nomi differenti. Il più utilizzato in lingua inglese è box and whiskers plot usato anche nella sua traduzione in italiano diagramma scatola e baffi.
Disegnare più box plot con Python
Con Python possiamo disegnare facilmente più Box plot all’interno dello stesso grafico, in modo da confrontare la distribuzione di più variabili. Ad esempio, per confrontare le variabili age e fare del noto dataset Titanic, possiamo utilizzare il parametro column del metodo boxplot di pandas (qui la documentazione completa https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.boxplot.html)
import seaborn as sns titanic = sns.load_dataset("titanic") g = titanic.boxplot(column = ["age","fare"])

All’interno del parametro by useremo invece una variabile qualitativa. In questo modo possiamo analizzare come cambia il box plot considerando separatamente le righe di ognuna delle modalità.
g = titanic.boxplot(by ='who', column =['age'])

Continua a imparare
- leggi gli altri articoli del blog di Python, statistica e analisi dei dati
- qui approfondisco il tema degli outlier