Pandas-DataFrames: Den Index meistern
Das Indexieren von Python Pandas DataFrames erlaubt dir den direkten und schnellen Zugriff auf bestimmte Datenpunkte. Mit einem Pandas-DataFrame-Index wählst du gezielt Zeilen oder Spalten aus, was deine Datenanalyse spürbar vereinfacht.
Was bewirkt die Indexierung?
Die Indexierung eines Pandas DataFrames dient dazu, die Auswahl einzelner Elemente zu optimieren. Das gelingt dir, indem du Zeilen und Spalten über ihre Position oder ihren Namen ansprichst. Indizes fungieren dabei als praktisches Adresssystem für deine Datenstruktur, damit du Informationen schneller findest und bearbeitest.
Syntax von Pandas DataFrame.index
Du kannst dir die Index-Labels deines Pandas DataFrames mit der Eigenschaft index anzeigen lassen. Die Syntax dafür sieht so aus:
DataFrame.indexpythonMethoden zur Indizierung von DataFrames
Es stehen dir verschiedene Wege offen, um Pandas DataFrames zu indexieren. Je nachdem, was du erreichen möchtest, unterscheidet sich die Syntax der Operation.
Indexierung über Labels (Spaltennamen)
Pandas DataFrames nutzen oft Spaltennamen für die Indexierung. Erstellen wir dazu zuerst einen Beispiel-DataFrame:
import pandas as pd
# Beispiel-DataFrame erstellen
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Alter': [25, 30, 35],
'Stadt': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)pythonSo ist der DataFrame aufgebaut:
Name Alter Stadt
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 ChicagoUm auf alle Werte einer bestimmten Spalte zuzugreifen, nutzt du den Namen zusammen mit dem Indizierungsoperator []. Den Spaltennamen gibst du einfach als Python-String an:
# Zugriff auf die Spalte „Alter“
print(df['Alter'])pythonDas Ergebnis liefert dir die entsprechenden Alterswerte:
0 25
1 30
2 35
Name: Alter, dtype: int64Möchtest du mehrere Spalten gleichzeitig aufrufen, listest du deren Namen einfach durch Kommata getrennt im Operator auf.
Indexierung via loc[] (Zeilennamen)
Für den Zugriff auf eine konkrete Zeile nutzt du den Pandas-Indexer loc. Du übergibst ihm entweder den Namen oder die Nummer der Zeile. Im Beispiel ziehen wir aus dem bekannten DataFrame die nullte Zeile mit den Daten für „Alice“ heraus:
print(df.loc[0])pythonAls Resultat erhältst du wie gewünscht die Werte, die Alice zugeordnet sind:
Name Alice
Alter 25
Stadt New York
Name: 0, dtype: objectIndexierung mittels iloc[] (Positionsnummern)
Der wohl gängigste Weg, um auf Elemente zuzugreifen, läuft über Zeilen- und Spaltennummern. Hierfür bietet Pandas die Eigenschaft iloc an, die rein numerisch arbeitet.
# Zugriff auf die nullte Zeile
print(df.iloc[0])
# Zugriff auf den Wert in der nullten Zeile und ersten Spalte
print(df.iloc[0, 1])pythonDie Arbeit mit iloc[] liefert dir präzise die erwarteten Werte zurück:
Name Alice
Alter 25
Stadt New York
Name: 0, dtype: object
25Einzelne Werte gezielt abfragen
Suchst du nur einen ganz bestimmten Wert, ist der Indexer at die schnellste Lösung. Du definierst die Zeile und Spalte einfach über deren Namen. Wenn du etwa wissen willst, wo Bob wohnt, nutzt du die Spalte „Stadt“ und die erste Zeile:
print(df.at(1, 'Stadt'))pythonDie Ausgabe bestätigt korrekt den Wohnort „Los Angeles“.
Alternativ steht dir der iat-Indexer zur Verfügung. Er arbeitet wie at, verlangt aber anstelle von Namen die genaue Position im Index. So kommst du mit iat zum selben Ergebnis:
print(df.iat(1, 2))pythonBoolesche Indexierung
Du kannst Daten auch basierend auf logischen Bedingungen filtern – das nennt man boolesche Indizierung. Die Bedingung muss entweder True oder False ergeben und wird direkt in den Operator geschrieben. Um etwa alle Personen anzuzeigen, die älter als 30 Jahre sind, gehst du so vor:
# Auswahl der Zeilen, in denen das Alter größer als 30 ist
print(df[df[Alter] > 30])pythonDa dies nur auf den 35-jährigen „Charlie“ zutrifft, sieht das Ergebnis so aus:
Name Alter Stadt
2 Charlie 35 Chicago