# Pandas fillna() zum Ersetzen von NaN-Werten

Die Python-Pandas `DataFrame.fillna()`-Funktion wird verwendet, um **fehlende Werte in einem DataFrame zu ersetzen**. Das ist in vielen Fällen hilfreich, um Datenbereinigungsprozesse zu erleichtern oder Analysen durchzuführen.

## Syntax von Pandas `fillna()`

Die `fillna()`-Funktion nimmt **bis zu fünf Parameter** entgegen und ist syntaktisch wie folgt aufgebaut:

```python
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
```

### Relevante Parameter

Das Verhalten von Pandas `DataFrame.fillna()` kann unter Zuhilfenahme verschiedener Parameter angepasst werden:

<table>
  <thead>
    <tr>
      <th><strong>Parameter</strong></th>
      <th><strong>Beschreibung</strong></th>
      <th><strong>Defaultwert</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`value`</td>
      <td>Ein skalierter Wert oder ein Dictionary bzw. eine Serie zur Ersetzung der NaNs</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`method`</td>
      <td>Gibt die Methode zum Füllen an; Vorwärtsauffüllen (`ffill`) oder Rückwärtsauffüllen (`bfill`)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Bestimmt, entlang welcher Achse die Operation durchgeführt wird (0 oder `index` für Zeilen, 1 oder `columns` für Spalten)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Wenn `True`, werden die Änderungen direkt im ursprünglichen DataFrame durchgeführt.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`limit`</td>
      <td>Integer, der die Anzahl zu ersetzender NaN-Werte begrenzt</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

Hinweis In zukünftigen Versionen wird der Parameter `method` **voraussichtlich nicht mehr unterstützt** werden. Programmiererinnen und Programmierer können dann auf `obj.ffill()` bzw. `obj.bfill()` zurückgreifen. Die beiden Funktionen haben denselben Effekt wie der entsprechende `method`-Parameter.

## Anwendung von Pandas `DataFrame.fillna()`

Die Pandas-`fillna()`-Funktion kann auf verschiedene Weise genutzt werden:

### Ersetzen von NaN-Werten durch einen festen Wert

In einem ersten Schritt wir ein DataFrame definiert:

```python
import pandas as pd
# Beispiel DataFrame mit verschiedenen Werten
data = {
    'A': [1, 2, None, 4],
    'B': [None, 2, 3, 4],
    'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)
```

Der soeben definierte DataFrame sieht folgendermaßen aus:

```none
A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  NaN
2  NaN  3.0  3.0
3  4.0  4.0  4.0
```

Hinweis Beachten Sie, dass in Python Pandas der Wert `None` in DataFrames und Series als `NaN` interpretiert wird.

Um die fehlenden Werte nun durch den Wert 0 zu ersetzen, kann die Pandas-Funktion `fillna()` genutzt werden:

```python
# Ersetzen der fehlenden Werte durch den Wert 0
df_filled = df.fillna(0)
print(df_filled)
```

Im Ergebnis wurde jedes NaN durch den Wert 0 ersetzt, der der Funktion übergeben wurde:

```none
A    B    C
0  1.0  0.0  1.0
1  2.0  2.0  0.0
2  0.0  3.0  3.0
3  4.0  4.0  4.0
```

### Verwendung der Vorwärtsfüllmethode `ffill`

Wenn die NaN-Werte mit den vorhergehenden Werten der jeweiligen Spalte aufgefüllt werden sollen, kann die Methode `ffill` genutzt werden, die der Funktion als Parameter übergeben wird:

```python
# Ersetzen aller NaN-Werte durch den vorhergehenden Wert
df_ffill = df.fillna(method='ffill')
print(df_ffill)
```

In diesem Beispiel wurden die NaN-Werte in den Spalten „A“ und „C“ durch die vorhergehenden Werte in derselben Spalte ersetzt. Da es in der Spalte „B“ keinen vorausgehenden Wert gab, verbleibt dort der Wert NaN:

```none
A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  1.0
2  2.0  3.0  3.0
3  4.0  4.0  4.0
```

### Zeilenweise Verwendung der Rückwärtsfüllmethode `bfill`

Die NaN-Werte können auch mit ihren Nachfolgewerten der jeweiligen Zeile aufgefüllt werden. Hierzu muss nicht nur die Methode `bfill` genutzt werden, sondern es muss darüber hinaus der `axis`-Parameter auf 1 gesetzt werden:

```python
df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)
```

Im Ergebnis sind die NaN-Werte in der nullten und zweiten Zeile durch ihre jeweiligen Nachfolgewerte ersetzt worden. Nur in der ersten Spalte verbleibt noch einen NaN-Wert, denn es gibt in dieser Zeile keinen entsprechenden Nachfolgewert:

```none
A    B    C
0  1.0  1.0  1.0
1  2.0  2.0  NaN
2  3.0  3.0  3.0
3  4.0  4.0  4.0
```


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