HOWTO · Pandas
Parquet-Datei in Pandas DataFrame einlesen
Dieses Tutorial demonstriert, wie man Parquet-Dateien in Python in einen Pandas-DataFrame einliest.
Auf dieser Seite
Um eine Parquet-Datei in einen pandas DataFrame zu laden, installieren Sie pandas und eine kompatible Parquet-Engine und rufen dann pandas.read_parquet() auf. Das folgende Beispiel verwendet PyArrow, schreibt einen kleinen DataFrame in eine temporäre Datei und liest ihn wieder ein.
Parquet-Dateien
Parquet ist ein spaltenorientiertes Dateiformat für tabellarische Daten. Es speichert Werte spaltenweise und kann Schema- und Kompressionsinformationen enthalten, weshalb es häufig für analytische Datensätze verwendet wird. CSV ist ein textbasiertes Zeilenformat. Die Formate haben unterschiedliche Vor- und Nachteile; keines ist universell schneller oder effizienter. Die gelesene Datenmenge und die gewählte Engine können den Aufwand beim Laden eines Datensatzes beeinflussen.
Parquet ist für strukturierte Daten wie Tabellen gedacht, nicht als allgemeiner Container für Video-, Audio- oder Bilddateien. Eine Parquet-Datei kann Spalten enthalten, deren Werte auf anderswo gespeicherte Medien verweisen, aber die Medien selbst sind nicht der Zweck des Tabellenformats.
Parquet-Datei in Pandas DataFrame einlesen
Installieren Sie pandas und PyArrow in der Python-Umgebung, die Ihr Programm ausführt, mit python -m pip install pandas pyarrow. Pandas benötigt eine unterstützte Parquet-Engine, um die Datei zu verarbeiten. Dieses Beispiel wählt PyArrow ausdrücklich; die Engine muss installiert sein, und die verfügbaren Optionen können von Ihrer pandas-Umgebung abhängen. Die andere üblicherweise mit pandas verwendete Engine ist fastparquet; installieren und wählen Sie sie nur, wenn sie zu Ihrer Umgebung passt.
Verwenden Sie pd.read_parquet(path, engine="pyarrow"), wenn Sie bereits eine Datei haben. path kann eine lokale Datei oder eine unterstützte entfernte Quelle bezeichnen. Die Funktion gibt einen pandas DataFrame zurück. Für einen vorhandenen Datensatz setzen Sie columns=[...], um bestimmte Spalten anzufordern, wenn die gewählte Engine und die Quelle diese Operation unterstützen. Die vollständige Funktionssignatur und die akzeptierten Optionen können je nach pandas-Version und Engine variieren; konsultieren Sie daher die Dokumentation für die in Ihrem Projekt installierten Versionen, bevor Sie sich auf zusätzliche Argumente verlassen.
Bei einer lokalen Datei wird ein relativer Pfad ausgehend vom aktuellen Arbeitsverzeichnis des Programms aufgelöst; verwenden Sie einen absoluten Pfad, wenn das Skript aus unterschiedlichen Verzeichnissen laufen kann. Beim Lesen aus einem entfernten Speicher muss die Quelle von der gewählten Engine unterstützt werden, und alle erforderlichen Zugangsdaten oder Speicherkonfigurationen müssen dem Prozess zur Verfügung stehen. Der zurückgegebene DataFrame enthält die aus der Datei dekodierten Spalten und Zeilen, mit Datentypen, die aus dem gespeicherten Schema und den unterstützten Typzuordnungen des Readers bestimmt werden. Wenn ein Wert für die spätere Analyse einen anderen pandas-Typ benötigt, konvertieren Sie diese Spalte nach dem Laden.
Das folgende Beispiel prüft, ob PyArrow vorhanden ist, bevor es den lokalen Parquet-Roundtrip versucht. Es gibt immer den Beispiel-DataFrame aus; wenn PyArrow installiert ist, schreibt und liest es zusätzlich eine temporäre Parquet-Datei. Installieren Sie pandas und PyArrow in der aktiven Umgebung, um den vollständigen Roundtrip auszuführen.
from importlib.util import find_spec
from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd
students = pd.DataFrame(
{
"student": ["Alia", "Zoya", "Ali"],
"marks": [20, 10, 22],
}
)
if find_spec("pyarrow") is None:
print("PyArrow is not installed; displaying the sample DataFrame only.")
print(students.to_string(index=False))
else:
with TemporaryDirectory() as directory:
parquet_path = Path(directory) / "students.parquet"
students.to_parquet(parquet_path, engine="pyarrow", index=False)
loaded = pd.read_parquet(parquet_path, engine="pyarrow")
print(loaded.to_string(index=False))
In der Umgebung, in der dieses Beispiel geprüft wurde, ist PyArrow nicht verfügbar, daher meldet der Code diese Einschränkung und zeigt das im Speicher befindliche Beispiel an, statt zu behaupten, dass eine Parquet-Datei gelesen wurde. Sobald PyArrow installiert ist, führt derselbe Code den Roundtrip aus und zeigt die geladenen Zeilen an.
PyArrow is not installed; displaying the sample DataFrame only.
student marks
Alia 20
Zoya 10
Ali 22
Ersetzen Sie für eine Datei in Ihrem Projekt parquet_path durch deren Pfad und halten Sie die Engine konsistent mit den in Ihrer Umgebung installierten Paketen. Wenn Ihre installierte Engine eine andere ist, wählen Sie diese Engine in read_parquet() und bestätigen Sie ihre unterstützten Optionen. Prüfen Sie nach dem Laden loaded.head() für eine schnelle Vorschau oder loaded.dtypes, um die abgeleiteten Spaltentypen zu prüfen, bevor Sie mit der Analyse fortfahren.