Lesen Sie HDF5-Dateien in Pandas DataFrame ein

Manav Narula 21 Juni 2023
  1. Exportieren Sie einen DataFrame mit Pandas nach HDF5
  2. HDF5-Datei in einen Pandas DataFrame einlesen
  3. Abschluss
Lesen Sie HDF5-Dateien in Pandas DataFrame ein

Die Welt entwickelt sich weiter, und Big Data wird für die Speicherung und Verarbeitung großer Datenmengen große Bedeutung beigemessen. Aufgrund dieser Menge sind neue Dateiformate entstanden, die die traditionellen Speicheroptionen überholen.

Ein solches Format ist die HDF5-Datei. Eine HDF5-Datei steht für Hierarchal Data Format Version 5; Diese Version wird am häufigsten verwendet.

Wir verwenden dieses Dateiformat, um große Datenmengen zu speichern und die Inhalte in einer bestimmten Hierarchie zu organisieren. Dies hat den Vorteil, dass weniger Speicherplatz benötigt wird und ein schneller Zugriff auf Teile der Daten möglich ist.

Mit solchen Dateien können wir in Python mit dem Modul h5py effizient arbeiten. Wir können sogar die Pandas-Bibliothek verwenden, um solche Daten in Datenrahmen zu laden.

In diesem Artikel wird gezeigt, wie Sie mit HDF5-Dateien mithilfe der Pandas-Bibliothek in Python arbeiten.

Exportieren Sie einen DataFrame mit Pandas nach HDF5

Wir können ein Dataframe-Objekt mit der Funktion pandas.to_hdf() in eine HDF5-Datei exportieren. Diese Funktion schreibt einen Datenrahmen mit HDFStore in eine HDF5-Datei.

Bevor wir diese Funktion verwenden, müssen wir einige entscheidende Parameter verstehen.

Um die Gruppenkennung anzugeben, verwenden wir den Parameter key. Mit dem Parameter mode können wir verschiedene Modi für die Datei einstellen.

Der w-Modus öffnet die Datei im Schreibmodus und löscht den vorherigen Inhalt. Der a-Modus öffnet die Datei im Anhängemodus und fügt Daten hinzu, wobei der vorherige Inhalt erhalten bleibt.

Im folgenden Beispiel exportieren wir nun mit dieser Funktion einen Datenrahmen in eine HDF5-Datei.

df = pd.DataFrame({"C1": [10, 11, 12], "C2": [20, 21, 22]}, index=[0, 1, 2])
df.to_hdf("file_data.h5", key="df", mode="w")

Das obige Beispiel erstellt eine HDF5-Datei mit dem Inhalt des Datenrahmens. Wir öffnen die Datei im Schreibmodus und löschen alle vorherigen Daten.

HDF5-Datei in einen Pandas DataFrame einlesen

Wir haben die Funktion pandas.read_hdf(), mit der wir solche Dateien direkt lesen können. Es funktioniert jedoch nicht für jede HDF5-Datei.

Die Pandas-Bibliothek versteht nur einige spezifische Strukturen der HDF5-Dateien, daher funktioniert diese Funktion nur mit solchen Strukturen.

Siehe Code unten.

import pandas as pd

df = pd.read_hdf("file_data.h5")
print(df)

Ausgang:

   C1  C2
0  10  20
1  11  21
2  12  22

Im obigen Beispiel lesen wir die in der vorherigen Funktion erstellte HDF5-Datei mit der Funktion read_hdf(). Wie bereits erwähnt, kann nicht jede Struktur für die HDF5-Datei direkt mit der Funktion pandas.read_hdf() importiert werden.

Für solche Fälle gibt es eine schnelle Lösung, die funktionieren kann. Dabei werden die Module h5py und numpy verwendet.

Wir werden den Konstruktor h5py.File verwenden, um die angegebene HDF5-Datei zu lesen und sie mit der Funktion numpy.array() in einem numpy-Array zu speichern. Dann können wir diese Daten mit der Funktion pandas.DataFrame() in einem Datenrahmen speichern.

Das Format dafür ist unten dargestellt.

import pandas as pd
import numpy as np
import h5py

df = pd.DataFrame(np.array(h5py.File("file_data.h5")["df"]))

Abschluss

Zum Abschluss haben wir besprochen, wie man mit HDF5-Dateien mit der Pandas-Bibliothek in Python arbeitet. Wir begannen damit, uns über das HDF5-Dateiformat und seine Vorteile zu informieren.

Wir haben einen Datenrahmen mit der Methode to_hdf() in solche Dateien exportiert. Wir verwenden die Funktion read_hdf(), um solche Dateien zu lesen.

Für komplexe Strukturen können wir eine Kombination von Funktionen aus der h5py-, NumPy- und Pandas-Bibliothek verwenden, um die Dateien in einen Datenrahmen einzulesen.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Verwandter Artikel - Pandas DataFrame