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.
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.
