Python: NaN erkennen & behandeln – fehlende Werte

1. Wie man NaN in Python erkennt

Was ist NaN?

NaN (Not a Number) ist ein spezieller Gleitkommawert, der anzeigt, dass eine numerische Operation ungültig oder nicht definiert ist. Typischerweise tritt er bei Division durch Null oder als Ergebnis ungültiger Berechnungen auf, weshalb bei Datenanalyse und numerischer Verarbeitung besondere Vorsicht geboten ist. Wird NaN nicht korrekt behandelt, können Berechnungsergebnisse ungenau werden oder das Programm nicht wie erwartet funktionieren.

Wichtigkeit der NaN-Erkennung

Wenn NaN in einem Datensatz enthalten ist, kann dies die Zuverlässigkeit der Daten und die Berechnungsergebnisse beeinträchtigen. Daher ist es wichtig, zunächst NaN zu erkennen und anschließend geeignete Maßnahmen (wie Löschen, Ersetzen usw.) durchzuführen.

2. Erzeugung von NaN

Python kann NaN mit float('nan') erzeugen. Es wird verwendet, um ein ungültiges Ergebnis in numerischen Berechnungen explizit anzuzeigen.
num = float('nan')
print(num)  # Ergebnis: nan

Unterschied zu None

NaN ist numerisch ungültig, während None einen Zustand von „nichts“ darstellt. None kann mit == verglichen werden, aber NaN ist selbst im Vergleich nicht gleich, sodass ein Vergleich mit == ungeeignet ist.
num = float('nan')
print(num == num)  # Ergebnis: False

none_value = None
print(none_value == None)  # Ergebnis: True

3. Methoden zur Erkennung von NaN

3.1. Erkennung mit der Standardbibliothek (math.isnan())

Um NaN mit der Standardbibliothek von Python zu prüfen, verwendet man math.isnan(). Diese Funktion gibt True zurück, wenn der übergebene Wert NaN ist.
import math

num = float('nan')
print(math.isnan(num))  # Ergebnis: True

3.2. Erkennung mit NumPy (numpy.isnan())

NumPy ist eine Bibliothek, die sich auf Berechnungen mit Arrays und Matrizen spezialisiert hat und die Funktion numpy.isnan() bereitstellt, um NaN in Arrays effizient zu erkennen. Sie wird häufig in der numerischen Analyse und wissenschaftlichen Datenverarbeitung eingesetzt.
import numpy as np

num_list = [1, 2, np.nan, 4]
print(np.isnan(num_list))  # Ergebnis: [False False  True False]

3.3. Erkennung mit pandas (pandas.isna())

Beim Umgang mit DataFrames verwendet man in pandas isna() oder isnull(), um NaN zu erkennen. Diese Funktionen sind nützlich für Datenbereinigung und den Umgang mit fehlenden Werten.
import pandas as pd
import numpy as np

data = pd.Series([1, 2, np.nan, 4])
print(pd.isna(data))  # Ergebnis: 0    False
                      #      1    False
                      #      2     True
                      #      3    False

4. NaN entfernen und ersetzen

4.1. NaN aus einer Liste entfernen

Um NaN in einer Liste zu entfernen, kann man math.isnan() mit einer Listen‑Komprehension kombinieren.
import math

num_list = [1, 2, float('nan'), 4]
clean_list = [num for num in num_list if not math.isnan(num)]
print(clean_list)  # Ergebnis: [1, 2, 4]

4.2. NaN mit pandas entfernen(dropna()

Um NaN aus einem DataFrame zu entfernen, verwendet man die dropna()-Methode. Dadurch können Zeilen oder Spalten, die NaN enthalten, entfernt werden.
import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6]})
clean_df = df.dropna()
print(clean_df)

4.3. NaN mit pandas ersetzen(fillna()

Wenn man NaN nicht löschen, sondern durch einen bestimmten Wert ersetzen möchte, verwendet man die fillna()-Methode.
import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6]})
df.fillna(0, inplace=True)
print(df)
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Berechnungen mit NaN

Berechnungen, die NaN enthalten, führen ebenfalls zu NaN als Ergebnis, daher muss man NaN vorab entfernen oder ersetzen, um genaue Resultate zu erhalten.
import numpy as np

result = 10 + np.nan
print(result)  # Ergebnis: nan

Beispiel für statistische Berechnungen mit NaN

Wenn man statistische Berechnungen mit einem Datensatz, der NaN enthält, durchführt und NaN dabei ignorieren möchte, verwendet man die nanmean()-Funktion von NumPy. Diese berechnet den Mittelwert, wobei NaN ausgeschlossen werden.
import numpy as np

data = [1, 2, np.nan, 4]
mean = np.nanmean(data)  # Mittelwert berechnen, NaN ignorieren
print(mean)  # Ergebnis: 2.3333...

6. Hinweise zur NaN-Überprüfung

6.1. Verhalten von Vergleichsoperatoren

NaN hat die besondere Eigenschaft, dass es bei Vergleichsoperatoren weder mit anderen Zahlen noch mit sich selbst als gleich gilt. Daher können die Prüfungen mit == oder != nicht verwendet werden; es ist notwendig, spezielle Funktionen (isnan() oder isna()) zu benutzen.
num = float('nan')
print(num == num)  # Ergebnis: False

6.2. Punkte für die Datenbereinigung

In der Datenanalyse können genaue Berechnungen nicht durchgeführt werden, wenn NaN-Werte verbleiben. Da sie die Ergebnisse verfälschen können, ist eine vorherige geeignete Bereinigung erforderlich. Durch das korrekte Entfernen oder Ersetzen von NaN lässt sich die Zuverlässigkeit der Daten erhöhen.

7. Zusammenfassung

Python kann man durch die Nutzung von math, numpy, pandas NaN effizient erkennen und verarbeiten. Das korrekte Verständnis des Umgangs mit NaN und das Erlernen der Grundlagen, um die Zuverlässigkeit von Datenanalyse und numerischen Berechnungen zu gewährleisten, ist eine Fähigkeit, die in allen Bereichen der Programmierung nützlich ist.
年収訴求