Istogramma: cos’è e come crearne uno con Python

grafico istogramma

L’istogramma è una tipologia di grafico utilizzata molto frequentemente per rappresentare la distribuzione di una singola variabile. Visivamente l’istogramma appare molto simile a un’altra tipologia di grafico, il diagramma a barre. Ciò che li differenzia è il tipo di variabile rappresentata:

  • negli istogrammi rappresentiamo una variabile numerica continua (come l’altezza, il peso, gli importi) i cui valori sono suddivisi in classi;
  • nei diagrammi a barre la variabile è il più delle volte non numerica, spesso rappresenta delle categorie qualitative (colore degli occhi, grado di istruzione, eccetera).

Creare un istogramma con Python

Importiamo preliminarmente tramite la libreria pandas il file fatture.csv salvato sul mio repository Github

import pandas as pd
fatture = pd.read_csv(filepath_or_buffer = \
'https://raw.githubusercontent.com/iantomasinicola/Esercizi/main/Fatture.csv',
                      sep = ';', 
                      header = None, 
                      names = ['NumeroFattura', 'Tipologia', 'Importo', 
                               'Iva', 'IdCliente', 'ResidenzaCliente',
                               'DataFattura', 'NumeroFornitore'],
                      decimal = ',')

Per creare l’istogramma possiamo utilizzare la libreria matplotlib. Importiamo in particolare il suo modulo pyplot

import matplotlib.pyplot as plt

e utilizziamolo per creare una figura (il riquadro entro il quale inserire il nostro grafico) e il grafico vero e proprio:

figura, grafico = plt.subplots()

A questo punto creiamo l’istogramma con il metodo hist applicato all’oggetto grafico creato precedentemente:

grafico.hist(x = fatture["Importo"], 
             bins = 5,
             ec = "grey",
             fc = "orange" )

In particolare abbiamo valorizzato i parametri di input:

  • x contenente la colonna del DataFrame su cui costruire l’istogramma;
  • bins in cui specifichiamo il numero di classi in cui suddividere la variabile indicata nel parametro x;
  • ec è il colore del bordo delle barre;
  • fc è il coloro del riempimento della barra.

La scelta del parametro bins è molto importante, valori differenti possono produrre grafici molti diversi tra loro. Un modo pratico e semplice che spesso dà buoni risultati è applicare la regola di Sturges

bins  = 1 + 3.322 Log N

dove N è il numero di dati a disposizione e Log il logaritmo in base 10. Nel nostro caso, avendo 18 fatture, otteniamo un valore vicino al 5.

Lanciamo infine delle istruzioni per migliorare esteticamente il grafico.

Con grafico.spines[‘top’].set_visible(False) e grafico.spines[‘right’].set_visible(False) eliminiamo il bordo in alto e a destra del grafico. Inseriamo poi il nome degli assi x e y e assegniamo un titolo al grafico

grafico.set_xlabel("Importo")
grafico.set_ylabel("Frequency")
grafico.set_title("Importo fatture")

Mostriamo infine il grafico con l’istruzione

plt.show()

Ecco il risultato finale

istogramma con python e matplotlib

Parametri opzionali del metodo hist di Matplotlib

Tecnicamente sull’asse delle y di un’istogramma non andrebbe riportata la frequenza assoluta della classe, ma la densità di frequenza. Essa è pari al rapporto tra la frequenza assoluta e l’ampiezza della classe. Utilizzare la densità è fondamentale nel caso in cui creiamo classi di ampiezza diversa, ma in questo (e in molti altri casi) sceglieremo un’ampiezza fissa e di conseguenza potremmo utilizzare tranquillamente la frequenza.

Questo è solo un esempio delle possibilità di personalizzazione che il metodo hist di matplotlib fornisce agli sviluppatori. A questo link potete trovare la documentazione ufficiale https://matplotlib.org/3.5.0/api/_as_gen/matplotlib.pyplot.hist.html

Conclusioni

L’istogramma è uno dei grafici più utilizzati nell’analisi esplorativa in quanto permette di mostrare efficacemente la distribuzione di una colonna numerica. Tramite la libreria Matplotlib di Python, possiamo crearne uno con poche righe di codice, tramite l’utilizzo del metodo hist. Se vuoi imparare ad analizzare i dati e ad applicare modelli di Machine Learning con il linguaggio Python puoi visualizzare la pagina del mio video corso https://www.yimp.it/python-pandas-e-machine-learning/.

Scroll to Top
Torna su