• analiticas
  • Posts
  • Costruire un istogramma con Matplotlib

Costruire un istogramma con Matplotlib

Visualizza la distribuzione dei tuoi dati con Python

Una delle maniere migliori per comprendere un certo set di dati consiste nel visualizzarlo. Un istogramma è un tipo di grafico che può aiutarci a capire la distribuzione dei nostri dati.

In questa micro-lezione, impareremo a costruire un istogramma con Matplotlib, una libreria per la visualizzazione dei dati di Python.

Importiamo Matplolib

Per prima cosa, importiamo Matplotlib:

import matplotlib
import matplotlib.pyplot as pp

Ti consiglio anche di scrivere la seguente riga di codice per far sì che i grafici siano raffigurati immediatamente, senza dover eseguire un comando specifico.

%matplotlib inline

Partiamo dal dataframe

Immaginiamo di avere un dataframe come questo qui:

Il nostro istogramma andrà a rappresentare la distribuzione dei valori della colonna “Valore Account €”.

Costruiamo un istogramma semplice

Per costruire un istogramma semplice con Matplotlib non ci resta che scrivere la riga seguente:

df['Valore Account €'].plot(kind='hist')

Ed ecco qui il risultato:

Ad una prima occhiata, siamo in grado di capire che la classe più rappresentata è quella degli account con un valore compreso tra 100€ e 200€.

Aggiungere un tocco di colore

Per scegliere liberamente il colore del nostro grafico dobbiamo semplicemente specificare l’argomento color:

# opzione 1
df['Valore Account €'].plot(kind='hist', color='gold')

# opzione 2
df['Valore Account €'].plot(kind='hist', color='aquamarine')

# opzione 3
df['Valore Account €'].plot(kind='hist', color='indigo')

# opzione 4
df['Valore Account €'].plot(kind='hist', color='coral')

# opzione 5
df['Valore Account €'].plot(kind='hist', color='teal')

# opzione 6
df['Valore Account €'].plot(kind='hist', color='crimson')

Ecco il risultato per ogni colore specificato qui sopra:

Scegliere il numero delle classi

Quante classi raffigureremo nel nostro istogramma? Di default, Matplotlib ne genera dieci. Tuttavia, possiamo cambiare il numero di classi generate specificando l’argomento bins. Ecco qui alcuni esempi:

# 4 classi
df['Valore Account €'].plot(kind='hist', color='teal', bins=4)

# 6 classi
df['Valore Account €'].plot(kind='hist', color='teal', bins=6)

# 8 classi
df['Valore Account €'].plot(kind='hist', color='teal', bins=8)

Ed ecco qui il risultato per ogni opzione:

Come possiamo osservare, un numero di classi basso contribuisce a visualizzare i dati in maniera generale, sintetica e uniforme.

Personalmente, per questo esempio preferisco avere 6 classi e d’ora in poi continueremo a lavorare con questa variante del nostro istogramma.

Aggiungere la trasparenza

A volte può capitare di voler aggiungere delle altre misure al proprio istogramma (come faremo in seguito). In tal caso, ai fini di migliorare la leggibilità del grafico, possiamo specificare un livello di trasparenza con l’argomento alpha:

df['Valore Account €'].plot(kind='hist', color='teal', bins=6, alpha=0.6)

Quando il valore di alpha si avvicina a 1, allora il colore sarà più opaco. Inversamente, quando alpha tende a zero, il livello di trasparenza aumenta.

Aggiungere la media e la mediana

Per una maggiore comprensione dei dati, una buona idea è quella di rendere visibili i valori della media e della mediana della nostra distribuzione.

Per rendere visibili questi valori, dobbiamo usare axvline() :

pp.axvline(df['Valore Account €'].mean(), c='navy')

pp.axvline(df['Valore Account €'].median(), c='navy', linestyle='--')

Per entrambe le linee, abbiamo deciso di specificare il colore (indicato da “c”).

Nel caso della mediana, abbiamo scelto di raffigurare una linea tratteggiata. Invece, nel caso della media, abbiamo lasciato lo stile di default (riga piena). Diamo un’occhiata al risultato:

Conclusione

Come abbiamo visto, costruire e personalizzare un istogramma con Matplotlib può aiutarci a comprendere la distribuzione dei dati di una colonna del nostro dataframe.

Ecco qui il codice completo per ottenere l’istogramma analizzato in questa micro-lezione:

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as pp

%matplotlib inline

df['Valore Account €'].plot(kind='hist', color='teal', bins=6, alpha=0.6)

pp.axvline(df['Valore Account €'].mean(), c='navy')

pp.axvline(df['Valore Account €'].median(),c='navy', linestyle='--')

Alla prossima micro-lezione 👋