Wie kann man einen Pandas-Datenframe direkt im Gzip-Format speichern?

7

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:

%Vor%

Kann dies getan werden, ohne zuerst filename2.pickle zu erstellen?

    
Curious2learn 23.10.2012, 14:54
quelle

4 Antworten

8

Wir planen eine bessere Serialisierung mit Komprimierung. Bleiben Sie auf dem Laufenden Pandas Entwicklung

    
Wes McKinney 27.10.2012, 18:19
quelle
10

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 .

    
Seanny123 19.05.2016 15:33
quelle
2

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\x08zlib.crc32%code%%code%%code%%code%%code%\xff" (C-String-Format) und einen Vier-Byte-CRC in Little-Endian-Reihenfolge anhängen. Die CRC kann mit %code% berechnet werden.

    
Mark Adler 23.10.2012 15:18
quelle
1

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%     
Viacheslav Nefedov 22.06.2013 22:03
quelle

Tags und Links