Skip to content

Polars gegen Pandas: Wählen Sie Ihren Datenanalyse-Champion in 2023

Updated on

Der Kampf der Datenverarbeitungsgiganten, Polars gegen Pandas, ist zum Gesprächsthema in der Welt der Datenanalyse geworden. Mit der Veröffentlichung von Polars 0.17.0 und Pandas 2.0 liefern sich beide Bibliotheken nun einen Showdown um die Vorherrschaft. Aber welches verdient Ihren Titel als Favorit für die Datenverarbeitungsbibliothek? Dieser Artikel präsentiert einen erschöpfenden Vergleich dieser leistungsstarken Tools und untersucht ihre Syntax, Geschwindigkeit und Benutzerfreundlichkeit, um den Sieger zu ermitteln.

Polars und Pandas: Eine Einführung

Haben Sie schon einmal unzählige Stunden gewartet, bis Ihr Pandas-Code auf großen Datensätzen ausgeführt wird? Hier kommt Polars ins Spiel, eine leistungsstarke Bibliothek, die gegenüber ihrem Konkurrenten Pandas signifikante Geschwindigkeitsvorteile bietet. Polars glänzt in der Handhabung von Datenrahmen und übertrifft Pandas in Effizienz und Geschwindigkeit.

Die kürzlich veröffentlichten Versionen Polars 0.17.0 und Pandas 2.0 bieten beide erhebliche Geschwindigkeitsverbesserungen. Pandas 2.0 unterstützt Apache Arrow, was die Leistung tatsächlich verbessert hat, aber grundlegende Operationen sind immer noch schneller auf NumPy-Arrays. Polars 0.17.0, vor nur einer Woche veröffentlicht, hat ebenfalls begeisterte Kritiken für seine Geschwindigkeitsverbesserungen erhalten[^1^].

Lassen Sie uns tiefer eintauchen und die Funktionen analysieren, die Polars zu seinen Vorteilen verhelfen:

  • Unterstützung für Rust: Polars ist in Rust entwickelt. Dank der Möglichkeit von Rust, direkt in Maschinencode zu kompilieren, umgeht es die Notwendigkeit eines Interpreters und ist damit schneller als Python.

  • Parallelisierung: Polars nutzt Multithreading, um parallele Ausführung von vektorisierten Operationen auf mehreren CPU-Kernen zu ermöglichen.

  • Python-Schnittstelle: Trotz seiner Rust-Grundlagen funktioniert Polars als Python-Bibliothek und bietet eine zugängliche Datenverarbeitungsschnittstelle und profitiert gleichzeitig von den Leistungsvorteilen von Rust.

  • Träge Auswertung: Polars unterstützt sowohl eine eifrige (von Pandas verwendete) als auch eine träge Auswertungsschnittstelle. Bei träge Auswertung wird eine Abfrage erst dann ausgeführt, wenn sie benötigt wird, während eine eifrige Auswertung eine sofortige Ausführung auslöst.

In diesem detaillierten Leitfaden werden wir:

  1. Die Geschwindigkeit von Pandas 2.0 (mit Numpy und PyArrow als Backend) und Polars 0.17.0 vergleichen.
  2. Zeigen, wie man vom einfachen zum komplexen Pandas-Code in Polars wechselt.
  3. Eine Leistungsshowdown zwischen den beiden Bibliotheken auf einer Maschine mit 4-CPU-Kern-Prozessoren und 32 GB RAM durchführen.

Setup & Datensatz

Bevor wir mit den Vergleichen beginnen, stellen Sie sicher, dass die neuesten Versionen von Polars und Pandas auf Ihrem lokalen Computer installiert sind. Falls nicht, verwenden Sie den Befehl pip zur Installation:

pip install polars==0.17.0 # Neueste Version von Polars
pip install pandas==2.0.0  # Neueste Version von Pandas

Unser Vergleich basiert auf einem synthetischen Datensatz mit 30 Millionen Zeilen und 15 Spalten, bestehend aus 8 kategorischen und 7 numerischen Merkmalen. Dieser künstliche Datensatz kann hier (opens in a new tab) abgerufen werden.

Hier ist ein Ausblick auf unseren Datensatz:

# Pandas
train_pd.head()
 
# Polars
train_pl.head()

Bibliotheken laden

Zuerst müssen wir die erforderlichen Bibliotheken importieren, um unsere Daten zu laden:

import pandas as pd
import polars as pl
import numpy as np
import time

Einlesen des Datensatzes

Einlesen des Datensatzes: Ein vergleichende Analyse von Pandas 2.0 gegen Polars 0.17

Wenn es um den Umgang mit riesigen Datensätzen geht, kann die Wahl der Datenverarbeitungsbibliothek einen großen Unterschied machen. Deshalb tauchen wir tief in Pandas 2.0 und Polars 0.17 ein und konzentrieren uns auf deren Fähigkeiten zum Einlesen von Daten.

Wir beginnen mit einem Vergleich der Lesezeiten für Parquet-Dateien beider Bibliotheken. Parquet ist ein spaltenorientiertes Dateiformat, das für die Verwendung mit Big-Data-Verarbeitungsframeworks optimiert ist. Die Fähigkeit, diese Dateien schnell und effizient zu lesen, ist entscheidend beim Umgang mit umfangreichen Datensätzen.

Unsere Untersuchung ergab eine vergleichbare Leistung zwischen Polars und Pandas 2.0 beim Lesen von Parquet-Dateien. Es ist jedoch wichtig zu beachten, dass Pandas mit dem Numpy-Backend doppelt so lange für diese Aufgabe benötigte wie Polars.

Aggregationsoperationen: Polars vs. Pandas

Nun gehen wir zur Auswertung von Aggregationsfunktionen über. Diese Operationen sind in der Datenanalyse entscheidend und liefern wichtige Zusammenfassungsstatistiken für die Datenüberprüfung.

In Bezug auf Syntax und Leistung für einfache Abfragen erwies sich Pandas als die bessere Option. Der Leistungsunterschied zwischen den beiden Bibliotheken war jedoch minimal. Polars bietet jedoch einen einzigartigen Vorteil, da es mit einer Liste von Merkmalen arbeiten kann, die alle mit derselben Aggregationsfunktion aggregiert werden sollen, eine Fähigkeit, die Pandas für das von uns bewertete Szenario nicht bietet.

Filter- und Auswahloperationen: Pandas und Polars treten gegeneinander an

Filter- und Auswahloperationen umfassen das Festlegen einer Bedingung für die Extraktion von Daten aus der Datenbank. Unsere Tests umfassten das Zählen eindeutiger Werte für kategoriale Spalten, wenn eine numerische Spalte eine bestimmte Bedingung erfüllte, und das Berechnen des Durchschnitts aller numerischen Spalten, wenn eine kategoriale Spalte einen bestimmten Wert hatte.

In diesem direkten Vergleich übertraf Polars Pandas in Bezug auf die Ausführungsgeschwindigkeit von numerischen Filteroperationen um den Faktor zwei bis fünf. Es ist jedoch erwähnenswert, dass Pandas weniger Code erfordert und die Bibliothek etwas langsamer ist, wenn es um Zeichenketten (kategoriale Merkmale) geht.

Visualisieren Sie Ihr Pandas und Polars Dataframe mit PyGWalker

PyGWalker (opens in a new tab) ist eine Open Source Python-Bibliothek, mit der Sie einfach Datenvisualisierungen aus Ihrem Pandas- und Polars-Dataframe erstellen können. Bitte geben Sie die deutsche Übersetzung für diese Markdown-Datei an, ohne den eingebetteten Code zu übersetzen: PyGWalker for Data-Visualisierung (opens in a new tab)

Es ist nicht mehr erforderlich, komplizierte Verarbeitungen mit Python-Code durchzuführen. Importieren Sie einfach Ihre Daten und ziehen Sie Variablen per Drag & Drop, um jegliche Art von Datenvisualisierungen zu erstellen! Hier ist ein kurzes Demo-Video zur Bedienung:


So verwenden Sie PyGWalker in Ihrem Jupyter-Notebook:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

Alternativ können Sie es in Kaggle-Notebook/Google Colab ausprobieren:

PyGWalker in Kaggle-Notebook ausführen (opens in a new tab)PyGWalker in Google Colab ausführen (opens in a new tab)PyGWalker auf GitHub mit ⭐️ bewerten (opens in a new tab)
PyGWalker in Kaggle-Notebook ausführen (opens in a new tab)PyGWalker in Google Colab ausführen (opens in a new tab)PyGWalker in Google Colab ausführen (opens in a new tab)

PyGWalker basiert auf der Unterstützung unserer Open-Source-Community. Vergessen Sie nicht, PyGWalker auf GitHub (opens in a new tab) zu überprüfen und uns einen Stern zu geben!

FAQs zu Pandas und Polars

Im Laufe dieser Analyse haben wir sowohl Pandas als auch Polars ihre Stärken und Schwächen gezeigt. Um Ihnen diese beiden Bibliotheken besser verständlich zu machen, haben wir hier ein paar häufig gestellte Fragen zusammengestellt:

  1. Frage: Warum sollte man sich für Polars statt Pandas entscheiden? Antwort: Man könnte sich für Polars entscheiden, wenn man es mit großen Datenmengen zu tun hat, da es eine schnellere Ausführungsgeschwindigkeit für viele Operationen bietet, insbesondere solche, die numerische Daten verwenden. Allerdings erfordert Polars als neuere Bibliothek möglicherweise eine Einarbeitung für diejenigen, die mit Pandas vertraut sind.

  2. Frage: Gibt es Szenarien, in denen Pandas die bessere Wahl gegenüber Polars ist? Antwort: Ja, für einfache Abfragen und wenn die Code-Breite von Bedeutung ist, könnte Pandas die bessere Wahl sein. Darüber hinaus ist Pandas eine reife Bibliothek mit robustem Community-Support, was bei der Fehlersuche oder der Suche nach Ratschlägen für komplexe Datenaufbereitungsaufgaben von Vorteil sein kann.

  3. Frage: Wie behandeln Pandas und Polars Nullwerte in Gruppierungsoperationen unterschiedlich? Antwort: Während Gruppierungsoperationen entfernt Pandas automatisch Nullwerte, Polars tut dies jedoch nicht. Dies könnte möglicherweise Auswirkungen auf die Ergebnisse Ihrer Analyse haben, daher ist es wichtig, diesen Unterschied bei der Auswahl einer Bibliothek zu beachten.