L’istogramma è una tipologia di grafico utilizzata molto frequentemente per rappresentare la distribuzione di una singola variabile. Visivamente l’istogramma appare molto simile ad 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’istrogramma 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 specificiamo 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
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
Corsi correlati
- A questo link trovi il mio corso completo di Data Science https://www.yimp.it/corso-data-scientist-sql-e-python/
- Il mio video corso su Python, Pandas e Machine Learning
- Sul mio profilo Patreon trovi più di 17 ore di formazione sull’analisi dei dati