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. Die Hauptunterschiede bestehen vor allem darin:
- Homogenität: Eine Pandas-Reihe erfordert, dass alle Datenelemente vom gleichen Datentyp sind, während eine Python-Liste Elemente unterschiedlicher Datentypen enthalten kann.
- Speichereffizienz: Pandas-Serien sind speichereffizienter als Python-Listen, da sie intern NumPy-Arrays verwenden, die kompakter und schneller für numerische Berechnungen sind.
- Vektorisierung: Die Pandas-Reihe unterstützt vektorisierte Operationen, die es uns ermöglichen, Berechnungen auf ganzen Sequenzen von Daten auf einmal durchzuführen, wodurch die Datenverarbeitung schneller und effizienter wird. Python-Listen hingegen unterstützen keine vektorisierten Operationen.
Was ist der Unterschied zwischen einer Pandas Series und einem Python Dictionary?
ichtige Unterschiede zwischen ihnen:
- Indizierung: In einer Pandas Series kann ein benutzerdefinierter Index verwendet werden, der nicht unbedingt numerisch oder sequenziell sein muss. Das Python Dictionary hingegen kann nur hashbare Objekte als Schlüssel verwenden, sodass meistens entweder Strings, Zahlen oder Tuple genutzt werden.
- Ordnung: Die Elemente in einer Pandas Series sind geordnet. Das Python Dictionary war ursprüngliche eine ungeordnete Datenstruktur, dies hat sich jedoch ab der Python Version 3.7 geändert.
- Datentyp: Eine Pandas Reihe kann für alle Elemente lediglich einen einzigen Datentyp genutzt werden. Dies bedeutet nicht, dass nicht mehr Datentypen gespeichert werden können, diese werden jedoch alle zu einem “Object” umgewandelt. Das Python Dictionary hingegen lässt nativ verschiedene Datentypen als Werte zu.
- Funktionen: Eine Pandas Series kann für die Datenmanipulation und -analyse verwendet werden, indem die eingebauten Funktionen, beispielsweise für die Anzahl oder den Durchschnitt, genutzt werden. Das Python Dictionary hat diese Funktionen zur Datenmanipulation nicht.
- Speicherverbrauch: Der Speicherverbrauch für eine Pandas Series ist deutlich höher als bei einem vergleichbaren Python Dictionary, da die Daten in einem Tabellenformat mit Index und Spaltenbeschriftungen gespeichert wird. Die Struktur in Dictionaries ist dagegen deutlich speicheroptimaler.
Die Pandas Series ist eine spezialisierte Datenstruktur für die Datenanalyse und ist dafür auch optimiert. Das Python Dictionary hingegen ist eine allgemeinere Datenstruktur, die für unterschiedlichste Anwendungen in Frage kommen kann.
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.
Was sind Python Inputs und Outputs?
Python Inputs und Outputs beherrschen: Erforschen Sie Eingaben, Ausgaben und den Umgang mit Dateien in der Python-Programmierung.
Wie kannst Du mit Python Excel / CSV Dateien bearbeiten?
In diesem Artikel werden Möglichkeiten aufgezeigt, um mit Python Excel- und CSV-Dateien öffnen, bearbeiten und schreiben zu können.
Wie funktioniert die Python Dateiverarbeitung?
Nutzen Sie die Möglichkeiten der Python Dateiverarbeitung mit unserem Artikel. Lernen Sie, Dateien effizient zu schreiben und zu navigieren.
Was sind Python Loops?
Beherrsche Python Loops: Lerne `for` und `while` Iterationen, Steueranweisungen und praktische Anwendungen in diesem Leitfaden kennen.
Klassen und Objekte in Python – einfach erklärt!
Objektorientierte Programmierung in Python beherrschen: Erforschen Sie Klassen, Objekte und Interaktionen in unserem informativen Artikel!
Was ist Threading und Multiprocessing in Python?
Steigern Sie die Leistung von Python mit Threading und Multiprocessing. Lernen Sie, wie Sie die Parallelverarbeitung nutzen können.
Andere Beiträge zum Thema Pandas Series
- Weitere nützliche Informationen zur Pandas Series findest Du in der ausführlichen Anleitung von w3schools.