python NaN

NaN Python – Der Umgang mit NaN-Werten in Python

Florian Zyprian

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


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

Schlussfolgerung

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.

Weiterführende Themen

Nachdem Sie nun ein grundlegendes Verständnis von NaN-Werten in Python haben, könnten Sie sich weiterführend mit folgenden Themen befassen:

  • Fehlerbehandlung in Python: Lernen Sie, wie Sie mit Fehlern und Ausnahmen in Ihrem Code umgehen können.
  • Datenreinigung mit Pandas: Erfahren Sie mehr über Methoden zur Datenreinigung und -vorbereitung mit der leistungsstarken Bibliothek Pandas.
  • Fortgeschrittene Numpy-Techniken: Vertiefen Sie Ihr Verständnis der Numpy-Bibliothek und ihrer Anwendung auf numerische Daten.

    Sucht Ihre Firma neue KI-Talente?

    Erstklassige KI-Talente für Ihr Unternehmen

    Spezialisierte Vermittlung, maximaler Erfolg ohne Aufwand: Unser Partner Opushero hilft Ihnen dabei die besten Talente zu finden. Ein Netzwerk aus spezialisierten Beratungsagenturen, die sowohl aufstrebende Youngster als auch erfahrene KI Entwickler betreuen. Erhalten Sie vorqualifizierte Kandidaten Vorschläge die bei Ihnen durchstarten wollen.

    Über mich

    Weitere Artikel

    Python spielt Twister: 8 absurde Beispiele für komplexen Code

    Das Programmieren ist eine Kunst des Ausgleichs zwischen Einfachheit und Komplexität. Aber es gibt eine eigenartige Anziehungskraft auf die Komplexität,...

    Zum Artikel
    Date Regex Python

    Regex für Datumsangaben in Python: Ein Leitfaden

    Hallo liebe Python-Entwickler, es ist nicht ungewöhnlich, dass wir in unserer täglichen Arbeit als EntwicklerInnen Datumsangaben verarbeiten müssen. Es gibt...

    Zum Artikel

    Daten-Parsing-Tool mit Python, SROIE-Datensatz und maschinellem Lernen erstellen

    Wenn Sie ein Python-Entwickler sind und ein Daten-Parsing-Tool erstellen möchten, ist dieses Tutorial genau das Richtige für Sie. Wir zeigen...

    Zum Artikel
    Arrow-up