Come confrontare 2 set di dati con la profilazione di Panda

Nov 25 2022
Un caso d'uso sulla qualità dei dati con EDA avanzato
La visualizzazione è la pietra angolare dell'EDA. Di fronte a un set di dati nuovo e sconosciuto, l'ispezione visiva ci consente di avere un'idea delle informazioni disponibili, tracciare alcuni modelli relativi ai dati e diagnosticare diversi problemi che potremmo dover affrontare.
Rapporto di confronto dei profili Pandas (screenshot dell'autore)

La visualizzazione è la pietra angolare dell'EDA. Di fronte a un set di dati nuovo e sconosciuto, l'ispezione visiva ci consente di avere un'idea delle informazioni disponibili, tracciare alcuni modelli relativi ai dati e diagnosticare diversi problemi che potremmo dover affrontare. A tale proposito, Pandas Profiling è stato il coltellino svizzero indispensabile nella cintura degli attrezzi di ogni data scientist. Nei miei articoli precedenti, ho menzionato come la profilazione dei panda può essere utile durante l'esecuzione di serie temporali EDA , ma cosa succederebbe se potessimo confrontare due set di dati?

Quanti di noi hanno avviato lo sviluppo di un progetto di data science e lottano per capire quanto stiamo ottenendo dalle nostre trasformazioni e ingegneria dei dati?

Ed è esattamente ciò di cui parlerò nel post del blog di oggi: come sfruttare la più famosa singola riga di codice EDA per potenziare il processo di sviluppo della scienza dei dati e miglioramenti della qualità dei dati. Ti darò un tour su come sfruttare la funzionalità del rapporto di confronto Pandas-Profiling per potenziare il tuo processo EDA e illustrarne il potenziale nel produrre trasformazioni più veloci e intelligenti sui nostri dati.

Il set di dati utilizzato in questo articolo può essere trovato in Kaggle, il set di dati HCC di Miriam Santos (Licenza: CC0: Public Domain ). Per questo particolare caso d'uso, ho introdotto artificialmente alcuni problemi di qualità dei dati aggiuntivi per mostrarti come la visualizzazione può aiutarci a rilevarli e guidarci verso la loro mitigazione efficiente. Tutto il codice e gli esempi sono disponibili su GitHub e nel caso avessi bisogno di un piccolo aggiornamento, assicurati di controllare questo blog per rispolverare le tue abilità di profilazione dei panda. Quindi, avanti con il nostro caso d'uso!

Pandas Profiling: EDA a portata di mano

Inizieremo profilando il set di dati HCC e analizzando i problemi di qualità dei dati suggeriti nel rapporto:

pip install pandas-profiling==3.5.0
    
      

Alerts shown in Pandas Profiling Report (scheenshot by author)

  • Duplicati : 4 righe duplicate nei dati;
  • Constant : Valore costante “999” in 'O2';
  • Alta correlazione : diverse caratteristiche contrassegnate come altamente correlate;
  • Missing : Valori mancanti in 'Ferritina'.

Rimozione di righe duplicate : a seconda della natura del dominio, potrebbero esserci record con gli stessi valori senza che si tratti di un errore. Tuttavia, considerando che alcune delle caratteristiche in questo set di dati sono piuttosto specifiche e si riferiscono a misurazioni biologiche di un individuo (ad es. "Emoglobina", "MCV", "Albumina"), è improbabile che diversi pazienti riportino gli stessi valori esatti per tutte le caratteristiche . Iniziamo eliminando questi duplicati dai dati:

Rimozione di caratteristiche irrilevanti : i valori costanti in O2 riflettono anche una vera incoerenza nei dati e non sembrano contenere informazioni preziose per lo sviluppo del modello. In scenari di casi d'uso reali, sarebbe un buon standard iterare con un dominio o un esperto aziendale, ma ai fini di questo esempio di caso d'uso, andremo avanti e li elimineremo dall'analisi:

Imputazione dei dati mancanti : anche il set di dati HCC sembra estremamente suscettibile ai dati mancanti. Un modo semplice per risolvere questo problema (evitando di rimuovere record incompleti o intere funzionalità) è ricorrere all'attribuzione dei dati. Useremo l'imputazione media per riempire le osservazioni assenti, in quanto è la più comune e semplice delle tecniche di imputazione statistica e spesso serve come metodo di riferimento:

Confronto fianco a fianco: iterazioni più rapide e intelligenti sui tuoi dati

Adesso per la parte divertente! Dopo aver implementato il primo batch di trasformazioni nel nostro set di dati, siamo pronti a valutarne l'impatto sulla qualità complessiva dei nostri dati. È qui che torna utile la funzionalità del rapporto di confronto dei profili panda. Il codice seguente illustra come iniziare:

Ecco come vengono mostrati entrambi i rapporti nel confronto:

Confronto tra dati originali e dati trasformati (screencast dell'autore)

Cosa possiamo capire subito dalla nostra panoramica del set di dati? Il set di dati trasformato contiene una caratteristica meno categorica ("O2" è stato rimosso), 165 osservazioni (rispetto alle 171 originali contenenti duplicati) e nessun valore mancante (in contrasto con le 79 osservazioni mancanti nel set di dati originale).

Ma in che modo queste trasformazioni hanno influito sulla qualità dei nostri dati? E quanto sono state buone quelle decisioni?

Immergiamoci in profondità in questo. Per quanto riguarda i record duplicati, non vi è stato alcun impatto particolare per quanto riguarda le distribuzioni delle variabili e i modelli dei set di dati dopo il rilascio. L'imputazione dei valori mancanti che è stata fatta è una storia diversa.

Come previsto, non ci sono osservazioni mancanti dopo l'assegnazione dei dati. Si noti come sia il conteggio delle nullità che la matrice mostrino le differenze tra le due versioni dei dati: nei dati trasformati, "Ferritin" ha ora 165 valori completi e non è possibile trovare spazi vuoti nella matrice delle nullità.

Rapporto di confronto: valori mancanti (screencast dell'autore)

Tuttavia, possiamo dedurre qualcos'altro dal rapporto di confronto. Se dovessimo ispezionare l'istogramma "Ferritin", vedremmo come l'imputazione dei valori con la media ha distorto la distribuzione dei dati originale, il che è indesiderabile.

Rapporto di confronto: Ferritina: i valori imputati sembrano distorcere la distribuzione delle caratteristiche originali (Screenshot dell'autore)

Ciò si osserva anche attraverso la visualizzazione di interazioni e correlazioni, in cui emergono schemi di interazione stupidi e valori di correlazione più elevati nella relazione tra "Ferritina" e le restanti caratteristiche.

Rapporto di confronto: Interazioni tra Ferritina ed Età: i valori imputati sono mostrati in una linea verticale corrispondente alla media (Screenshot dell'autore)
Rapporto di confronto: correlazioni: i valori di correlazione della ferritina sembrano aumentare dopo l'imputazione dei dati (screenshot dell'autore)

Ciò dimostra che il rapporto di confronto non è solo utile per evidenziare le differenze introdotte dopo le trasformazioni dei dati, ma fornisce diversi spunti visivi che ci portano verso importanti intuizioni riguardo a tali trasformazioni: in questo caso, dovrebbe essere considerata una strategia di imputazione dei dati più specializzata .

Pensieri finali

Durante questo piccolo caso d'uso, abbiamo illustrato l'utilità del confronto di due set di dati all'interno dello stesso report di profilazione per evidenziare le trasformazioni dei dati eseguite durante l'EDA e valutarne l'impatto sulla qualità dei dati.

Tuttavia, le applicazioni di questa funzionalità sono infinite, poiché la necessità di (re)iterare la valutazione delle funzionalità e l'ispezione visiva è vitale per le soluzioni incentrate sui dati . Dal confronto di distribuzioni di treni , convalida e set di test o controllo della qualità dei dati a casi d'uso più avanzati come per il processo di generazione di dati sintetici .

Fabiana Clemente , CDO di YData

Accelerazione dell'IA con dati migliorati.