2013-06-06 28 views
7

Gibt es eine schnelle Möglichkeit zur Serialisierung eines DataFrame?Serialisierung eines Pandas DataFrame

Ich habe ein Grid-System, das Pandas-Analyse parallel ausführen kann. Am Ende möchte ich alle Ergebnisse (als DataFrame) von jedem Grid-Job sammeln und sie zu einem riesigen DataFrame zusammenfassen.

Wie kann ich Datenrahmen in einem binären Format speichern, das schnell geladen werden kann?

+0

Siehe verwandte Frage http://stackoverflow.com/questions/12772498/serialize-pandas-python-dataframe-to-binary-format – user1929959

Antwort

9

Der einfachste Weg ist nur to_pickle (als pickle) Verwendung finden pickling from the docs api page:

df.to_pickle(file_name) 

Eine weitere Option ist HDF5 zu verwenden, etwas mehr Arbeit für die Abfrage aber viel reicher zu beginnen.

+0

Ihre Dokumente scheinen etwas Arbeit zu brauchen. Die '.save()' Methode hat absolut keine Beschreibung. – voithos

+0

@voithos Ich erkannte, dass, als ich nach einem Link suchte ... :( –

+2

[This] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.common.save.html) scheint das beste da draußen zu sein ... –

1

Muss die verfügbare Zeit io functions? Binär ist nicht automatisch schneller und HDF5 sollte meines Wissens ziemlich schnell sein.

3

DataFrame.to_msgpack ist experimentell und nicht ohne einige Probleme, z. mit Unicode, aber es ist viel schneller als Beizen. Es serialisierte einen Datenrahmen mit 5 Millionen Zeilen, der 2-3 Gb Speicher in ungefähr 2 Sekunden benötigte, und die resultierende Datei war ungefähr 750 Mb. Das Laden ist etwas langsamer, aber immer noch viel schneller als das Entpacken.