Vektorisierte Operationen mit Pandas

Aktuell beschäftige ich mich intensiv mit Python im Kontext von Data Science.
Hierbei kommt man natürlich nicht an Pandas vorbei. Und natürlich gibt es, wie so gut bei jedem Problem, welches man durch Programmcode lösen möchte, mehrere Wege zum Ziel.

Bei der Verwendung von Pandas Dataframes könnte man auf die Idee kommen, folgenden Code zu schreiben, um alle Werte einer Spalte zu verarbeiten und das Ergebnis in eine neue Spalte zu schreiben:

df['wert_quadrat'] = df.apply(lambda row: row['wert'] ** 2, axis=1)

Der Code quadriert den Wert in der Spalte “wert” und erzeugt dann eine neue Spalte “wert_quadrat” mit dem Ergebnis.
Dies funktioniert, doch es gibt eine elegantere und vor allem performantere Lösung: vektorisierte Operationen!

Hier die gleiche Operation als vektorisierte Operation:

df['wert_quadrat'] = row['wert'] ** 2

Je nach Größe des Datensatzes kann man hierdurch erhebliche Performancegewinne erzielen, da bei vektorisierten Operationen kein Python-Loop durchgeführt wird, bei dem für jede Zeile die entsprechende Python-Funktion ausgeführt wird, sondern die Operation wird an die zugrundeliegende numpy arrays deligiert, welche die Operation in Maschinencode ausführt.