Vai al contenuto principale

Usare Python per potenziare i fogli di calcolo nella Data Science

Scopri come Python può essere più efficace di Excel, con il pacchetto Pandas.
Aggiornato 29 set 2026  · 15 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Excel, il mio vecchio amico

Sono il tipo di persona che manipola i dati nei fogli di calcolo solo perché può. La settimana scorsa, il mio team lead ha inviato un elenco di dipendenti che non avevano aggiornato le checklist di progetto e io l'ho aperto subito, ho iniziato a creare tabelle e a calcolare statistiche riepilogative per dipendente, poi gli ho scritto con alcuni dati di sintesi, suddivisi per dipendente. Probabilmente l'ho fatto impazzire un po', ma non posso farci nulla: adoro l'analisi dei dati e adoro Excel. Uso Excel dal 2001 e fino a pochi mesi fa era il mio strumento preferito per organizzare, analizzare e visualizzare i dati. È ottimo per organizzare i dati, eseguire calcoli e analisi e funziona anche come un semplice database. L'ho usato per tutto, dal tenere traccia del mio budget personale, delle spese e degli allenamenti a report multi‑pagina di analisi della forza del personale nell'Esercito. Excel, per la maggior parte, lì ha funzionato bene ed era l'unica opzione. Per motivi di sicurezza, non avevo accesso a VBA, Python o ad altri tipi di automazione. Anche i set di dati erano abbastanza piccoli da poter essere gestiti.

Quasi un anno fa ho iniziato a lavorare nell'Abilities Lab di Cerner come System Engineer nei test di performance software. La versione breve di ciò che faccio è test di performance del software. Testiamo software nuovi e aggiornati prima che vengano rilasciati ai clienti e testiamo tutto: CPU e memoria su Windows e Unix, performance della Java Virtual Machine, tempi di risposta sia dei servizi backend sia dell'interfaccia utente, performance del database, l'impatto sul nostro software attuale, performance di rete e praticamente qualsiasi altra cosa ti venga in mente. Nessun test è limitato a una singola macchina, nella maggior parte dei casi è una combinazione di dispositivi Windows e Unix (fisici e virtuali), sistemi dell'utente finale e server. In uno dei progetti a cui ho partecipato avevamo più di 20 sistemi da cui dovevano essere raccolti i dati.

A seconda della durata di un progetto, possono esserci fino a 50 test da rivedere, analizzare e su cui fare report. Tutti quei dati devono essere sintetizzati in un report finale dei risultati dei test che viene pubblicato su una pagina progetto interna di Jira per essere consultato dal team di sviluppo software. Abbiamo alcuni strumenti personalizzati interni che possono aggregare la maggior parte dei dati, ma non tutti, e i report generati da quegli strumenti non sono personalizzabili al livello necessario per il tipo di test che faccio. Il mio strumento preferito per scrivere e consegnare questi report era Excel, e perché no? Ho un forte background in Excel ed ero convinto all'epoca di poterci fare qualsiasi cosa.

Excel, abbiamo un problema...

Non entrerò nel processo tedioso per portare i dati dai nostri strumenti interni a Excel, ma per me era un'attività di diverse ore e sono molto esperto di Excel. I dati andavano copiati, puliti, ordinati e filtrati. Non importava come scrivessi le formule: quasi sempre dovevano essere aggiustate; poi bisognava modificare tabelle e grafici a seconda del numero di test, nodi e vari tempi di risposta registrati durante il progetto. Dopo di che era una sequenza di trova e sostituisci per sistemare i nomi dei test, assicurarsi che i formati dei numeri e gli evidenziatori fossero corretti in ogni riga di ogni pagina e una generale pulizia dei dati. Ho provato a scrivere modelli, macro e script VBA. Niente di ciò che facevo era abbastanza adattabile da gestire un numero variabile di test, dispositivi e metriche di performance senza una seria ripulitura per ogni test. Sono riuscito a creare un modello che effettivamente velocizzava il processo, ma ci voleva comunque mezza giornata per mettere tutto a posto.

Sorrido pensando ad alcune delle formule e degli script VBA ridicolmente complicati che sono finiti in quel modello. È peggiorato molto quando abbiamo aggiornato le versioni di Java e i nostri strumenti interni non riuscivano a processare correttamente i log. Siamo passati a uno strumento esterno chiamato GC Easy che fa un ottimo lavoro nel fare il parsing dei log in un file JSON caricabile in Excel. I file JSON si possono caricare con PowerQuery, ma è un processo lento e tedioso e quando cerchi di fare il parsing di oltre 50 file JSON con più di un milione di righe ciascuno, finisci per mandare in crash Excel molto spesso. Aggiungi a questo il fatto che avevo bisogno di automatizzare il processo e non riuscivo a trovare un buon modo per farlo. Anche quando riuscivo a caricare i dati in Excel, le visualizzazioni (grafici ad area impilata che rappresentano l'Heap Size nel tempo) si bloccavano e causavano altri crash. Anche se avessi risolto quel problema, i file JSON erano solo l'inizio.

Copiare, pulire e analizzare i dati manualmente porta inevitabilmente a errori. Siamo tutti umani e ci sfugge qualcosa, ci distraiamo, clicchiamo male. Il mio processo non funzionava e non avrebbe mai funzionato per tutti, a meno che l'intero team non avesse fatto una formazione approfondita su Excel. Forse è il mio background militare, forse è solo una peculiarità del mio carattere, ma cerco sempre un modo per migliorare i processi e renderli più efficienti, così ho iniziato a capire come snellire l'intero flusso.

Il nostro strumento interno, all'epoca, non aveva API né una funzione di export funzionante. Non avevo modo di estrarre dati direttamente se non con copia/incolla. Il pensiero successivo è stato andare direttamente alla fonte: i file di log di ciascun dispositivo del test. Questo significava cercare in una directory di test e nelle molte sottodirectory al suo interno, estrarre dati da più tipi di file in formati diversi, fare tutti i calcoli e scriverli in Excel nel formato di cui avevo bisogno, con tanto di visualizzazioni e formattazione condizionale.

I tipi di file che dovevo analizzare erano .txt, .csv, .json (strutture varie), .xml (strutture varie), .dat, .html e alcuni dati andavano estratti da un database Oracle. Dovevo tenere conto di strutture di directory variabili, numeri e strutture variabili di file, file .xml senza tag di chiusura e dimensioni dei file superiori a 10 GB. Il processo doveva anche essere facile da seguire, automatizzato il più possibile e in grado di gestire milioni di righe di dati. Excel non avrebbe assolutamente potuto soddisfare tutte queste esigenze, quindi mi sono rivolto a qualche popolare strumento di BI: PowerBI e Tableau. Non voglio trasformare questo in una recensione di prodotti BI, quindi dirò soltanto che, categoricamente, non soddisfacevano le mie esigenze.

Qual è, quindi, uno strumento che fa tutto ciò che fa Excel, può scrivere report in Excel e può rispettare tutti i requisiti che ho elencato?

Incontra i miei nuovi amici, Python e Pandas

Se hai familiarità con Excel, credo che amerai assolutamente pandas per Python. pandas unisce la funzionalità di Excel alla potenza del linguaggio Python. Le colonne di Excel diventano Series di pandas, le tabelle diventano DataFrame e le formule complesse diventano funzioni Python. pandas può fare tutto ciò che fa Excel:

Lettura dei dati

Excel se la cava abbastanza bene nella lettura di file piatti e, con PowerQuery, ha una capacità limitata di interrogare database e leggere alcuni file .xml e .json. Se leggi la documentazione, sembra lo strumento perfetto per leggere quasi tutto ma, in realtà, non è affatto così. L'interfaccia è macchinosa e richiede molto tempo per abituarsi, non c'è un buon modo per automatizzare il processo e la pulizia dei dati è quasi divertente quanto andare dal dentista. pandas, invece, rende la lettura dei dati un gioco da ragazzi.

Questa libreria Python per la manipolazione dei dati può leggere nativamente dati da una moltitudine di fonti. Dai un'occhiata alla pagina della documentazione per l'elenco completo. La cosa davvero ottima è che, se pandas non legge nativamente un formato, c'è una buona probabilità di trovare un pacchetto Python che lo faccia o di poter scrivere poche righe di codice per risolvere il problema. Dai un'occhiata alla serie di corsi di DataCamp Importing Data in Python, tra gli altri corsi, per approfondire questo argomento.

Ho potuto usare pandas per leggere tutti i tipi di file di cui ho parlato prima, inclusi quei file .xml senza tag di chiusura. Con un po' di elaborazione del linguaggio naturale creativa posso anche recuperare tutti i metadati dei test dai file .txt grezzi, cosa che non riuscivo a fare con Excel perché non sono formattati come dati. La versione dello script che uso ora non solo legge tutti i tipi di file che mi servivano, ma con poche righe extra di codice Python sono riuscito ad acquisire automaticamente i log .json della Garbage Collection di Java da GC Easy chiamando l'API; una cosa che con Excel non avrei mai potuto fare. Come si confronta con Excel? Usando pandas posso cercare un'intera directory di test e ottenere tutti i dati in comodi e ordinati DataFrame in pochi minuti. Gestisce anche con facilità quei file di log che superano i 10 GB. Può non sembrare una dimensione enorme, ma buona fortuna a leggere qualcosa di quelle dimensioni con Excel.

Ho persino iniziato a passare dalla lettura di quei file piatti grezzi all'estrazione dei dati da un database Oracle multi‑terabyte. Non posso confrontare quel processo con Excel; a parte un breve esperimento l'ho evitato per le query ai database in Excel. Per quel che ricordo, non è stata un'esperienza che vorrei ripetere. Connettersi tramite Python, invece, è semplicissimo con SQLAlchemy. La connessione è facile e la velocità delle query surclassa Excel. Dai un'occhiata a Introduction to Relational Databases in Python per un'ottima introduzione all'argomento.

Pulizia dei dati

A parte le visualizzazioni, sono convinto che i dati dovrebbero essere in tabelle pulite, ordinate, formattate e etichettate. Pandas offre ottime opzioni per pulire i dati e presentare tabelle ben formattate. La pagina sulla formattazione (Styling) sul sito ufficiale di Pandas è la mia guida preferita per formattare i DataFrame. Con poche righe di codice puoi impostare le cifre decimali, formattare i numeri, aggiungere formattazioni per riga e condizionali, e il processo è ripetibile su un numero infinito di documenti. La possibilità di automatizzare alcune parti della pulizia dei dati, indipendentemente dalla dimensione, mi ha fatto risparmiare un'infinità di ore.

Ad essere onesti, puoi certamente pulire i dati in Excel. Ha un gran numero di strumenti integrati proprio per questo scopo, ed è esattamente ciò che dovevo fare ogni singola volta che (alla fine) caricavo tutti i dati necessari. Era un processo in gran parte manuale con un numero eccessivo di clic del mouse e, ancora una volta, molto soggetto a errori e dispendioso in termini di tempo. Anche se sei estremamente esperto di tutti gli strumenti che Excel offre, gli errori sono inevitabili. Ci sono modi per velocizzare con formule, macro e script VBA (ci arrivo tra un minuto), ma è una soluzione ben lontana dall'essere perfetta.

Analisi dei dati

Sarò molto diretto: pandas batte Excel a mani basse quando si tratta di analisi dei dati. Non c'è un modo equo per confrontarli. In Excel puoi scrivere formule e usare alcune funzioni integrate per analizzare i dati; l'ho fatto per anni e sono riuscito a farlo funzionare. Ho tenuto alcuni corsi sull'analisi dei dati in Excel, ne ho sostenuto l'uso in diverse occasioni e ho seguito un corso di statistica in cui Excel era lo strumento principale. Non sto dicendo che non si possa usare per l'analisi. Tuttavia, confrontarlo con pandas è come confrontare carta e matita con una calcolatrice: non sono nella stessa categoria.

Nell'agosto dello scorso anno, Kaggle ha riportato che Python aveva superato R nella Data Science e, a dicembre, Quartz ha definito pandas "lo strumento più importante nella Data Science". Credo non serva aggiungere altro sull'argomento.

Macro e VBA

Nel 2012 ero ancora in servizio attivo e dovevo andare a una visita dentistica di routine a Fort Bliss a El Paso, in Texas. Quando mi sono seduto sulla poltrona, il dentista ha detto che i denti del giudizio andavano tolti e, dato che aveva tempo, ha eseguito l'intervento sul momento con solo anestesia locale. È stata un'esperienza terribile che mi ha lasciato dolore per diversi giorni. Se dovessi scegliere tra rifarlo o lavorare con le Macro di Excel o con Visual Basic, credo che preferirei farmi togliere altri denti.

Ci sono molte persone molto competenti in questi ambiti e ho visto cose straordinarie realizzate con script VBA ingegnosi, e li applaudo. Chiaramente non ne sono un fan e non lo consiglio a nessuno, soprattutto quando puoi usare Python al suo posto. È un'alternativa a VBA così popolare che Microsoft sta pensando di incorporare Python come linguaggio di scripting in Excel.

Ma devo comunque usare Excel

Per quanto mi piacerebbe fare tutto in Python, nella mia situazione non è pratico. Per ora, i risultati delle mie analisi devono ancora essere consegnati in Excel. Fortunatamente, esistono pacchetti come OpenPyXl e XlsxWriter creati proprio per questo scopo. Uso XlsxWriter ogni giorno per convertire i DataFrame in report Excel molto professionali che non contengono formule, macro o script VBA. Gestisce anche le visualizzazioni.

A proposito di visualizzazione dei dati...

Basta grafici noiosi

Non sono mai stato un appassionato di data visualization. Ho sempre preferito vedere i dati in righe e colonne con evidenziazioni sulle aree di interesse, magari un grafico a barre qua e là. Excel fa un lavoro decente offrendo molte opzioni per visualizzare i dati, ma la mia conoscenza si limita alla creazione di grafici ad area impilata, a barre e a linee. Per ognuno di questi, seleziono i dati, clicco su “Inserisci grafico” e cerco quello di cui ho bisogno. Da lì, potrei fare un po' di filtro e aggiungere un titolo, ma finisce lì.

Per onestà, Excel offre un sacco di opzioni per personalizzare i grafici, ma il processo può essere molto difficile e con una curva di apprendimento ripida. Continuo a non amare la creazione di grafici in Excel, ma con Python è un'altra storia.

Ora credo fermamente nella visualizzazione dei dati e dedico molto impegno a ideare ottime visualizzazioni per l'analisi. Quando ho iniziato a seguire corsi su DataCamp e sono stato introdotto a pacchetti come Matplotlib e Bokeh, ho iniziato a capire la vera potenza e lo scopo della visualizzazione dei dati. Con Matplotlib, le visualizzazioni possono essere facilmente create all'interno di pandas o importando pyplot. L'elenco delle possibili visualizzazioni con pyplot è quanto meno vasto e praticamente ogni aspetto di un grafico può essere personalizzato. Introduction to Data Visualization With Python mostra come creare ottime visualizzazioni con Matplotlib.

Per quanto grande sia Matplotlib, mi sono trovato a desiderare un po' più di interattività nelle mie visualizzazioni. Volevo la possibilità di selezionare, fare zoom, passare il mouse, ordinare e filtrare i dati in una visualizzazione, e di certo non volevo imparare react.js o D3. Imparare Python è stato un piacere che continua tuttora, ma JavaScript non è il mio forte. Per fortuna, Python corre in aiuto ancora una volta con pacchetti come Bokeh e Dash.

Bokeh, supportato da Anaconda, integra D3.js e Python per creare grafici completamente interattivi che possono essere esportati come documenti html autonomi, incorporati in pagine web o eseguiti su un Bokeh Server. Anche se ha una curva di apprendimento più ripida rispetto a Matplotlib, credo che concorderai sul fatto che le visualizzazioni che produce valgono ampiamente lo sforzo; basta dare un'occhiata alla Gallery per rendertene conto. Non sono ancora neanche lontanamente abile con Bokeh quanto vorrei diventare, ma è uno dei miei pacchetti di visualizzazione preferiti fin dalla prima lezione di Interactive Data Visualization With Bokeh. Se Bokeh non fa al caso tuo, c'è Dash dei bravi ragazzi di Plotly.

Dash è un altro strumento di visualizzazione gratuito e open source per Python che integra React.js invece di D3. L'ho scoperto solo di recente e produce anch'esso visualizzazioni davvero fantastiche e interattive senza dover imparare una riga di Javascript. È difficile confrontare Dash con Bokeh, dato che entrambi sono in grado di produrre ottime visualizzazioni. L'unico intoppo che ho avuto con Dash finora è che sono riuscito a eseguire le visualizzazioni solo su un server Dash. Non sono riuscito a incorporarle in documenti autonomi, pagine html o notebook Jupyter. Tuttavia, mostra grandi potenzialità, come si vede nella loro gallery.

Risparmia tempo con la pianificazione e l'automazione delle attività

Nell'estate del 2014, avevamo un problema nell'organizzazione per cui lavoravo all'epoca. La Riserva dell'Esercito è guidata da una serie di numeri chiamati collettivamente “Readiness”. È la percentuale di personale assegnato a una data organizzazione che potrebbe essere chiamato per una missione. Il numero è determinato da diverse categorie di dati, tra cui medica, dentistica, istruzione, forma fisica e un'infinità di altre metriche. Non posso riportare qui il numero, ma il nostro non era nemmeno vicino a dove avrebbe dovuto essere.

La mia soluzione fu un report multi‑pagina in Excel composto da diverse tabelle e grafici con informazioni compilate da vari database del personale. Queste informazioni includevano dati di sintesi sull'organizzazione, informazioni su ogni individuo in ogni categoria di misurazione e proiezioni su dove sarebbe stato quel numero nei tre mesi successivi in base alle azioni intraprese quella settimana. È stato in realtà un grande successo e la nostra “Readiness” è aumentata sensibilmente e ci è rimasta per molto tempo.

Anche se ha funzionato, era un pasticcio. Arrivavo presto il lunedì mattina e scaricavo manualmente le informazioni da tutte le diverse fonti, poi pulivo i dati e li copiavo nel report della settimana. Passavo poi almeno un'ora a controllare il report per errori e a fare altra pulizia. Dopo di che andava inviato via email allo staff amministrativo così che potessero verificare i dati e aggiungere eventuali aggiornamenti non ancora presenti nei database. In media, servivano tre giorni per spedire questo report. Il costo in ore‑uomo era eccessivo e inutile.

Con un po' di scripting in Python avrei potuto scaricare automaticamente tutti i dati dalle varie fonti, compilarli in DataFrame di pandas, scrivere l'intero report in Excel e inviarlo automaticamente via email allo staff amministrativo. La parte migliore è che tutto questo si sarebbe potuto pianificare per l'una dopo la mezzanotte del lunedì, risparmiando innumerevoli ore di lavoro. Su sistemi Linux, è fin troppo facile pianificare l'esecuzione di script Python in orari specifici aggiungendoli al crontab. Nel mio lavoro attuale, lavoriamo con così tanti sistemi che il crontab è una parte essenziale del lavoro e pianificare attività lì è una competenza fondamentale. Quindi, se avessi bisogno di scaricare i dati ogni notte a mezzanotte e caricarli in un report, su un sistema Linux crontab sarebbe la strada da seguire.

Sono un fan di Linux ma la maggior parte del mio lavoro si svolge su Windows, ed è il mio sistema operativo preferito. Con esso, hai diverse opzioni per pianificare attività tramite Utilità di pianificazione di Windows, Schtask.exe o Powershell. Con una qualsiasi di queste opzioni puoi programmare i tuoi script per l'esecuzione nelle ore meno trafficate, quando sono libere più risorse di sistema, o impostarli perché vengano eseguiti subito dopo che una fonte dati è stata aggiornata. È un'opzione che vorrei tanto aver avuto un paio di anni fa.

Il mio strumento preferito: Jupyter Notebooks

Dopo aver usato Excel per così tanto tempo, imparare Python è stato come aver vissuto la vita con una sola pinza e un giorno scoprire un'intera cassetta degli attrezzi piena di strumenti nuovi di zecca. Ognuno è ottimo e ha il suo uso, ma se c'è uno strumento che uso più di tutti gli altri, è Jupyter Notebooks. Tutto ciò che ho scritto in Python è stato scritto in un Jupyter Notebook, sia per la fruizione diretta sia per un successivo utilizzo come script Python autonomo. Jupyter è uno strumento eccellente per scrivere funzioni, testare codice, fare analisi esplorativa dei dati e persino presentare un prodotto finale. Può anche essere usato per scrivere post di blog (come questo) o su Github con Pages. Se sfogli i tutorial su DataCamp vedrai che molti sono stati scritti nello stesso modo.

Perché menzionarlo parlando di Excel?

Jupyter Notebooks può essere usato al posto di Excel come prodotto finale della tua analisi. Puoi scrivere il codice, mostrare i DataFrame di pandas, visualizzazioni e conclusioni, tutto su un'unica pagina che può essere convertita in HTML con un clic. Uno dei miei obiettivi personali è abbandonare completamente Excel e usare invece Jupyter Notebooks per inviare i report finiti. Questa opzione diventa ancora più interessante ora che è stato rilasciato JupyterLab. Tra questo e i widget puoi trasformare un Jupyter Notebook in un'applicazione interattiva di analisi dei dati.

Considerazioni finali

Uso ancora Excel quotidianamente: è un ottimo strumento, radicato in molte organizzazioni, inclusa la mia. Quasi tutti lo conoscono e possono usarlo per consultare informazioni e fare semplici analisi dei dati. Quello che secondo me non molti sanno è che fare la stessa analisi con Pandas e Python non è solo più efficiente, è anche più semplice.

Il mio obiettivo è abbandonare completamente Excel entro la fine dell'anno, e potrò farlo usando gli strumenti citati in questo articolo. Non diventerai esperto dall'oggi al domani, ma lo stesso vale per Excel. Spero che questa lettura ti abbia ispirato ad allontanartene e provare alcuni dei nuovi strumenti che ho menzionato. Ti renderanno più efficiente, più produttivo e, in definitiva, velocizzeranno il tuo flusso di lavoro.

Argomenti
Python
Fogli di calcolo

Corsi di Python

Corso

Importazione di dati in Python - livello intermedio

2 ore
215.1K
Migliora le tue abilità nell'importazione dei dati in Python e impara a lavorare con i dati web e API.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro