![](https://intelligenza-artificiale.eu/wp-content/uploads/2024/02/Panda-per-ingegneri-dei-dati-Tecniche-avanzate-per-elaborare-e.png)
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