Zum Inhalt springen

Pandas Series – einfach erklärt!

  • Python

Eine Pandas Series ist ein eindimensionales Array, welches einen textuellen, also keinen numerischen, Index haben kann. Man kann sich eine Series auch als Spalte einer Tabelle vorstellen, die Daten mit den verschiedensten Datentypen abspeichern kann.

Wofür benötigt man Pandas?

Die Grundinstallation von Python bringt bereits vier verschiedene Datenstrukturen mit, in denen jegliche Datentypen abgespeichert werden können:

  • Die Liste ist eine geordnete Sammlung von Elementen, die änderbar ist und auch doppelte Elemente enthalten kann.
  • Das Tuple ist im Endeffekt eine Liste, mit dem Unterschied, dass es nicht mehr änderbar ist. Es können also keine Elemente mehr nachträglich hinzugefügt oder entfernt werden.
  • Das Set lässt keine doppelten Einträge zu. Gleichzeitig ist die Anordnung der Elemente innerhalb des Sets variabel. Das Set an sich kann verändert werden, aber die einzelnen Elemente können nicht nachträglich geändert werden.
  • Ein Dictionary ist seit der Python Version 3.7 eine geordnete Sammlung von Elementen, die änderbar ist. In den früheren Versionen ist das Dictionary ungeordnet.

Obwohl man mit diesen Datenstrukturen schon viele Anwendungsfälle bearbeiten kann, gibt es Situationen in denen sie nicht ausreichen. Beispielsweise lassen sich mit diesen nativen Strukturen keine Tabellen darstellen. Deshalb gibt es sogenannte Module, wie beispielsweise Pandas oder Numpy, die es ermöglichen, weitere Funktionalitäten zu nutzen, die in der Basisinstallation sonst nicht verfügbar wären. Gleichzeitig ist es auch häufig so, dass Datenstrukturen aus Modulen deutlich performanter sind als die standardmäßigen Datenobjekte von Python. Numpy Arrays beispielsweise wurden optimiert für Vektor- und Matrizenberechnungen.

Genauso gibt es für viele andere Anwendungen Module, die die Programmiersprachen Python und deren Funktionalität ergänzen. Die Module TensorFlow oder Scikit-Learn beispielsweise werden für die Erstellung von Machine Learning Modellen genutzt.

Welche Bestandteile hat eine Pandas Series?

Die Pandas Series ist eine der grundlegendsten Datenstrukturen, die in Pandas verwendet werden. Es handelt sich um eine eindimensionale, geordnete Datenstruktur, die beispielsweise genutzt werden kann, um die Informationen in einer Tabellenspalte oder die Zahlen in einem Vektor abzuspeichern.

Sie bietet die Möglichkeit einen textuellen Index zu nutzen. Wenn dieser jedoch nicht explizit angegeben ist, wird automatisch ein numerischer Index beginnend mit Null gesetzt. Somit wird auch deutlich, dass die Reihenfolge der Elemente in der Pandas Series eine wichtige Rolle spielt. Man spricht davon, dass die Series eine geordnete Datenstruktur ist. Das bedeutet, dass zwei Pandas Series mit denselben Elementen in einer unterschiedlichen Reihenfolge nicht dasselbe Objekt sind.

Die einfachste Pandas Series überhaupt, ist die leere Series, die man wie folgt definieren kann:

import pandas as pd

series_1 = pd.Series()
print(series_1)

Out:
Series([], dtype: float64)

Es gibt einige Parameter, die man innerhalb der Pandas Series Funktion angeben kann, und die Eigenschaften des Objekts verändern. Wenn diese nicht explizit angegeben sind, werden sie entweder automatisch gesetzt oder der Default-Wert wird übernommen. Folgende Parameter können, müssen aber nicht, gesetzt werden:

  • data: In diesem Parameter werden die Daten definiert, die in der Series gespeichert werden sollen. Es können verschiedene Datenstrukturen, wie eine Liste, ein Dictionary oder sogar ein einzelner Wert genutzt werden.
  • index: Mithilfe von Index kann ein textueller Index für die Elemente in der Series definiert werden. Wenn der Parameter nicht gesetzt ist, werden die Elemente automatisch durchnummeriert, beginnend bei Null.
  • dtype: Der optionale Parameter dtype setzt die Datentypen der Series. Das bietet sich vor allem dann an, wenn alle Daten in der Series vom selben Datentypen sind. Man kann dann beispielsweise definieren, ob Zahlen als Ganzzahl oder Dezimalzahl gespeichert werden sollen.
  • name: Mit diesem Parameter kann die Series benannt werden. Das bietet sich vor allem dann an, wenn die Series Bestandteil eines DataFrames werden soll. Dann ist der Name der entsprechende Spaltenname im DataFrame.
  • copy: Dieser Parameter kann nur die Werte True oder False annehmen und ist somit ein boolescher Wert. Er gibt an, ob die übergebenen Daten als Kopie gespeichert werden sollen oder nicht. In den meisten Anwendungsfällen ist er aber nicht von großer Bedeutung.

Wenn all diese Parameter genutzt werden, sieht eine komplett definierte Series so aus:

series_1 = pd.Series([1, 2, 3], index = ["A", "B", "C"], dtype = "int64", name = "Series of Integers", copy = False)
print(series_1)

Out:
A    1
B    2
C    3
Name: Series of Integers, dtype: int64

Wie können Daten aus einer Series abgefragt werden?

Bei der Abfrage von Daten aus einer Pandas Series nutzen wir den Index in eckigen Klammern, wie wir es bereits von der Python Liste kennen. Falls ein textueller Index vorhanden ist nutzen wir diesen, ansonsten kann der numerische Index genutzt werden:

series_1 = pd.Series(["first element", 2, "third element"])
print(series_1[0])

series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
print(series_1["A"])

Out:
first element
first element

Es kann vorkommen, dass wir lediglich das Element kennen, welches wir aus der Series abfragen wollen, aber nicht den dazugehörigen Index. Jedoch ist es in der Pandas Series nicht so einfach, den dazugehörigen Index herauszufinden, wie beispielsweise bei der Liste. Eine Möglichkeit um dies zu tun ist die Series in eine Liste umzuwandeln und dann mit der Funktion „.index“ den entsprechenden Index herauszufinden:

series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
list(series_1).index(2)

Out:
1

Wie können Werte in einer Series überschrieben oder hinzugefügt werden?

Bestehende Werte in einer Series können durch Aufruf des entsprechenden Index überschrieben werden:

series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
series_1["A"] = 1
series_1

Out:
A                1
B                2
C    third element
dtype: object

Dieser Aufruf kann auch genutzt werden, wenn neue Werte in eine bestehende Series mit aufgenommen werden sollen. Dazu muss einfach ein Index verwendet werden, der bisher noch nicht vorgekommen ist:

series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
series_1["D"] = "fourth_element"
series_1

Out:
A     first element
B                 2
C     third element
D    fourth_element
dtype: object

Wie können Daten mit einer Bedingung abgefragt werden?

Vor allem bei numerischen Daten kann es sinnvoll sein, Daten aus einer Series abzufragen, die eine gewisse Bedingung erfüllen. Dazu wird statt dem Index, der entsprechende Filter in eckigen Klammern definiert. Damit kann man sich beispielsweise alle Elemente der Series ausgeben lassen, die größer als vier sind:

series_1 = pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index = ["A", "B", "C", "D", "E", "F", "G", "H"])
series_1[series_1 > 4]

Out:
E    5
F    6
G    7
H    8
dtype: int64

Wenn man mehrere Bedingungen gleichzeitig nutzen will, so kann man diese in nacheinander folgenden eckigen Klammern definieren. Dabei ist zu beachten, dass die Bedingungen mit einem logischen „Und“ verbunden werden, das heißt es werden nur Werte ausgegeben, die alle Bedingungen erfüllen. Dadurch können wir unsere Series beispielsweise für alle Werte filtern, die größer vier aber ungleich acht sind:

series_1 = pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index = ["A", "B", "C", "D", "E", "F", "G", "H"])
series_1[series_1 > 4][series_1 != 8]

Out:
E    5
F    6
G    7
dtype: int64

Wie erstellt man eine Series aus einem Dictionary?

Neben einer Liste kann man auch ein Python Dictionary als Daten für eine Pandas Series nutzen. Dies hat den Vorteil, dass der Index nicht mehr explizit angegeben werden muss. Es werden nämlich die Schlüssel des Dictionaries als Index für die Series genutzt und die Werte des Dictionaries als Daten:

dict_1 = {"A": 1, "B": 2, "C": 3}
print(pd.Series(dict_1))

Out:
A    1
B    2
C    3
dtype: int64

Wofür wird die Pandas Series verwendet?

Die Pandas Series wird vor allem im Zusammenhang mit den Pandas DataFrames verwendet. Sie werden genutzt um diese tabellenähnlichen Datenstrukturen aufzubauen, da jede Spalte des DataFrames aus einer separaten Series besteht.

Außerdem kann es genutzt werden, um eindimensionale Daten mit verschiedenen Datentypen abzuspeichern und mit diesen Berechnungen durchzuführen. Im Bereich des Machine Learnings können sie auch genutzt werden, um eindimensionale Vektoren zu hinterlegen und aufwändige Berechnungen, wie beispielsweise Vektormultiplikationen durchzuführen.

Wie erstellt man einen DataFrame aus einer Pandas Series?

Ein DataFrame ist im Grunde genommen eine Sammlung von mehreren Pandas Series. Somit kann man ihn durch Nennung der genutzten Series relativ einfach erstellen.

series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
series_2 = pd.Series([4, 5, 6], index = ["A", "B", "C"])
series_3 = pd.Series(["i", "don't", "know"], index = ["A", "B", "C"])

pd.DataFrame([series_1, series_2, series_3])

Out:

Wichtig ist dabei, dass die Series Objekte entweder alle denselben oder keinen Index haben. Ansonsten wird nämlich für jeden unterschiedlichen Index eine eigene Spalte erstellt, für den die anderen Zeilen keinen Wert haben:

series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
series_2 = pd.Series([4, 5, 6], index = ["A", "B", "C"])
series_3 = pd.Series(["i", "don't", "know"], index = ["A", "B", "D"])

pd.DataFrame([series_1, series_2, series_3])

Out:

Was unterscheidet eine Pandas Series von einer Python List?

An diesem Punkt des Beitrags könnte man den Eindruck gewonnen haben, dass die Pandas Series und die Python List zwei sehr ähnliche Datenstrukturen sind, deren Hauptunterschied ist, dass die Liste lediglich numerische Indizes verwenden kann, während die Pandas Series auch textuelle Indizes zulässt.

Die Hauptunterscheidung zwischen der Series under Liste besteht nicht in dessen Funktionalitäten oder Aufbau, sondern in den Anwendungsmöglichkeiten. Die Series wird im Bereich der Data Science vor allem als Vorstufe für tabellarische Daten genutzt, die wiederum in Diagrammen veranschaulicht werden sollen. Das heißt die Series ist konkret einsehbar.

Die Liste hingegen wird zur Zwischenspeicherung von komplexen Datenstrukturen genutzt, hält sich also eher im Hintergrund und dient als Hilfsmittel für komplexe Berechnungen.

Das solltest Du mitnehmen

  • Die Pandas Series ist ein eindimensionales Array, welches einen textuellen, also keinen numerischen, Index haben kann.
  • Es wird vor allem zusammen mit Pandas DataFrames verwendet. Hierbei kann man sich eine Series, wie eine einzelne Tabellenspalte vorstellen.
  • Die Series ähnelt in vielen Funktionalitäten der Python Liste mit dem Unterschied, dass die Liste keine textuellen Indizes zulässt, die Series hingegen schon.

Andere Beiträge zum Thema Pandas Series

  • Weitere nützliche Informationen zur Pandas Series findest Du in der ausführlichen Anleitung von w3schools.
close
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner