Ogni analisi comincia allo stesso modo: si carica un dataset e si prova a capire cosa contiene. Quante righe? Quali colonne sono numeriche? Quanti valori mancano? Di solito rispondiamo a queste domande copiando e incollando i soliti df.describe(), df.isna().sum() e df.groupby(...).agg(...), per poi riformattare l’output a mano quando arriva il momento di metterlo in un report. Un tutorial di KDnuggets mostra come trasformare quei frammenti sparsi in una pipeline ripetibile, usando il dataset Palmer Penguins come filo conduttore.
Il punto pratico per chi lavora con i dati e’ smettere di fare statistiche descrittive e iniziare a eseguirle: si scrive la logica una volta e la si riusa su ogni dataset che arriva sulla scrivania. La guida costruisce una vera e propria scala, con un gradino per ogni situazione.
Dalla base di Pandas ai report interattivi
Si parte da df.describe(), immediato ma con punti ciechi noti: ignora le colonne categoriche, non riporta la percentuale di valori mancanti e si ferma al riassunto a cinque numeri. Restando dentro Pandas si va comunque piu’ lontano: describe(include="all") ripiega anche le colonne testuali nella stessa tabella, mentre la combinazione select_dtypes + .agg([...]) + groupby permette di scegliere colonne, statistiche e strati, aggiungendo skewness, kurtosis e una colonna con la percentuale di missing.
Quando serve qualcosa di piu’ ricco senza assemblarlo a mano, skimpy stampa in console un report strutturato con istogrammi ASCII inline e i valori mancanti riportati come conteggio e percentuale. Per il quadro completo (distribuzioni, correlazioni, duplicati, alert di data quality) c’e’ invece il profiling: la libreria, nata come pandas-profiling, poi ydata-profiling nel 2023 e rinominata fg-data-profiling ad aprile 2026, genera un file HTML interattivo con un one-liner.
Tabelle pronte per la pubblicazione
Per i lettori, non solo per l’esplorazione, entrano in gioco due strumenti. tableone produce la classica “Table 1” delle caratteristiche di base che apre quasi ogni paper clinico e quantitativo, con statistiche stratificate, p-value, SMD ed export diretto verso LaTeX, HTML, Markdown o CSV. Gli stessi autori ricordano un punto importante: le statistiche automatiche non sostituiscono il giudizio umano su quale test usare, se una variabile sia davvero normale e come gestire i dati mancanti. Great Tables, invece, trasforma un DataFrame qualsiasi in una tabella impaginata e presentabile, con formattazione numerica, gradienti di colore e note di fonte.
La lezione di fondo e’ scegliere lo strumento piu’ leggero che risponde alla domanda: per un controllo di cinque secondi vince describe(), per un manoscritto guadagnano il loro spazio tableone e Great Tables.
- Pandas basta per controlli rapidi e riassunti su misura, con zero dipendenze aggiuntive.
- skimpy e il profiling coprono la fase esplorativa; tableone e Great Tables producono output pronti da condividere.
- Racchiudere la combinazione preferita in una funzione rende ogni nuovo dataset una singola chiamata.
Fonte: 7 Steps to Automating Descriptive Statistics with Python — https://www.kdnuggets.com/7-steps-to-automating-descriptive-statistics-with-python
Hai qualcosa da aggiungere? Unisciti alla discussione.