Quale formato dati utilizzare per il tuo progetto Big Data?

 | Intelligenza-Artificiale

Pickle, Parquet, CSV, Feather, HDF5, ORC, JSON: quale dovresti utilizzare e perché?

Immagine di Maarten van den Heuvel — Unsplash

La scelta del formato dati corretto è fondamentale nei progetti di data science, in quanto influisce su tutto, dalla velocità di lettura/scrittura dei dati al consumo di memoria e all’interoperabilità. Questo articolo esplora sette formati di serializzazione/deserializzazione popolari in Python, concentrandosi sulle loro implicazioni in termini di velocità e utilizzo della memoria.

Attraverso l’analisi vedremo anche come possiamo utilizzare la profilazione in Python (usando il file cProfile modulo integrato) e come possiamo ottenere statistiche sull’utilizzo della memoria per file specifici nel tuo filesystem (usando il modulo os modulo Python).

Naturalmente, ogni progetto ha le sue specificità, oltre alla velocità e all’utilizzo della memoria. Ma tracceremo alcuni trend, che speriamo possano essere utili per far luce su quale formato possiamo scegliere per un determinato progetto.

Comprendere la serializzazione e la deserializzazione

La serializzazione è il processo di salvataggio di un oggetto (in Python, ad esempio un DataFrame panda) in un formato che può essere salvato in un file per un successivo recupero. La deserializzazione è il processo inverso.

Un dataframe è un oggetto Python e non può essere persistente così com’è. È necessario tradurlo in un file per poter caricare questo oggetto in una fase successiva.

Quando salvi un dataframe, “serializza” i dati. E quando lo ricarichi, lo “deserializzi” o lo traduci nuovamente in un formato leggibile dal linguaggio (qui leggibile da Python).

Alcuni formati sono ampiamente utilizzati perché leggibili dall’uomo, come JSON o CSV. Questi due formati vengono utilizzati anche perché sono indipendenti dalla lingua. Proprio come buffer del protocolloche sono stati originariamente sviluppati da Google. Anche JSON e il buffer di protocollo sono popolari per le API e consentono l’invio di dati tra diversi servizi scritti in linguaggi diversi.

D’altra parte, alcuni formati, come pickle di Python, sono specifici del linguaggio e non sono ideali per trasferire dati tra servizi in diversi linguaggi di programmazione. Ad esempio, per un caso d’uso di machine learning, se un repository addestra un modello e lo serializza in pickle, questo file potrà essere letto solo da Python. Quindi, se l’API che…

Fonte: towardsdatascience.com

Lascia un commento

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