# Pandas: DataFrame Index verstehen

Die Indexierung von [Python Pandas](https://www.ionos.de/digitalguide/websites/web-entwicklung/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.

## 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:

```python
DataFrame.index
```

## 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:

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

Der DataFrame sieht wie folgt aus:

```none
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](https://www.ionos.de/digitalguide/websites/web-entwicklung/python-string/) an:

```python
# Zugriff auf die Spalte „Alter“
print(df['Alter'])
```

Als Resultat erhalten Sie die verschiedenen Alterswerte:

```none
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](https://www.ionos.de/digitalguide/websites/web-entwicklung/python-pandas-dataframe-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:

```python
print(df.loc[0])
```

Im Ergebnis sind nun also wie erwartet die Werte sichtbar, die zu „Alice“ gehören:

```none
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](https://www.ionos.de/digitalguide/websites/web-entwicklung/python-pandas-dataframe-iloc/).

```python
# 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])
```

Die Ergebnisse der Arbeit mit `iloc[]` sehen folgendermaßen aus und geben die erwarteten Werte zurück:

```none
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:

```python
print(df.at(1, 'Stadt'))
```

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`:

```python
print(df.iat(1, 2))
```

### 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:

```python
# Auswahl der Zeilen, in denen das Alter größer als 30 ist
print(df[df[Alter] > 30])
```

Wie erwartet trifft die obige Bedingung nur auf den 35-jährigen „Charlie“ zu. Die Ausgabe ergibt daher Folgendes:

```none
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](https://www.ionos.de/digitalguide/websites/web-entwicklung/python-operatoren/).


This is a markdown version of: [https://www.ionos.de/digitalguide/websites/web-entwicklung/python-pandas-dataframe-index/](https://www.ionos.de/digitalguide/websites/web-entwicklung/python-pandas-dataframe-index/) for AI/LLM consumption.