Python-Datendateiformat-Spickzettel

Python versteht alle gängigen Dateiformate. Darüber hinaus verfügt jede Bibliothek über ein eigenes "Warm Tube" -Format. Die Syntax ist natürlich in jedem Format rein individuell. Ich habe alle Funktionen für die Arbeit mit Dateien verschiedener Formate auf einem A4-Blatt zusammengefasst, wobei die Anwendung als Beispiel für die Verwendung in Jupyter Notebook dient.



Ich habe die Formate je nach Verwendungsmethode in drei Blöcke unterteilt. Wie Sie wissen, werden Dateien für den Informationsaustausch benötigt: zwischen Personen, zwischen Programmen (erster Block), zwischen einem Computer und einem Netzwerk (zweiter Block) und "Spiel speichern" - zwischen demselben Programm zu verschiedenen Zeitpunkten (dritter Block).

Kurz zu jedem Block:

1) Universalformate:

  • .csv - Text, prinzipiell durch Komma getrennte Werte, aber zum Beispiel bevorzugt das russische Exel das Trennen mit Semikolons, da das Komma im russischen Gebietsschema bereits als Dezimaltrennzeichen verwendet wird;
  • .raw ist ein Binärformat für diejenigen, die keine Dateiformate mögen. Der Datentyp und, wenn die Daten mehrdimensional sind, die entsprechenden Größen müssen separat übertragen werden, nur die Daten selbst in der Datei
  • .xls / .xlsx - die alte Binärdatei (Beschränkung auf 65k Zeilen) und die neuen xml-exel-Formate;
  • .mat ist eigentlich auch zwei Formate (beide binär): das alte proprietäre und das neue, basierend auf hdf5. Python kann mit beiden (über Bibliotheken) arbeiten.

2) "Netzwerk" -Formate:

  • .json - Text, sieht aus wie ein Wörterbuch in Python, aber Anführungszeichen können nur doppelt verwendet werden.
  • .xml - textuell, ähnlich wie html.

3) Native Python-Formate:

  • .pkl ist ein Binärformat, in das alle integrierten Python-Objekte gespeichert werden können. Benutzerdefinierte Klassen sind ebenfalls in der Lage, und wenn der Python etwas Falsches speichert, können Sie ihm mit magischen Methoden helfen. Unterstützt das Anhängen an das Ende einer vorhandenen Datei.
  • .npy und .npz - in numpy gibt es bis zu zwei ihrer Formate (beide binär). Sie erschienen als Reaktion auf den Verlust der Abwärtskompatibilität in pkl zum Zeitpunkt des Übergangs von Python v2 zu v3. Der Overhead ist minimal (~ 100 Bytes mehr als das entsprechende Raw; pkl ist jedoch etwas größer: ~ 150 Bytes mehr als Raw). In .npy können Sie nur ein Array und in npz mehrere auf einmal speichern und diese anschließend namentlich herausholen.
  • .h5 - binäres hdf5 Format. Es ist bemerkenswert, dass Sie darin eine ganze hierarchische Datenstruktur speichern können, es ist fast ein Dateisystem in einer Datei. Darüber hinaus kann es in Matlab ohne Konvertierung geöffnet werden. Nachteile:

    a) kleine Dateien nehmen unangemessen viel Platz ein (z. B. 300 Byte pkl gegenüber 3,1 MB für h5),
    b) viele Bugs ,
    c) Es wird an eine vorhandene Datei angehängt. Wenn jedoch ein Fehler auftritt (wie er auftritt), ist das Abrufen von Daten problematisch.

    Hier finden Sie eine detaillierte Analyse der Vor- und Nachteile von hdf5 - ein gutes Format für den Datenaustausch, ein schlechtes Format für die Verwendung als Dateisystem (Sie können beispielsweise ein Array nicht löschen, kopieren Sie die Datei einfach ohne dieses Format).
  • .parquet ist ein Binärformat für Big Data. Apache Parquet ist kein natives Python-Format, aber es ist gut in Pandas integriert. Sie können im laufenden Betrieb komprimieren / expandieren (rle, gzip, Wörterbuchcodierung); komprimiert etwas besser als Apache Avro. Im Gegensatz zu avro, bei dem Daten zeilenweise (wie bei C) gespeichert werden, werden Parkettdaten spaltenweise (wie bei fortran) gespeichert. Dadurch können Sie effektiv mit Tabellen mit einer großen Anzahl von Spalten arbeiten.
  • jupyter hat beschlossen, das Rad nicht neu zu erfinden -% store speichert es im .pkl-Format, aber aus irgendeinem Grund ohne Erweiterung.

Sheatsheet selbst:

- im pdf- Format
- im PNG-Format:

Ein Beispiel für die Verwendung aller Funktionen aus einem Diagramm: HTML mit Inhaltsverzeichnis und IPYNB-Quelle

Source: https://habr.com/ru/post/de481140/


All Articles