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
    instantaneamente tutte le colonne di un DataFrame e heatmap

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 pip
    pip install seaborn

  • per il client conda
    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 Launch

    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 y hue
    in base al valore contenenuto nel campo time
    ma ha anche associato una legenda automaticamente. Oltre a hue style
    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

    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
    dell'andamento tracciando un'area della loro dispersione con le cosiddette error bands

    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
    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 kind="line"

    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())

    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