2013-06-06 24 views
7

Esiste un modo rapido per eseguire la serializzazione di un DataFrame?Serializzazione di un panda DataFrame

Ho un sistema di rete che può eseguire analisi di panda in parallelo. Alla fine, voglio raccogliere tutti i risultati (come un DataFrame) da ogni griglia e aggregarli in un enorme DataFrame.

Come è possibile salvare il frame di dati in un formato binario che può essere caricato rapidamente?

+0

Vedere la domanda correlata http://stackoverflow.com/questions/12772498/serialize-pandas-python-dataframe-to-binary-format – user1929959

risposta

9

Il modo più semplice è solo per usare to_pickle (come pickle), vedi pickling from the docs api page:

df.to_pickle(file_name) 

Un'altra opzione è quella di utilizzare HDF5, un po 'più di lavoro per iniziare, ma molto più ricca per l'interrogazione.

+0

I loro documenti sembrano aver bisogno di un po 'di lavoro. Il metodo '.save()' non ha assolutamente alcuna descrizione. – voithos

+0

@voithos Mi sono reso conto che mentre stavo cercando un collegamento ... :( –

+2

[This] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.common.save.html) sembra essere il migliore in circolazione ... –

1

Devono temporizzato lo io functions disponibile? Binary non è automaticamente più veloce e HDF5 dovrebbe essere abbastanza veloce per quanto ne so.

3

DataFrame.to_msgpack è sperimentale e non privo di alcuni problemi, ad es. con Unicode, ma è molto più veloce rispetto al decapaggio. Ha serializzato un dataframe con 5 milioni di file che richiedevano 2-3 Gb di memoria in circa 2 secondi e il file risultante era di circa 750 Mb. Il caricamento è un po 'più lento, ma comunque più veloce di unpicking.