Pandas 1.0 setzt auf Semantic Versioning

Pandas, die beliebte Python-Bibliothek zur Datenanalyse, hat ein Update auf Version 1.0 erhalten. Im Zuge dessen entfernen die Entwickler veralteten Kram, bringen aber auch Verbesserungen ein.

Laut einer Warnmeldung gleich zu Beginn der Release Notes wirft die Version 1.0 eine Menge Features über Bord, die in den vorherigen Versionen als veraltet markiert wurden. Entwickler, die Pandas bereits länger einsetzen, sollten daher zunächst auf die letzte Version 0.25 erhöhen, ihre Programme testen und dann weiter auf Pandas 1.0 aktualisieren. Der Sprung von der 0.25 auf die 1.0 hat auch Versionierungsgründe: Das Projekt adoptiert Semantic Versioning. Minor-Versionen (1.1.0, 1.2.0…) sollen künftig veraltete Features ankündigen, in Major-Versionen (1.0.0, 2.0.0…) fliegen diese Features dann aus der Codebasis.

Ein experimentelles neues Features ist der Umgang mit fehlenden Werten. Vermisste ein Pandas-Nutzer bestimmte Werte, setzte er bislang “np.nan” (für Fließkomma- und Objekt-Datentyp-Daten), “None” (für Objekt-Datentyp-Daten) und “pd.NaT” (für “datetime”-artige Daten) ein. Alle drei kann nun “pd.NA” ersetzen, das über mehrere Datentypen hinweg funktioniert. Aktuell kommt es für Integer-Objekt-Datentypen inklusive Null, für Boolsche und den neuen String-Objekt-Datentyp zum Einsatz, wobei es abhängig von der arithmetischen Operation unterschiedliche Werte zurück liefert.

Neue Datentypen

Mit fehlenden Werten kommt auch ein neu eingeführter Boolscher Datentyp (“BooleanDtype” oder “BooleanArray”) zurecht. Anders als der Boolsche Standardtyp, der auf einem Numpy-Array vom Typ Bool-Objekt-Datentyp basiert, kommt der neue erweiterte Typ auch mit fehlenden Werten zurecht. Ebenfalls neu und experimentell ist “StringDtype”, der eben erwähnte String-Objekt-Datentyp, ein erweiterter Type für String-Daten. Diese wurden bislang typischerweise in NumPy-Arrays als Objekt-Datentypen gespeichert. Die Kennzeichnung als experimentell bedeutet für die neuen String- und Bool-Typen sowie “pd.NA”, dass sich die Implementierung und das API dafür noch ändern können. Entwickler sollten beim frühen Einsatz also Vorsicht walten lassen.

Verbesserungen

Auch einige Verbesserungen heben die Entwickler hervor. So lassen sich “rolling.apply()” und “expanding.apply()” nun über ein Engine-Schlagwort mit der Numba-Engine verwenden anstelle von Cython. Das soll für Performance-Gewinne sorgen, wenn die “apply()”-Funktion auf Numpy-Arrays operiert und das Datenset mehr als eine Million Zeilen umfasst. Über die Klasse “pandas.api.indexers.BaseIndexer()” legen Entwickler die Window-Grenzen bei “rolling”-Operationen fest. Nicht zuletzt erzeugt “.to_markdown()” aus bestimmten Daten eine Markdown-Tabelle, wie es das Beispiel aus der Ankündigung zeigt:

In [1]: df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b'])

In [2]: print(df.to_markdown())
| | A | B |
|:---|----:|----:|
| a | 1 | 1 |
| a | 2 | 2 |
| b | 3 | 3 |

Neben den hier genannten Highlights gibt es noch eine ganze Reihe weiterer Änderungen, welche die Ankündigung aufzählt. Wer Pandas 1.0 ausprobieren möchte, findet hier eine Installationsanleitung.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben