Ich habe einen Pandas-Datenrahmen namens df
.
Ich möchte das in einem gezippten Format speichern. Eine Möglichkeit, dies zu tun, ist Folgendes:
%Vor% Dazu muss ich jedoch zuerst eine Datei namens filename.pickle
erstellen.
Gibt es eine Möglichkeit, dies direkter zu tun, d. H. Ohne das filename.pickle
zu erstellen?
Wenn ich den Datenrahmen laden will, der gezippt wurde, muss ich das selbe durchgehen
Schritt zum Erstellen von Dateiname.pickle. Zum Beispiel, um eine Datei zu lesen
filename2.pickle.gzip
, was ein gezippter Pandas-Datenframe ist, kenne ich die folgende Methode:
Kann dies getan werden, ohne zuerst filename2.pickle
zu erstellen?
Wir planen eine bessere Serialisierung mit Komprimierung. Bleiben Sie auf dem Laufenden Pandas Entwicklung
Bessere Serialisierung mit Komprimierung wurde kürzlich zu Pandas hinzugefügt. (Beginnend in Pandas 0.20.0.) Hier ist ein Beispiel, wie es verwendet werden kann:
%Vor%Weitere Informationen, z. B. zu den verschiedenen Formen der Komprimierung, finden Sie in der Dokumente .
Aus irgendeinem Grund hat das Python-Modul zlib die Möglichkeit, gzip-Daten zu dekomprimieren, hat dies aber nicht die Fähigkeit, direkt auf dieses Format zu komprimieren. Zumindest was dokumentiert ist. Dies ist trotz der bemerkenswert irreführenden Dokumentationsseite "Komprimierung kompatibel mit gzip".
Sie können das zlib-Format stattdessen mit zlib.compress
oder zlib.compressobj
komprimieren und dann den zlib-Header entfernen und trailer und fügen Sie einen gzip-Header und -Trailer hinzu, da sowohl das zlib- als auch das gzip-Format dasselbe komprimierte Datenformat verwenden. Dadurch erhalten Sie Daten im gzip-Format . Der zlib Header ist auf zwei Bytes und der Trailer auf vier Bytes festgelegt, so dass diese einfach zu entfernen sind. Dann können Sie einen grundlegenden gzip-Header von zehn Bytes vorgeben: "\x1f\x8b\x08
(C-String-Format) und einen Vier-Byte-CRC in Little-Endian-Reihenfolge anhängen. Die CRC kann mit %code% berechnet werden. zlib.crc32
%code%%code%%code%%code%%code%\xff"
Sie können das Datenframe mit pickle.dumps in eine Zeichenfolge ablegen und dann mit der Festplatte auf die Festplatte schreiben Importieren Sie gzip
%Vor%