Impara a disegnare un box plot: le regole pratiche e il codice su Python

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.

Mediana7
Primo quartile4,5
Terzo quartile10,5
Media aritmetica7,375
Soglia inferiore per outlier-4,5
Soglia superiore per outlier19,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()
boxplot senza outlier

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:

Mediana8
Primo quartile5
Terzo quartile11
Media aritmetica8,11
Soglia inferiore per outlier-4
Soglia superiore per outlier20

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()
boxplot con outlier

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"])
box plot su due variabili quantitative

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'])
box plot con parametro by di python

Continua a imparare

Torna in alto
Torna su