Im ersten Teil dieser Serie haben wir uns bereits grundlegenden Pandas Objekten und deren Abfrage gewidmet. In diesem Kapitel beschäftigen wir uns darüber hinaus mit dem Umgang mit Pandas DataFrames. Als Ausgangsbeispiel nutzen wir den folgenden DataFrame.

Wie löscht man leere Felder aus einem Pandas DataFrame?
Wenn wir einem DataFrame oder anderem Pandas Objekte leere Werte übergeben, werden diese automatisch durch Numpy NaNs (Not a Number) ersetzt. Für Kalkulationen, wie beispielsweise Mittelwertberechnungen, werden diese Felder nicht mit einbezogen und ignoriert. Den bestehenden DataFrame können wir einfach durch eine leere, dritte Spalte erweitern, die nur für den Index 01.01.2022 einen Wert enthält. Die restlichen Werte werden dann automatisch als NaN gesetzt.

Wenn wir alle Zeilen löschen wollen, die mindestens in einer der Spalten einen leeren Wert haben, können wir das mit dem folgenden Befehl tun.

Wenn wir stattdessen Spalten mit Missing Values löschen wollen, nutzen wir dasselbe Kommando und setzen zusätzlich ‚axis = 1‘. Ansonsten können wir auch die leeren Felder mit vorgegebenen Werten füllen, beispielsweise mit dem Wert 0.

In manchen Fällen kann es auch sinnvoll sein, sich in den booleschen Werte (True/False) ausgeben zu lassen, an welcher Stelle Werte fehlen. In den meisten Fällen sind die DataFrame Objekte jedoch zu groß und dies ist keine übersichtliche Darstellung.

Wie kann ich bestimmte Zeilen aus einem DataFrame löschen?
Wenn wir nicht nur leere Werte aus unserem DataFrame löschen wollen, gibt es zwei Möglichkeiten, wie wir das tun können. Zum einen können wir die Zeilen aus dem DataFrame löschen, indem wir den Index der Zeile nutzen, die gelöscht werden soll. In unserem Fall ist das ein konkretes Datum, wie beispielsweise der 01.01.2022:

Dadurch haben wir die erste Zeile in diesem Objekt gelöscht. In den meisten Fällen werden wir jedoch die konkrete Zeile noch nicht kennen, die wir löschen wollen. Dann können wir auch den DataFrame auf die Zeilen filtern, die wir löschen wollen und uns dann die Indexe der entsprechenden Rows ausgeben lassen.

In diesem Fall löschen wir alle Zeilen für die gilt, dass in „column 1“ ein Wert größer als 0.1 erkannt wird. Dadurch bleiben insgesamt vier Zeilen im Objekt „df“ übrig.
Wie fügt man eine Spalte hinzu?
Auch hier gibt es mehrere Möglichkeiten den bestehenden DataFrame um neue Spalten zu erweitern. Indem wir die neue Spalte einfach mit eckigen Klammern definieren wird sie als neue Spalte an den DataFrame von rechts hinzugefügt.

Wenn wir stattdessen die neue Spalte an einem bestimmten Index einfügen wollen, können wir dafür „df.insert()“ nutzen:

Dieser Funktion übergibt man als ersten Wert den Index der neu einzufügenden Spalte, dann den Namen der Spalte und als drittes das Objekt, das als Spalte eingefügt werden soll. Der letzte Parameter gibt an, ob Duplikate dieser Spalte zugelassen werden. Wenn also die Spalte mit dem Namen und denselben Werten bereits existiert und „allow_duplicates“ auf „False“ gestellt wurde, dann erhält man eine Fehlernachricht.
Wie löscht man eine Spalte?
Wie bei jedem gutem Pandas Befehl, gibt es auch für das Löschen der Spalten verschiedene Möglichkeiten. Die beiden einfachsten sind entweder mithilfe der Funktion „df.drop()“ und dem Namen der Spalte, sowie „axis=1“ für eine Spaltenauswahl. Oder man nutzt die Python Standardfunktion „del“ und definiert die entsprechende Spalte:

Wie führt man Pandas Objekte zusammen?
Pandas bietet verschiedene Möglichkeiten, um Series oder DataFrame Objekte zusammenzuführen. Der concat-Befehl erweitert das erstgenannte Objekt um das zweitgenannte Objekt, wenn sie vom selben Typ sind. Der Befehl kann natürlich auch mit mehr als zwei Datenstrukturen ausgeführt werden.

Mit DataFrames sieht die Codezeile genauso aus. Über den Zusatz ‚ignore_index‘ wird ein neuer durchgängiger Index vergeben und nicht der Index aus dem ursprünglichen Objekt übernommen.

Pandas ermöglicht mit ‚Merge‘ zusätzlich auch Join-Möglichkeiten, wie sie den meisten wahrscheinlich aus SQL geläufig sind.

Wenn wir statt Left- bzw. Right Joins einen Inner Join durchführen wollen, nutzen wir wieder den Concat Befehl mit dem Zusatz ‚join = „inner“‚.

Das solltest Du mitnehmen
- Pandas bietet viele Möglichkeiten mit Missing Values umzugehen. Man kann die betreffenden Spalten/Zeilen entweder streichen oder die Felder mit einem Wert ersetzen.
- Mit Pandas haben wir dieselben Join Möglichkeiten wie mit SQL.
Vielen Dank an Deepnote für das Sponsoring dieses Artikels! Deepnote bietet mir die Möglichkeit, Python-Code einfach und schnell auf dieser Website einzubetten und auch die zugehörigen Notebooks in der Cloud zu hosten.