Wie serialisiert / deserialisiert man Pandas DataFrame von und zu ProtoBuf / Gzip in einer RESTful Flask App?

9

Ich habe ein pandas dataframe , das als Flask Response -Objekt in einer flask -Anwendung zurückgegeben wird. Momentan konvertiere ich es in ein JSON Object ,

%Vor%

Die Datenrahmengröße ist wirklich riesig, wahrscheinlich 5000000 X 10. Auf der Client-Seite, wenn ich es als deserialize,

%Vor%

Wenn meine Anzahl von URL request parameters wächst, wächst auch dataframe . Die Deserialisierungszeit wächst im Vergleich zur Serialisierung um linear factor , was ich vermeiden möchte. Beispiel: Serialization dauert 15-20 Sekunden, deserialization dauert 60-70 Sekunden.

Gibt es eine Möglichkeit, dass protobuf in diesem Fall helfen kann, den Pandas-Datenrahmen in ein Protobuf-Objekt umzuwandeln. Gibt es auch eine Möglichkeit, dass ich diese JSON als Gunzipped mimetype durch flask senden kann? Ich glaube, es gibt ein vergleichbares Timing und eine vergleichbare Effizienz zwischen protobuf und gunzip .

Was ist die beste Lösung in einem solchen Szenario?

Vielen Dank im Voraus.

    
user6591903 15.07.2016, 04:45
quelle

1 Antwort

1

Ich bin kürzlich auf dasselbe Problem gestoßen. Ich löste es, indem ich die Zeilen meines DataFrame durchlaufen und protobuf_obj.add () in dieser Schleife mit Informationen aus dem DataFrame aufruft. Sie können dann die serialisierte Zeichenfolgenausgabe mit GZIP versehen.

d. etwas in der Art von:

%Vor%

Angesichts der Tatsache, dass diese Frage nicht innerhalb von neun Monaten beantwortet wurde, bin ich mir nicht sicher, ob es eine bessere Lösung gibt, aber definitiv offen dafür, eine zu hören, wenn es welche gibt!

    
erkyky 18.04.2017 22:22
quelle