Vai al contenuto

Come creare un grafico con Python in Excel

    PLOT_SEABORN_PYTHON_EXCEL_MARCOFILOCAMO

    In questa guida vediamo come utilizzare Python in Excel per creare grafici utilizzando Matplolib e Seaborn, le librerie messe a disposizione da Microsoft e Anaconda, come abbiamo raccontato nella guida Come utilizzare Python in Excel.

    PLOT_SEABORN_EXCEL_MARCOFILOCAMO

    L'arrivo di Python in Excel amplia la scelta di grafici in maniera considerevole, aggiungendomoltissime funzionalità avanzate per consentire agli utenti di creare grafici di qualsiasi tipo, innalzare il livello di analisi e portare avanti attività di business intelligence. È infatti possibile realizzare ogni tipo di grafico, dai classici grafici a linee, fino ai più avanzati grafici 3D, con la possibilità di scegliere colori, etichette, legende e molto altro.

    La differenza principale con i normali grafici di Excel è, però, l'impostazione. Se creiamo un grafico da Python in Excel, dovremo essere in grado di scrivere del codice e non è così intuitivo come ci aspettiamo - vediamo quindi insieme come farlo, evidenziando i singoli passaggi nello specifico.

    Cosa sapere prima di cominciare a creare grafici con Python in Excel

    Prima di cominciare a realizzare Grafici con Python in Excel serve fare qualche premessa essenziale, per orientarsi nello spazio nel quale ci muoviamo. Potrebbe essere utile dare un occhio anche alla guida introduttiva su Come utilizzare Python in Excel, che riassume numerosi dei concetti necessari per lavorare con Python all'interno del nostro ambiente Excel.

    Per riassumere, potrai seguire al meglio la guida solo se hai Excel 365 in ambiente Windows e hai una connessione Internet - altrimenti, purtroppo, non ti sarà possibile creare i grafici.

    Qual è il nostro database di partenza per creare i grafici con Python in Excel

    Il dataset su cui lavoreremo per creare il grafico con Python in Excel è un dataset di fantasia analizzato da un ricercatore di un’importantissima università (sempre di fantasia), in cui si studiando gli orsi. Vengono esaminate quattro specie di orsi: grizzly, polare, panda gigante e malese. (Con nostra grandissima sorpresa, il malese è il più aggressivo dei quattro).

    DB_ORSI_EXCEL_MARCOFILOCAMO

    I dati riportati riguardano in particolare:

    • Anno di rilevazione
    • Specie
    • Numero di esemplari
    • Peso medio
    • Dimensione media

    Vedremo quindi come utilizzare questi dati per creare alcuni grafici particolari, ma chiaramente puoi seguire la guida anche utilizzando un tuo file di lavoro. L'importante è che tu abbia bene in mente le singole intestazioni che saranno poi sfruttate nella guida, considerato che la tabella si chiama TBL_ORSI.

    Se non hai dimestichezza con le tabelle su Excel, dai un'occhiata qui.

    Come definire un alias con Python in Excel

    Ricordiamo che le librerie Matlpot e Seaborn sono già disponibili nell’ambiente Python in Excel e non sarà necessaria una configurazione iniziale. Matplotlib è una libreria per la creazione di grafici da dati tabulari, che funziona con Dataframe Pandas e Array NumPy, mentre Seaborn è un’astrazione di Matplotlib, cioè è costituita di funzioni più semplici scritte a partire da funzioni Matplotlib.
    Specifichiamo che all’interno di Matplotlib verrà utilizzato il modulo pyplot, che ha un'interfaccia di accesso simile a MATLAB. Non devi per forza conoscere tutte queste librerie / acronimi / software, ma pensiamo sia utile fornire un contesto per aiutarti ad approfondire, se necessario.

    Come anticipato, la creazione di grafici con Python è leggermente diversa da quanto ci aspettiamo - non potremo cliccare su Inserisci > Grafico, ma ci servirà inserire del codice tramite la funzione =PY(). Anche in questo caso, se il concetto ti è nuovo, ti consigliamo di rivedere la guida che abbiamo realizzato per iniziare a muovere i primi passi su Python.

    Nello specifico, per disegnare un grafico di tipo lineare con Python in Excel e in particolare con Matplotlib, si utilizza il comando plot - questo metodo plot è contenuto all’interno di pyplot a sua volta contenuto in Matplot. Se questo concetto ti manda in confusione, come spesso accade in queste situazioni, ti consigliamo di vedere questo codice come se fosse una matrioska, con diversi livelli all'interno dello stesso ambiente. Per far partire il codice, è necessario richiamare tutti questi oggetti:

    matplotlib.pyplot.plot()

    plot contiene a sua volta una serie di argomenti che a breve analizzeremo. Tuttavia, scrivere così il codice rende tutto poco intellegibile e complesso, quindi facciamo un passo indietro. Per evitare di richiamare ogni volta libreria.modulo.metodo, Python mette a disposizione la possibilità di definire un alias, cioè rinominare questa lunga e noiosissima stringa con un diminutivo.

    import matplotlib.pyplot as plt

    Nel nostro caso, per esempio, l’alias sarà plt (l’abbiamo deciso arbitrariamente), per cui la precedente istruzione può essere riscritta come:

    plt.plot()

    In conclusione: non esiste nessuna necessità di scrivere un'istruzione per importare la libreria Matplotlib, essendo già inclusa in Excel, mentre è necessaria un'istruzione per la definizione dell'alias.

    Il concetto di alias ti permetterà di semplificare notevolmente la parte di creazione degli script, quindi ti consigliamo di rivederlo anche alla luce delle tue necessità. Troverai molto spesso un comando del tipo "import X as Y", che un po' ricorda la funziona LET in Excel, dato che permette di spiegare più nello specifico quali sono gli elementi che andremo a richiamare. Questi utilizzi sono una prerogativa per utilizzare Python in Excel in maniera efficace, soprattutto quando parliamo poi di analisi e visualizzazioni complesse.

    Come creare grafici lineari con Python in Excel utilizzando Matplotlib

    Per disegnare un grafico di tipo lineare con Python in Excel,in particolare con Matplotlib, si utilizza il comando plot:

    plt.plot(x, y, proprietà1, proprietà2, …proprietà n)

    x e y sono le uniche informazioni obbligatorie per la realizzazione del grafico mentre tutte le proprietà possono essere inserite in modo facoltativo. Esistono moltissime proprietà che possono essere definite, e che possono essere consultate nella documentazione ufficiale. In questa guida ne abbiamo utilizzato solo alcune:

    • color: per modificare i colori del grafico
    • linestyle: per modificare le linee del grafico
    • label: per modificare le etichette dati / legenda

    La documentazione è sterminata e ti invitiamo a consultarla, dato che potrebbe darti qualche chiave di lettura o delle visualizzazioni che al momento non immagini possano essere realizzate proprio con Python in Excel.

    Come preparare i dati per realizzare un grafico in Python in Excel

    In questa guida prepareremo i dati per poi realizzare un grafico in Python in Excel. In termini tecnici, importeremo i dati presenti nella nostra tabella Excel all'interno di un dataframe pandas che si chiama df_orsi, al fine di realizzare poi il nostro grafico con Python in Excel.

    A questo punto potresti chiederti: come si importa una tabella Excel in un Dataframe con Pandas? Ma soprattutto - che cos'è Pandas?

    Pandas è la libreria più conosciuta per l'analisi che permette di manipolare facilmente delle tabelle di dati chiamate Dataframe. Come per Matplotlib e Seaborn, quando si utilizza Python in Excel non è necessario importare la libreria Pandas, perché fa parte delle librerie di base messe a disposizione da Anaconda. L'istruzione base per acquisire una tabella di Excel all'interno di un dataframe pandas (convertendo così un oggetto Excel in un oggetto Python) è quella riportata:

    df_orsi = xl("TBL_ORSI[#Tutti]", headers=True)

    Per impostare la base dati del nostro grafico, dovremo quindi fare così:

    • Inserire in una cella =PY( che ci permetterà di aprire l'interfaccia di Excel dedicata a Python
    • Inserire poi df_orsi = xl("TBL_ORSI[#Tutti]", headers=True) che dichiara come df_orsi sia la tabella chiamata TBL_ORSI, includendo anche le intestazioni

    A questo punto, potremo utilizzare df_orsi in Python per realizzare le nostre analisi / grafici.

    Bisogna sicuramente accennare alla possibilità di selezionare dei campi all'interno del dataframe scrivendo un'istruzione del tipo:

    dataframe[‘Campo’]

    Mentre se invece si vogliono selezionare tutte le righe il cui campo a un certo valore bisognerà scrivere:

    df_nuovo=df_originale[df_originale[‘Campo’]==Valore]

    Concentrandoci ora sul nostro esempio, abbiamo importato il dataframe:

    df_orsi=xl("TBL_ORSI[#Tutti]", headers=True)

    e, volendo fare una prova, abbiamo selezionato le righe in cui il campo Specie è uguale a Grizzly:

    df_grizzly = df_orsi[df_orsi['Specie'] == 'Grizzly']

    Vediamolo nello specifico:

    • df_grizzly è il nome del nostro nuovo dataframe
    • df_orsi[df_orsi['Specie'] indica che vogliamo inserire una condizione relativa alla colonna Specie del nostro df_orsi realizzato in precedenza
    • == ' Grizzly' determina come vogliamo unicamente gli orsi Grizzly

    Si può anche rendere più dinamica la formula inserendo il riferimento di una cella al posto della parola 'Grizzly'. Se, per esempio, Grizzly fosse inserito nella cella A1, la formula sarebbe così modificata:

    df_grizzly = df_orsi[df_orsi['Specie'] == xl('A1')]

    La dicitura =xl('A1') è un altro di quegli elementi da tenere a mente se lavoriamo con Python in Excel - non possiamo infatti inserire direttamente =A1 come se fosse una formula, ma con xl stiamo indicando che stiamo importando in Python la cella A1 del nostro foglio.

    Chiaramente, avresti potuto anche realizzare il grafico direttamente da df_orsi, ma è improbabile che prenderai sempre tutto il dataframe per creare i grafici e sapere come filtrare risulta una delle prime operazioni utili per lavorare al meglio con Python in Excel.

    Come realizzare il tuo primo grafico lineare con Python in Excel

    A questo punto siamo pronti per realizzare il tuo primo grafico con Python in Excel! Cominciamo disegnando il grafico a linea che rappresenta il numero di esemplari di Grizzly registrato in vari anni.

    GRAFICO_LINEA_EXCEL_MARCOFILOCAMO

    Queste sono le istruzioni viste fin qui:

    import matplotlib.pyplot as plt
    df_orsi=xl("TBL_ORSI[#Tutti]", headers=True)
    df_grizzly = df_orsi[df_orsi['Specie'] == 'Grizzly']

    Ricordiamo che cosa stiamo facendo:

    • Dichiariamo di voler utilizzare matplotlib.pyplot e che, d'ora in poi, si chiamerà plt
    • Realizziamo il nostro dataframe chiamato df_orsi
    • Filtriamo il nostro dataframe df_orsi per realizzare un altro dataframe chiamato df_grizzly

    Queste invece le istruzioni specifiche per la realizzazione del grafico:

    x = df_grizzly['Anno']
    y = df_grizzly['Numero']
    plt.plot(x,y)

    Anche qui, vediamolo nello specifico:

    • Sull'asse delle X, inseriamo l'anno. Anno che è preso come intestazione della colonna della nostra tabella
    • Sull'asse delle Y, inseriamo il numero di esemplari. Anche in questo caso, il dato è preso dalla colonna della nostra tabella - rendendo fondamentale la definizione, prima di partire con il grafico, dei nomi che vogliamo dare alle nostre intestazioni
    • plt.plot(x,y) dichiara che vogliamo creare un grafico proprio con X e Y appena inserito

    In particolare, er mettere in evidenza la semplicità del comando plot abbiamo chiamato x e y i dati da graficare, così da poter scrivere all'interno della funzione plot solo x e y.

    Il procedimento è un po' laborioso, ma prendendoci la mano potremo poi riutilizzare gli script anche per grafici complessi. Siamo ancora all'inizio e molte migliorie possono essere ancora fatte, ma il primo grafico è fatto!

    Come modificare le proprietà delle linee in un grafico con Pyhton in Excel

    A questo punto, vale la pena di dare un occhio insieme alle principali proprietà dei grafici di Python in Excel, modificabili a seconda dello stile che vogliamo dare al nostro grafico.

    Come si cambiano i colori in un grafico con Python in Excel

    Come si può cambiare colore alle linee del nostro grafico? Domanda semplice, con risposta altrettanto semplice.
    Basta aggiungere fra le proprietà il colore:

    GRAFICO_LINEA_ROSSA_EXCEL_MARCOFILOCAMO

    plt.plot(x,y,color='red')

    In tutti questi casi, prima dichiareremo di realizzare il grafico e, solo successivamente, indicheremo i dettagli. Il colore è uno strumento potente che possiamo cambiare usando parole chiave ( 'red', "'blue', 'green',ecc.), codice esadecimale ("#f4db9a", "#383c4a", ecc.) oppure array RGB (ad esempio (125, 100, 37), (30, 54, 121), ecc.). Abbiamo quindi una notevole ampiezza di possibilità per modificare il grafico come preferiamo, magari inserendo i nostri colori aziendali.

    Come fare una linea tratteggiata in un grafico con Python in Excel

    Come si può rendere la linea tratteggiata in un grafico realizzato con Python in Excel? Anche in questo caso, la documentazione ci offre una semplice soluzione:

    GRAFICO_LINEA_TRATTEGGIO_EXCEL_MARCOFILOCAMO

    plt.plot(x,y,color='red',linestyle='dashed')

    Come noti, ogni elemento grafico aggiuntivo viene poi aggiunto dopo il precedente, creando una sola stringa che riassume tutti i singoli passaggi necessari a modificare l'aspetto del nostro grafico. Stiamo solo scalfendo la superficie di un terma enorme dato che esistono un'infinità di proprietà da attribuire alle linee con le quali rendere più accattivanti i propri grafici - non ti resta che provare in solitaria dando un'occhiata a questo recap!

    Come aumentare i valori sugli assi di un grafico con Python in Excel

    Potresti aver notato che il nostro grafico di Python in Excel non presenta tutti gli anni, ma solo quelli pari. Questo perché Matplotlib gestisce in autonomia la produzione di un output standard e in questo caso ha riportato sull'asse x solo gli anni pari.Se vogliamo che siano indicati tutti gli anni dobbiamo specificarlo:

    GRAFICO_LINEA_THICKS_EXCEL_MARCOFILOCAMO

    plt.plot(x,y,color='red',linestyle='dashed')
    plt.xticks(df_orsi['Anno']);

    Con il comando plt.xticks chiediamo di mettere sull'asse X un segno per ogni valore di Anno, dandoci un'idea più chiara anche della progressione della nostra popolazione.

    Come inserire il titolo del grafico e le etichette degli assi in un grafico con Python in Excel

    Per rendere più chiaro il grafico e poterlo eventualmente presentare ad altre persone, non possono chiaramente mancare il titolo e le etichette degli assi:

    GRAFICO_TITOLO_EXCEL_MARCOFILOCAMO

    plt.plot(x,y,color='red',linestyle='dashed')
    plt.xticks(df_orsi['Anno']);
    plt.title('Popolazione orsi'); plt.xlabel('Anno'); plt.ylabel('Numero');

    In questo caso abbiamo messo i tre comandi uno in fianco all'altro separandoli con un ; ma non cambia niente, le istruzioni Python si possono scrivere anche in questo modo.

    In questo caso stiamo dicendo che:

    • plt.title indica il nostro titolo del grafico, che sarà Popolazione orsi
    • xlabel sarà l'etichetta del nostro asse X e ylabel sarà l'etichetta del nostro asse Y

    Tutte queste modifiche sequenziali sono piuttosto meccaniche, ma ti permettono di avere una libertà massima nella personalizzazione dei tuoi grafici.

    Come fare grafici con due linee con Python in Excel

    Arrivati a questo punto, possiamo finalmente inserire una seconda linea nel nostro grafico per effettuare un confronto fra specie diverse:

    GRAFICO_DUE_LINEE_EXCEL_MARCOFILOCAMO

    df_grizzly = df_orsi[df_orsi['Specie'] == 'Grizzly']
    df_polare = df_orsi[df_orsi['Specie'] == 'Polare']
    x = df_grizzly['Anno']
    y = df_grizzly['Numero']
    z = df_polare['Numero']
    plt.plot(x,y,color='red',linestyle='dashed')
    plt.plot(x,z)

    Se noti, i comandi sono identici a quelli utilizzati per tracciare la prima linea:

    • Filtro delle righe con Specie = Polare
    • Rinomina di questi dati con z, per semplificare poi il richiamo dei dati
    • plot di z e x (Grizzly e Polare)

    Basta quindi aggiungere altre selezioni di dati al plot per ottenere altre linee con cui confrontare i grafici. Avremmo potuto, chiaramente, inserire altre linee semplicemente sfruttando i comandi precedenti, dato che alcuni (come le modifiche grafiche) impattano su tutto il grafico, mentre altre sono limitate alla singola linea.

    Notiamo che possiamo ancora migliorare, dato che è impossibile capire quali siano Grizzly e non.

    Come aggiungere una legenda a un grafico con Python in Excel

    Se aggiungiamo più linee nello stesso grafico, nascerà sicuramente la necessità di fare una legenda:

    GRAFICO_LEGEND_EXCEL_MARCOFILOCAMO

    x = df_grizzly['Anno']
    y = df_grizzly['Numero']
    z = df_polare['Numero']
    plt.plot(x,y,color='red',linestyle='dashed',label='Grizzly')
    plt.plot(x,z,label='Polare')
    plt.xticks(df_orsi['Anno']);
    plt.title('Popolazione orsi'); plt.xlabel('Anno'); plt.ylabel('Numero');
    plt.legend(loc="center left")

    Abbiamo messo in evidenza alcune parti fondamentali di questo script:

    • legend indica dove posizionare la legenda
    • label permette invece l'identificazione automatica dei campi da inserire in legenda.

    Diciamo che creare un grafico con Python in Excel è come un LEGO: partiamo da una base per poi, man mano, inserire nuove informazioni e arrivare a un grafico definitivo che ci soddisfi.

    Come fare un grafico con Seaborn utilizzando Python in Excel

    Esistono diversi modi per realizzare grafici con Python in Excel e, per il momento, abbiamo utilizzato Matplotlib. Lavorando con Python non possiamo non citare, però, Seaborn: libreria che utilizza le funzioni di Matplotlib, semplificandone l'utilizzo. Noterai come alcuni comandi sono gli stessi, anche se esistono metodi dedicati propri di Seaborn. Anche per Seaborn definiamo sempre un alias, che di solito è sns:

    PLOT_SEABORN_EXCEL_MARCOFILOCAMO

    import seaborn as sns

    Ricordiamo che in realtà l'alias potrebbe essere una parola qualunque.

    Di seguito riportiamo lo script per realizzare un grafico Seaborn equivalente a quello realizzato con Matplotlib:

    sns.lineplot(df_grizzly,x='Anno', y='Numero',linestyle='dotted', color='magenta', linewidth=3)
    sns.lineplot(df_polare,x='Anno', y='Numero',linestyle='dotted', color='black', linewidth=3)
    plt.xticks(df_orsi['Anno']);
    plt.legend(labels=["Grizzly","Polare"])

    Rispetto al grafico precedente, i comandi sono più compatti:

    • le lineplot sono definite per le due linee singolarmente
    • plt può essere riutilizzato perchè già presente sul nostro file, quindi non richiede una nuova dichiarazione. Ci può tornare utile, però, perchè xlticks, ad esempio, non esiste in Seaborn ma solo in Matplotlib - quindi si possono anche usare più librerie insieme, se richiesto

    Si nota subito che i comandi sono molto simili, quindi abbiamo un'ampia gamma di possibilità per realizzare e modificare i nostri grafici.

    Conclusione

    Abbiamo visto come muovere i primi passi per disegnare dei grafici con Python in Excel, utilizzando Matplolib e Seaborn.
    Le possibilità sono infinite, dal momento che è possibile realizzare grafici a barre, scatter, con sfumature di colori, con griglia etichette, e qualunque altra cosa vi venga in mente. La realizzazione di questi grafici richiede sicuramente più attenzione rispetto ai grafici con Excel, ma consente potenzialmente di lavorare con grandi molti di dati provenienti da diverse fonti richiamate con Power Query, bypassando il limite di righe di Excel.

    Per chi è stato abituato a dover scegliere lo strumento da utilizzare prima di condurre un'analisi, questa è una grande opportunità per abituarsi a lavorare con un unico strumento completo. Il consiglio è quello di cominciare da grafici più semplici per poi, a step, iniziare a rivedere le singole documentazioni e valutare quali siano le combinazioni più efficaci: una volta definite, ci basterà copiare il codice e potremo applicare facilmente su tutti i nostri file di lavoro!

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *