Start / Blog / Python / NaN Python – Mit NaN Werten in Python richtig umgehen

NaN Python – Mit NaN Werten in Python richtig umgehen

Zusammenfassen mit ChatGPT

NaN (NaN), was für „Not a Number“ steht, ist ein spezieller Gleitkommawert in Python (und vielen anderen Programmiersprachen), der dazu dient, undefinierte oder nicht darstellbare Werte zu repräsentieren, wie das Ergebnis von 0/0 oder die Quadratwurzel einer negativen Zahl. Hier sind wichtige Punkte, die Sie über NaN in Python wissen sollten:

Darstellung NaN in Python

In Python kann NaN durch float('nan') oder np.nan aus der numpy-Bibliothek repräsentiert werden. math.nan ist auch aus der math-Bibliothek verfügbar.

NaN ist gleich nichts

Dies schließt sich selbst ein. Daher gibt float('nan') == float('nan') False zurück. Um zu überprüfen, ob ein Wert NaN ist, können Sie die Funktion math.isnan() oder numpy.isnan() verwenden, wenn Sie mit numpy-Arrays arbeiten.

Umgang mit NaN Werten bei der Datenverarbeitung

Bei der Datenverarbeitung, insbesondere mit Pandas DataFrames oder Numpy-Arrays, müssen Sie oft mit NaN-Werten umgehen. Sie repräsentieren fehlende oder beschädigte Daten. Es gibt verschiedene Möglichkeiten, diese zu behandeln – Sie können die Zeilen oder Spalten mit NaN-Werten entfernen oder NaN durch einen bestimmten Wert ersetzen, wie zum Beispiel den Durchschnitt oder Median der Daten, mit der Methode fillna() in pandas.

NaN in mathematischen Operationen

Jede mathematische Operation mit NaN ergibt NaN. Zum Beispiel gibt 5 + float('nan') float('nan') zurück.

NaN und None sind unterschiedlich

NaN ist ein numerischer Wert, der speziell in mathematischen und numerischen Kontexten verwendet wird, während None allgemeiner in Python verwendet wird, um das Fehlen eines Wertes zu repräsentieren.

Hier ist ein Beispiel, wie man NaN in Python verwendet:

Klicken Sie auf den unteren Button, um den Inhalt von trinket.io zu laden.

Inhalt laden

Das Verständnis und die korrekte Handhabung von NaN-Werten ist sehr wichtig bei der Datenanalyse und anderen wissenschaftlichen Berechnungsaufgaben.

Umgang mit NaN

NaN in Python

Es ist wichtig zu wissen, dass Python, auch ohne die Nutzung von Pandas, NaN-Werte kennt. Diese können wir durch die Verwendung von float() erzeugen:

n1 = float("nan")
n2 = float("Nan")
n3 = float("NaN")
n4 = float("NAN")
print(n1, n2, n3, n4)
print(type(n1))

Des Weiteren ist nan seit Python 3.5 Teil des math-Moduls:

import math
n1 = math.nan
print(n1)
print(math.isnan(n1))

Vergleiche mit „NaN“-Werten und regulären Zahlen-Werten sollten vermieden werden, da diese zu Problemen führen können:

print(n1 == n2)
print(n1 == 0)
print(n1 == 100)
print(n2 < 0)

Verwendung von NaN in Pandas

In Pandas gibt es verschiedene Methoden, mit NaN-Werten umzugehen. In einem hypothetischen Szenario, in dem wir eine Datei mit Temperaturmessungen auswerten, die vereinzelt NaN-Werte enthält, könnten wir die Funktion read_csv verwenden, um die Daten einzulesen:

import pandas as pd
df = pd.read_csv("data1/temperatures.csv",
                 sep=";",
                 index_col=0,
                 decimal=",")
print(df.head())

In diesem DataFrame könnten wir dann die Durchschnittstemperaturen berechnen und als neue Spalte hinzufügen:

average_temp_series = df.mean(axis=1)
df = df.assign(temperature=average_temp_series)

Sollten NaN-Werte vorhanden sein, könnten diese das Ergebnis verfälschen. Daher ist es wichtig, sinnvoll mit diesen umzugehen. Eine Möglichkeit wäre die Nutzung der dropna() Methode, um alle Zeilen zu entfernen, in denen NaN-Werte auftreten:

df = df.dropna()

Weitere Methoden um mit fehlenden Daten umzugehen sind beispielsweise das Ersetzen durch eine festgelegte Zahl oder das Füllen mit vor- oder nachgelagerten Werten (fillna(method='ffill') bzw. fillna(method='bfill')). Dies hängt jedoch stark vom Kontext und den spezifischen Daten ab.

Fazit

Die Handhabung von NaN-Werten ist ein wesentlicher Bestandteil der Arbeit mit numerischen Daten in Python. Diese Werte repräsentieren oft fehlende oder undefinierte Daten und ihre korrekte Handhabung ist entscheidend für genaue und sinnvolle Ergebnisse.

Entdecken Sie unsere Python Kategorie mit hilfreichen Artikeln rund um das Thema.

Fanden Sie die Seite hilfreich?

Vielen Dank für Ihr Feedback!

Würden Sie mir Feedback geben? (anonym)

Wir entwickeln KI-Software für Unternehmen und verzichten bewusst auf störende Werbebanner. Durch unsere Artikel dokumentieren wir Themen, die uns beschäftigen, interessieren und auch unser tägliches Brot finanzieren.

Da unsere Inhalte kostenfrei sind, ist Ihr Feedback unser Lob.

Jeder Autor liest Ihr anonymes Feedback persönlich, obwohl KI es automatisieren könnten, und integriert konstruktive Vorschläge direkt in die nächste Überarbeitung oder nutzt es als Inspiration für den nächsten Artikel.



    • Florian Zyprian
      (Autor)

      Als CTO bei der Helm & Nagel GmbH, dem Unternehmen hinter der Marke Konfuzio.

    de_DEDE