Definition Was ist Vaex?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Vaex ist eine Python-Bibliothek, die große, in Tabellenform vorliegende Datenmengen performant verarbeitet und visualisiert. Dank des Out-of-Core-Konzepts der Library lassen sich die Daten unabhängig von der Größe des verfügbaren Arbeitsspeichers des Rechners verarbeiten. In Teilen ist Vaex mit dem Pandas API kompatibel und kann als Pandas-Ersatz genutzt werden.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Vaex ist eine in Teilbereichen mit Pandas kompatible Python Library. Sie ist für große Datenmengen von 100 Gigabyte und mehr geeignet und in der Lage, in Tabellenform vorliegende Datensätze mit hoher Geschwindigkeit zu verarbeiten und zu visualisieren. Die Library ist für Anwendungen im Big-Data- und Machine-Learning-Umfeld vorgesehen.

Vaex arbeitet mit Lazy-Evualating- und Out-of-Core-Konzepten. Die Datensätze lassen sich unabhängig von der Größe des RAMs (Arbeitsspeichers) verarbeiten. Daten auf der Festplatte werden so behandelt, als würden sie im Arbeitsspeicher vorliegen. Normale Arbeitsplatzrechner und Laptops erzielen Dank dieser Arbeitsweise eine hohe Verarbeitungsgeschwindigkeit. Es sind keine Hochleistungsrechner oder Computer-Cluster notwendig.

Im Gegensatz zu Bibliotheken wie Modin ist Vaex nicht als vollständiger Pandas-Ersatz gedacht, kann aber in einigen Bereichen dennoch als Alternative zur Pandas Library verwendet werden. Für die Visualisierung der Daten lassen sich verschiedene Arten von interaktiven Histogrammen, Plots und gerenderte 3D-Volumes erzeugen. Die Installation ist per pip oder conda aus dem Python Package Index (PyPI) oder dem Anaconda Repository möglich. Die Software steht unter Open-Source-Lizenz des Massachusetts Institutes of Technology (MIT-Lizenz).

Die Arbeitsweise von Vaex

Im Big-Data- und Machine-Learning-Umfeld ist es üblich, dass die zu verarbeitenden, zu analysierenden und zu visualisierenden Datenmengen deutlich größer sind als der in einem normalen Arbeitsplatzrechner oder Laptop verfügbare Arbeitsspeicher. Damit diese Rechner dennoch eine hohe Performance und Verarbeitungsgeschwindigkeit erzielen, nutzt Vaex das sogenannte Memory Mapping und Lazy Evaluation. Liegen die Datensätze im richtigen Format vor, kann die Vaex-Bibliothek sie unabhängig von ihrer Größe und vom vorhandenen Arbeitsspeicher öffnen und weiterverarbeiten. Lediglich der verfügbare freie Festplattenspeicherplatz limitiert die Datenverarbeitung. Die Daten werden so behandelt, als würden sie im RAM vorliegen.

Lazy Evaluation bedeutet, dass Berechnungen nur ausgeführt werden, wenn die Ergebnisse gerade notwendig sind. Ein weiteres Konzept von Vaex sind virtuelle Spalten. Sie verhalten sich wie die normalen Tabellenspalten, aus denen sie abgeleitet wurden, benötigen aber keinen zusätzlichen Speicherplatz. Der Prozess der Auswertung virtueller Spalten ist parallelisiert. Schnelle in C++ implementierte Algorithmen sorgen zusätzlich für Geschwindigkeit. Es lassen sich weit über eine Milliarde Datenreihen in unter einer Sekunde prozessieren.

Pandas und die Gründe für die Entwicklung von Vaex

Da Vaex zum Teil als Pandas-Ersatz verwendet wird, im Folgenden einige grundsätzliche Informationen zur Bibliothek Pandas und zur Motivation der Entwicklung von Vaex. Pandas ist eine Data Analysis Library für Python. Die Software ist Open Source und lässt sich verwenden, um strukturierte, multidimensionale Daten zu managen, zu modellieren und auszuwerten. Die große Stärke von Pandas ist das Analysieren von Daten in tabellarischer Form und von Zeitreihendaten. Mit der Pandas-Bibliothek lassen sich Daten oder Zeitreihen einlesen, filtern, umwandeln, aggregieren, bereinigen und verändern. Zahlreiche unterschiedliche Datenformate wie Excel-Tabellen, JSON-Dateien oder CSV-Dateien werden unterstützt. Zur Visualisierung der Analysen nutzt Pandas beispielsweise Matplotlib.

Häufigste Anwendungsgebiete von Pandas sind die verschiedenen Bereiche der Datenwissenschaft und Datenanalyse. Besondere Vorzüge der Library sind ihre Flexibilität und ihre Einfachheit, weshalb sie große Beliebtheit genießt. Sollen große Datenmengen, wie sie im Big-Data-Umfeld anfallen, mit Pandas verarbeitet werden, stößt die Library schnell an ihre Grenzen. Prozesse sind kaum parallelisiert und werden nur auf einem CPU-Kern ausgeführt. Um Pandas-Workflows zu beschleunigen oder große Datenmengen unabhängig vom vorhandenen Arbeitsspeicher zu analysieren, wurden Bibliotheken wie Modin oder Vaex entwickelt.

Kurze Abgrenzung zur Python-Bibliothek Modin

Das Ziel von Modin ist die Beschleunigung von Pandas-Workflows, ohne große Veränderung des vorliegenden Pandas-Codes. Die Bibliothek ist fast vollständig mit dem Pandas API kompatibel. Das Pandas API verteilt die zu verarbeitenden Datensätze parallel auf mehrere der zur Verfügung stehenden CPUs und erzielt gegenüber Pandas einen immensen Geschwindigkeitsgewinn. Modin lässt sich mit nur einer einzigen Zeile Programmcode-Anpassung einsetzen und arbeitet zur Parallelisierung mit Ray oder Dask zusammen. Der bereits vorhandene Pandas-Code ist weiter verwendbar und wird durch Modin effizienter in Mehrprozessorumgebungen ausgeführt.

Die Bibliothek Vaex hingegen ist nicht als vollständiger Pandas-Ersatz gedacht. Sie ist nur in Teilen mit dem Pandas-API kompatibel. Im Gegensatz zu Modin hat Vaex das Ziel, große Datenmengen auf einem einzigen Rechner, unabhängig von der Größe des vorhandenen Arbeitsspeichers, performant zu analysieren und zu visualisieren.

Vorteile der Python Library Vaex

Im Folgenden einige der Vorteile der Bibliothek Vaex:

  • geeignet für große in Tabellenform vorliegende Datenmengen, unabhängig von der Größe des verfügbaren RAMs
  • hohe Verarbeitungsgeschwindigkeit der Daten
  • direkte Unterstützung der Datenvisualisierung
  • in Teilen mit dem Pandas-API kompatibel
  • normale Arbeitsplatzrechner und Laptops für die Datenanalysen einsetzbar (keine Hochleistungsrechner oder Computer-Cluster notwendig)
  • voll in die Python-Welt integriert, arbeitet mit vielen weiteren Data Science Libraries zusammen
  • geeignet für Jupyter Notebooks
  • als Open-Source-Software frei verfügbar
  • plattformunabhängig einsetzbar

(ID:47034051)

Über den Autor