Tecniche avanzate per elaborare e caricare i dati in modo efficiente

Immagine generata dall’intelligenza artificiale utilizzando Kandinsky

In questa storia vorrei parlare delle cose che mi piacciono dei Panda e che utilizzo spesso nelle applicazioni ETL che scrivo per elaborare i dati. Toccheremo l’analisi esplorativa dei dati, la pulizia dei dati e le trasformazioni dei frame di dati. DimostrerĆ² alcune delle mie tecniche preferite per ottimizzare l’utilizzo della memoria ed elaborare grandi quantitĆ  di dati in modo efficiente utilizzando questa libreria. Lavorare con set di dati relativamente piccoli in Panda ĆØ raramente un problema. Gestisce i dati nei frame di dati con facilitĆ  e fornisce un set di comandi molto conveniente per elaborarli. Quando si tratta di trasformazioni di dati su frame di dati molto piĆ¹ grandi (1 Gb e piĆ¹), normalmente utilizzerei Spark e cluster di elaborazione distribuiti. PuĆ² gestire terabyte e petabyte di dati, ma probabilmente costerĆ  anche un sacco di soldi per far funzionare tutto quell’hardware. Ecco perchĆ© Panda potrebbe essere una scelta migliore quando dobbiamo gestire set di dati di medie dimensioni in ambienti con risorse di memoria limitate.

Generatori di panda e Python

In una delle mie storie precedenti ho scritto su come elaborare i dati in modo efficiente utilizzando i generatori in Python (1).

ƈ un semplice trucco per ottimizzare l’utilizzo della memoria. Immagina di avere un enorme set di dati da qualche parte nella memoria esterna. PuĆ² essere un database o semplicemente un semplice file CSV di grandi dimensioni. Immaginiamo di dover elaborare questo file da 2-3 TB e applicare alcune trasformazioni a ciascuna riga di dati in questo file. Supponiamo di avere un servizio che eseguirĆ  questa attivitĆ  e che abbia solo 32 Gb di memoria. Questo ci limiterĆ  nel caricamento dei dati e non potremo caricare l’intero file in memoria per dividerlo riga per riga applicando il semplice Python split(ā€˜\nā€™) operatore. La soluzione sarebbe elaborarlo riga per riga e yield ogni volta liberando la memoria per quella successiva. Questo puĆ² aiutarci a creare un flusso costante di dati ETL verso la destinazione finale della nostra pipeline di dati. PuĆ² essere qualsiasi cosa: un bucket di archiviazione nel cloud, un altro database, una soluzione di data warehouse (DWH), un argomento di streaming o altro…

Fonte: towardsdatascience.com

Lascia un commento

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