Pandas: DataFrame Index verstehen
Die Indexierung von Python Pandas DataFrames ist ermöglicht den effizienten und direkten Zugriff auf spezifische Daten innerhalb eines DataFrames. Mithilfe eines Pandas-DataFrame-Index wählt man spezifische Zeilen und Spalten aus, was die Datenanalyse erheblich erleichtern kann.
- Flexibel: Hosting, das jedem Website-Traffic standhält
- Verlässlich: Inklusive 24/7-Support und persönlicher Beratung
- Sicher: Kostenloses SSL-Zertifikat, DDoS-Schutz und Backups
Was passiert bei der Indexierung?
Bei der Indexierung eines Pandas DataFrames soll die Auswahl bestimmter Elemente des DataFrames erleichtert werden. Dies kann durch die Auswahl von Zeilen und Spalten anhand ihrer Positionen oder Bezeichnungen erfolgen. Indizes können dabei helfen, Daten schneller zu finden und zu bearbeiten, indem sie eine Art „Adresssystem“ für die Datenstruktur bieten.
Syntax von Pandas DataFrame.index
Man kann sich die Index-Labels eines Pandas DataFrames mit der index
-Eigenschaft ansehen. De Syntax sieht wie folgt aus:
DataFrame.index
pythonSyntax zur Indizierung von DataFrames
Es gibt verschiedene Möglichkeiten der Indexierung von Pandas DataFrames. Die Syntax zur Indexierung variiert dabei je nach der gewünschten Operation.
Indexierung mit Labels (Spaltennamen)
Pandas DataFrames können für die Indexierung Spaltennamen nutzen. Hierfür wird zunächst ein Beispiel-DataFrame erstellt:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Alter': [25, 30, 35],
'Stadt': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
pythonDer DataFrame sieht wie folgt aus:
Name Alter Stadt
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
Möchten Sie nun auf alle Werte einer spezifischen Spalte zugreifen, können Sie deren Namen in Verbindung mit dem Indizierungsoperator []
zur Indexierung nutzen. Geben Sie den Spaltennamen einfach im Indizierungsoperator als Python-String an:
# Zugriff auf die Spalte „Alter“
print(df['Alter'])
pythonAls Resultat erhalten Sie die verschiedenen Alterswerte:
0 25
1 30
2 35
Name: Alter, dtype: int64
Wenn Sie sich nicht nur für eine, sondern für mehrere Spalten interessieren, können Sie deren Namen einfach mit Kommata getrennt im Indizierungsoperator angeben.
Indexierung mit loc[]
(Zeilennamen)
Wenn Sie auf eine bestimmte Zeile Ihres DataFrames zugreifen möchten, benötigen Sie hierzu den Pandas-Indexer loc. Diesem übergeben Sie entweder den Zeilennamen oder aber die Zeilennummer. Im folgenden Codebeispiel wird derselbe DataFrame wie zuvor betrachtet; es soll die nullte Spalte mit den Werten für „Alice“ extrahiert werden:
print(df.loc[0])
pythonIm Ergebnis sind nun also wie erwartet die Werte sichtbar, die zu „Alice“ gehören:
Name Alice
Alter 25
Stadt New York
Name: 0, dtype: object
Indexierung mit iloc[]
(Zeilen- und Spaltennummern)
Eine andere und die vermutlich populärste Möglichkeit, auf spezifische Elemente Ihres DataFrames zuzugreifen, bieten die Zeilen- und Spaltennummern. Um mit dem numerischen Pandas-DataFrame-Index zu arbeiten, benötigen Sie die DataFrame-Eigenschaft iloc.
# 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 Ergebnisse der Arbeit mit iloc[]
sehen folgendermaßen aus und geben die erwarteten Werte zurück:
Name Alice
Alter 25
Stadt New York
Name: 0, dtype: object
25
Einzelne Werte indizieren
Wenn Sie sich nur für einen spezifischen Wert aus Ihrem DataFrame interessieren, ist der Indexer at
eine schnelle und elegante Möglichkeit, diesen speziellen Wert zu extrahieren. Definieren Sie einfach die entsprechende Zeile und Spalte, in der der Wert aufzufinden ist, mit ihren Namen. Wenn also der Wohnort von Bob von Interesse ist, benötigen wir die Spalte „Stadt“ und die erste Zeile:
print(df.at(1, 'Stadt'))
pythonWie gewünscht ist die Ausgabe der Wohnort von Bob und somit „Los Angeles“.
Alternativ können Sie den iat
-Indexer nutzen, der analog zu at
funktioniert, statt des Namens aber die Position erwartet. Dasselbe Ergebnis wie im vorherigen Codebeispiel erhält man mit folgender Nutzung von iat
:
print(df.iat(1, 2))
pythonBoolesche Indexierung
Teilmengen eines DataFrames lassen sich auch basierend auf einer bestimmten Bedingung indizieren. In diesem Fall spricht man von boolescher Indizierung. Die Bedingung, die überprüft werden soll, muss entweder zu True
oder zu False
auswerten und wird direkt in den Indizierungsoperator gesetzt. Um nur die Zeilen zu extrahieren, in denen die Person älter als 30 ist, kann wie folgt vorgegangen werden:
# Auswahl der Zeilen, in denen das Alter größer als 30 ist
print(df[df[Alter] > 30])
pythonWie erwartet trifft die obige Bedingung nur auf den 35-jährigen „Charlie“ zu. Die Ausgabe ergibt daher Folgendes:
Name Alter Stadt
2 Charlie 35 Chicago
Beachten Sie, dass Sie bei der booleschen Indizierung sämtliche booleschen Vergleichsoperatoren nutzen können, die entweder zu True
oder zu False
auswerten. Erfahren Sie mehr über die verschiedenen Python-Operatoren in unserem Ratgeber-Artikel zum Thema.