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 is a backend software engineer at Matrice.ai.
LinkedIn