Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Seaborn

Impariamo ad utilizzare Seaborn, noto modulo Python per la creazione di grafici, molto diffuso tra data scientist e data analyst.
Impariamo ad utilizzare Seaborn, noto modulo Python per la creazione di grafici, molto diffuso tra data scientist e data analyst.
Link copiato negli appunti

Matplotlib è sicuramente una delle librerie di visualizzazione più utilizzate al mondo. Contiene moltissime
funzionalità e tutti gli strumenti di cui il data scientist può avere bisogno. Eppure, negli anni, si è affermato un altro protagonista che ha guadagnato grande fama: Seaborn, il tema di
questa lezione. In generale, Seaborn svetta per alcune caratteristiche tra cui:

  • un tocco grafico particolarmente moderno. Sappiamo che i grafici sono molto utili per avere un approccio immediato alle informazioni e poterle "vedere" in maniera chiara piuttosto che
    racchiuse in tabelle testuali. Tali rappresentazioni vengono sfruttate non solo da tecnici ma anche da persone appartenenti ad altri settori come il marketing, l'ambito commerciale o dirigenziale
    spesso abituati a visualizzazioni dai toni più vivaci rispetto a quelli classici di Matplotlib: Seaborn offre con pochi tocchi una veste che può soddisfare utenza di ogni estrazione;
  • una sintassi più snella. Utilizzando Seaborn si viene spesso colpiti dalla sua intuitività richiedendo in genere un DataFrame Pandas, qualche indicazione sulle colonne da impiegare e rapidamente appare tutto ciò che da
    essi si può evincere;
  • tipologie di grafici che mettono il data scientist in condizioni di conoscere rapidamente aspetti interessanti delle distribuzioni di dati, pensiamo ad esempio a pairplot che incrocia tra loro
    instantaneamente tutte le colonne di un DataFrame e heatmap, una tabella colorata molto utilizzata per evidenziare correlazioni. Conosceremo entrambe a breve.

Installazione di Seaborn

Seaborn viene messo a disposizione da Anaconda ma volendo possiamo installarla in un nostro
ambiente di lavoro mediante i classici package manager di Python passando:

  • per il Python Package Index tramite pip:

    pip install seaborn

  • per il client conda con:

    conda install -c anaconda seaborn

Una volta messo a disposizione del proprio ambiente di lavoro si può iniziare ad utilizzarlo.

Plot e scatter

Per prima cosa, vediamolo al lavoro sui grafici più classici: linee e punti. Seaborn è caratterizzato da un feeling particolare con i DataFrame Pandas, molto usati nella Data Science. In genere,
sarà sufficiente fornire il nome della struttura contenente i dati in un parametro denominato data ed indicare quali colonne vogliamo vedere rappresentate. Per i nostri esempi,
useremo dei DataFrame già pronti, ispirati a classici dataset per la sperimentazione e la didattica. Potremo caricarli con il metodo load_dataset specificando uno dei nomi indicati
nel repository GitHub di Seaborn.

Proviamo tips riguardante dati riferiti a mance ricevute dal personale durante pasti serviti in un ristorante:

import seaborn as sb
tips=sb.load_dataset("tips")

Ecco un campione dei suoi dati ottenuto con tips.head():

total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

Ogni mancia è associata all'importo del conto, il sesso del cliente, il tipo di pasto (Dinner o Launch) e altri dati. Iniziamo a vedere un grafico a punti, uno scatter plot:

import seaborn as sb
tips = sb.load_dataset("tips")
sb.scatterplot(x="tip", y="total_bill", hue="time", data=tips)

Il risultato che otteniamo è questo:

Figura 1. Scatter plot con Seaborn (click per ingrandire)Scatter plot con Seaborn

Con i parametri x e y abbiamo indicato quali valori usare per ascisse ed ordinate mentre con hue abbiamo specificato che
in base al valore contenenuto nel campo time ogni punto dovrà assumere un colore diverso. In questo modo, non solo Seaborn ha permesso di visualizzare in maniera molto chiara i valori
ma ha anche associato una legenda automaticamente. Oltre a hue possiamo fare un'ulteriore distinzione con style che si occuperà di cambiare la forma di ogni punto in base
ai possibili valori disponibili in un ulteriore campo che indicheremo. Ad esempio, lo scatter seguente mostrerà i punti nella stessa posizione del precedente ma questi avranno colori diversi
in base al tipo di pasto e forma diversa in base al giorno della settimana (con il parametro s ne fissiamo la dimensione):

import seaborn as sb
tips = sb.load_dataset("tips")
sb.scatterplot(y="total_bill", x="tip", hue="time", style='day',data=tips, s=100)

Ecco qui:

Figura 2. Scatter plot con colori e stili diversi (click per ingrandire)Scatter plot con colori e stili diversi

Per visualizzare i dati con delle linee, si può usare il lineplot. Seaborn, nel caso di più valori delle ordinate per singole ascisse, si preoccuperà di renderci comunque un'idea chiara
dell'andamento tracciando un'area della loro dispersione con le cosiddette error bands. Osserviamo il seguente esempio:

sb.lineplot(y="total_bill", x="day",data=tips)

Avendo chiesto come ascissa i giorni della settimana e corrispondendo ad ognuno di essi una varietà di valori come total_bill ci verrà fornita graficamente un'idea
dell'andamento medio della distribuzione con tanto di area colorata ad integrazione:

Figura 3. Lineplot con Seaborn (click per ingrandire)Lineplot con Seaborn

Con Seaborn è possibile usare una funzione grafica generale, relplot, che di default rappresenta uno scatter ma passando il parametro kind="line" mostrerà il tutto come grafico
lineare. Sfruttiamo un esempio in merito per vedere come si può richiedere a Seaborn di creare più grafici distribuiti per righe e colonne. Osserviamo l'andamento delle mance rispetto
al conto totale spalmando i punti su più grafici dove le colonne indicheranno il sesso del cliente e le righe il tipo di pasto:

sb.relplot(x="total_bill", y="tip", data=tips, hue="day", row="time", col="sex")

Il risultato:

Figura 4. Grafici per righe e colonne (click per ingrandire)Grafici per righe e colonne

Pairplot e heatmap

Concludiamo questa panoramica su Seaborn con altri due grafici molto importanti in fase di esplorazione dei dati. Il primo è il pairplot che ha il grande merito di incrociare
tra loro tutti i campi in una griglia di scatter. Ogni mattonella rappresenterà l'incrocio tra il valore indicato nella corrispondente riga e quello nell'analoga colonna. Il comando è semplicemente
questo:

tips.pairplot()

e offre tutto ciò:

Figura 5. Come appare un pairplot

Come appare un pairplot

Figura 5. Come appare un pairplot (click per ingrandire)Come appare un pairplot

Un heatmap invece è utilissima per visualizzare graficamente una matrice di correlazione. Con Pandas, per visualizzare il fattore di correlazione tra tutte le colonne di un DataFrame
ci basta fare così:

tips.corr()

e si ottiene una struttura comoda da leggere di questo tipo:

total_bill       tip      size
total_bill    1.000000  0.675734  0.598315
tip           0.675734  1.000000  0.489299
size          0.598315  0.489299  1.000000

Chiaro sì ma se fossimo in cerca di un impatto visivo migliore ci potremmo rifare a Seaborn che con sb.heatmap(tips.corr()) restituisce questo:

Figura 6. Correlazioni mostrate con heatmap (click per ingrandire)Correlazioni mostrate con heatmap

In quest'ultimo grafico vediamo che una scala di colori, a destra, associa una gradazione di colore al livello di correlazione: più questa si fa stretta, più il colore utilizzato diventa chiaro.
A colpo d'occhio, potremmo dire, davvero efficace.

Ti consigliamo anche