Wie prüft man, ob NaN im Pandas-DataFrame vorhanden ist

Suraj Joshi 30 Januar 2023
  1. pandas.DataFrame.isnull() Methode
  2. pandas.DataFrame.isna() Methode
Wie prüft man, ob NaN im Pandas-DataFrame vorhanden ist

NaN steht für Not a Number, die fehlende Werte in Pandas repräsentiert. Um NaN-Werte in Python Pandas zu erkennen, können wir die Methoden isnull() und isna() für DataFrame-Objekte verwenden.

pandas.DataFrame.isnull() Methode

Wir können auf NaN-Werte in DataFrame mit der Methode pandas.DataFrame.isnull() prüfen. Die Methode gibt DataFrame von Bool-Werten zurück, deren Elemente True sind, wenn die entsprechenden Elemente im zu prüfenden DataFrame den Wert NaN haben, und die Elemente andernfalls False sind.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

df_check = df.isnull()

print(df_check)

Ausgabe:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False

Hier stellen die False-Werte in der Ausgabe die Einträge im DataFrame df dar, die nicht NaN sind, und die True-Werte stellen NaN-Einträge im DataFrame df dar.

Wenn wir wissen wollen, ob es irgendeinen NaN-Wert im DataFrame gibt, können wir die Methode isnull().values.any() verwenden, die True zurückgibt, wenn es irgendeinen NaN-Wert im DataFrame gibt, und False zurückgibt, wenn es nicht einmal einen einzigen NaN-Eintrag im DataFrame gibt.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

check_for_nan = df.isnull().values.any()
print(check_for_nan)

Ausgabe:

True

df.isnull().values gibt die NumPy-Darstellung des DataFrames zurück. numpy.any() gibt True zurück, wenn eines der Elemente als True ausgewertet wird.

Daher ist df.isnull().values.any() gleich True, wenn irgendeines der Elemente im DataFrame NaN existiert.

df.isnull().any().any() zur Prüfung, ob ein NaN vorhanden ist

df.any() gibt zurück, ob eines der Elemente wahr ist. Es gibt eine pd.Series zurück, wenn df ein DataFrame ist, und einen booleschen Wert, wenn df eine pd.Series ist.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

check_for_nan = df.isnull().any().any()

print(check_for_nan)

Ausgabe:

True

Zwei kaskadierte any() Methoden nach isnull() im obigen Beispiel geben True zurück, wenn eines der Elemente NaN im DataFrame ist.

isnull().sum().sum() zur Prüfung, ob ein NaN vorhanden ist

Wenn wir die Gesamtzahl der NaN-Werte in einem bestimmten DataFrame zählen wollen, ist die df.isnull().sum().sum() Methode die richtige Lösung. Die Methode gibt die Gesamtzahl der NaN-Werte im gesamten DataFrame zurück.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

total_nan_values = df.isnull().sum().sum()
print(total_nan_values)

Ausgabe:

4

Wenn das Ergebnis größer als 0 ist, bedeutet dies, daß NaN im DataFrame existiert.

pandas.DataFrame.isna() Methode

Die Methode pandas.DataFrame.isna() ist ähnlich
pandas.DataFrame.isnull(). Es gibt keinen Unterschied zwischen der Funktionsweise von zwei Methoden. Sie unterscheiden sich nur im Namen.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

df_check = df.isna()

check_for_any_nan = df.isna().values.any()
# Or
check_for_any_nan = df.isna().any().any()
total_nan_values = df.isna().sum().sum()
print(df_check)
print("NaN Presence:" + str(check_for_any_nan))
print("Total Number of NaN values:" + str(total_nan_values))

Ausgabe:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False
NaN Presence:True
Total Number of NaN values:4

Hier gibt die Methode df.isna() DataFrame zurück, dessen Einträge boolesche Werte enthalten, die das Vorhandensein von NaN-Werten in df anzeigen. In ähnlicher Weise geben df.isna().values.any(), df.isna().any().any() und df.isna().sum().sum() das Vorhandensein des NaN Wertes im gesamten df und die Anzahl der NaN Einträge im df zurück.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Pandas NaN