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.

Webhosting
Top-Hosting für Ihre Website
  • 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
python

Syntax 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)
python

Der 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'])
python

Als 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])
python

Im 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])
python

Die 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'))
python

Wie 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))
python

Boolesche 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])
python

Wie 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
Hinweis

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.

War dieser Artikel hilfreich?
Page top