- Die
pandas- und dask-Backends werden eingestellt und sollen in Version 10.0 entfernt werden
- Es gibt keine funktionalen Unterschiede zwischen dem
pandas-Backend und dem standardmäßigen DuckDB-Backend, während DuckDB deutlich leistungsfähiger ist
pandas-DataFrames können in Ibis weiterhin als Format für den Datenaustausch verwendet werden, aber das Ausführen von Abfragen mit pandas wird nicht mehr unterstützt
- Der Großteil der Logik gilt auch für das
dask-Backend; dask ist ein großartiges Projekt und sollte außerhalb von Ibis weiterhin genutzt werden
Warum pandas? Und die Geschichte von Ibis
- In der Anfangszeit von Ibis gab es nur ein Impala-Backend
- Später kam ein Postgres-Backend hinzu, aber die Installation war kompliziert, sodass Nutzer Ibis nicht einfach ausprobieren konnten
- Es wurde ein Weg benötigt, die Ibis-API ohne zusätzliche Infrastruktur außerhalb eines Notebooks testen zu können
- Damals war die Anbindung des einzigen In-Memory-DataFrame-Engines-Backends
pandas die naheliegende Antwort
Die Schwierigkeiten des Pandas-Backends
pandas war damals die beste Wahl, passte aber nicht gut zum Datenanalysemodell von Ibis
- Das
pandas-Backend unterscheidet sich grundlegend von den anderen Backends und enthält den meisten Spezialcode
pandas ist im Kern eine Engine mit sofortiger Ausführung, während Ibis ein Modell mit verzögerter Ausführung verwendet
- Es ist schwierig, die
pandas-Schnittstelle in einem verzögerten Modell arbeiten zu lassen
- Das
pandas-Backend ist langsamer als andere Backends und erfordert dafür Tausende Zeilen Code
pandas-NaN und Ibis-NULL sind grundsätzlich unterschiedliche Konzepte, mussten aber als gleich behandelt werden
- In
pandas wurde NaN als Kennzeichnung für fehlende Werte verwendet, was jedoch Kompatibilitätsprobleme mit anderen Backends verursachte
NULL steht für fehlende Werte, NaN dafür, dass ein Wert keine Zahl ist — also grundlegend verschiedene Konzepte
- Die neuen Arrow-basierten Typen in
pandas sind eine große Verbesserung, bringen aber weiterhin Probleme mit sich
Verursacht Verwirrung bei neuen Nutzern
- Menschen bevorzugen Vertrautes
- Wer Ibis zum ersten Mal verwendet, muss sowohl Ibis als auch ein Backend auswählen
- Neue Nutzer berichten oft: „Ibis ist langsam“
- Das liegt meist daran, dass sie das
pandas-Backend verwendet haben
- Mit DuckDB oder Polars wäre der Einstieg deutlich einfacher gewesen
Funktionale Gleichwertigkeit
- Der stärkste Grund für das Entfernen des
pandas-Backends ist die Redundanz
- Das DuckDB-Backend kann
pandas-DataFrames nahtlos abfragen, unterstützt verschiedene Arten von UDFs und kann viele Formate wie parquet, CSV und JSON lesen und schreiben
- DuckDB ist leicht zu installieren, läuft lokal, ist sehr schnell und interagiert gut mit dem Python-Ökosystem
Zusammenfassung von GN⁺
- Die Entscheidung, DuckDB als Standard-Backend einzuführen, wirkt sehr klug. Es ist leicht zu installieren, läuft lokal, ist sehr schnell und interagiert gut mit dem Python-Ökosystem. Genau das war auch der Grund, warum Ibis ursprünglich
pandas als Backend hinzugefügt hat
- Dass
pandas weiterhin als Format für den Datenaustausch verwendet werden kann, ist eine gute Nachricht für bestehende pandas-Nutzer. Vorhandener Code muss also nicht vollständig aufgegeben werden
pandas nicht länger für die Ausführung von Abfragen zu verwenden, scheint jedoch der richtige Weg zu sein. Das eager execution-Modell von pandas passt nicht zum Modell der verzögerten Ausführung von Ibis. Dadurch ist das pandas-Backend oft deutlich langsamer als die direkte Nutzung von pandas
- Da Ibis immer mehr Backends unterstützt, wird die Wartung von Code, der auf bestimmte Backends zugeschnitten ist, zunehmend schwieriger. Das Entfernen des
pandas-Backends dürfte die Codebasis sauberer und wartbarer machen
- Wenn die Nutzung des DuckDB-Backends alle Funktionen von
pandas ersetzen kann, gibt es offenbar keinen Grund, das pandas-Backend beizubehalten. Im Gegenteil: Es könnte neue Nutzer eher verwirren
2 Kommentare
In der Realität wird das vertrauteste
pandasnach wie vor am häufigsten verwendet,,Hacker-News-Kommentare
NaN ist das Ergebnis von 0/0 und bedeutet, dass ein Wert existiert, aber nicht genau bekannt ist
Noneist weder NaN noch NULLEs gibt viele bessere Rechen-Engines als pandas
In den letzten Monaten wurde in neuen Projekten pandas durch ibis ersetzt
Die MultiIndex-Funktion von pandas ist am mächtigsten
Es stellt sich die Frage, ob Polars in Betracht gezogen wurde
pandas ist auf neue Arten von Spalten erweiterbar
Der Wert von Ibis liegt nicht darin, dass man DuckDB nutzen kann
Von Ibis wurde bisher nicht viel gehört
Die Bibliotheks-API von pandas ist nicht immer intuitiv
Der Grund für die Nutzung von pandas ist das integrierte Ökosystem
dicts usw. und bei der Visualisierung mit plotly ist pandas praktisch