
Sie können Zeilen/Spalten mit fehlenden Werten aus pandas.DataFrame extrahieren, indem Sie die Methode isnull() oder isna() verwenden, die prüft, ob ein Element ein fehlender Wert ist.
Dieser Artikel hat folgenden Inhalt.
- Extrahieren Sie Zeilen/Spalten mit fehlenden Werten in bestimmten Spalten/Zeilen
- Zeilen/Spalten mit mindestens einem fehlenden Wert extrahieren
Verwenden Sie die Methode dropna(), um Zeilen/Spalten zu extrahieren, bei denen alle Elemente nicht fehlende Werte sind, dh Zeilen/Spalten zu entfernen, die fehlenden Werte enthalten. Nichts finden Sie im folgenden Artikel.
Beachten Sie, dass nicht nur NaN (Not a Number), sondern auch None als fehlender Wert in Pandas behandelt wird.
Lesen Sie als Beispiel eine CSV-Datei mit fehlenden Werten mit read_csv().
import pandas as pd
df = pd.read_csv('data/src/sample_pandas_normal_nan.csv')
print(df)
# name age state point other
# 0 Alice 24.0 NY NaN NaN
# 1 NaN NaN NaN NaN NaN
# 2 Charlie NaN CA NaN NaN
# 3 Dave 68.0 TX 70.0 NaN
# 4 Ellen NaN CA 88.0 NaN
# 5 Frank 30.0 NaN NaN NaN
Extrahieren Sie Zeilen/Spalten mit fehlenden Werten in bestimmten Spalten/Zeilen
Sie can die isnull()- oder isna()-Methode von pandas.DataFrame und Series verwenden, um zu prüfen, ob jedes Element ein fehlender Wert ist oder nicht.
print(df.isnull())
# name age state point other
# 0 False False False True True
# 1 True True True True True
# 2 False True False True True
# 3 False False False False True
# 4 False True False False True
# 5 False False True True True
isnull() ist ein Alias für isna(), dessen Verwendung dieselbe ist. In diesem Artikel WIRD hauptsächlich isnull() verwendet, aber SIE can es durch isna() ersetzen.
Wenn SIE Zeilen mit fehlenden Werten in einer bestimmten Spalte extrahieren möchten, verwenden SIE das Ergebnis von isnull() für diese Spalte.
print(df['point'].isnull())
# 0 True
# 1 True
# 2 True
# 3 False
# 4 False
# 5 True
# Name: point, dtype: bool
print(df[df['point'].isnull()])
# name age state point other
# 0 Alice 24.0 NY NaN NaN
# 1 NaN NaN NaN NaN NaN
# 2 Charlie NaN CA NaN NaN
# 5 Frank 30.0 NaN NaN NaN
Das Konzept ist dasselbe, WENN Spalten mit fehlenden Werten in einer bestimmten Zeile extrahiert werden. Verwenden Sie loc[], um nach Name (Label) ausgewählt, und iloc[], um nach Position ausgewählt.
print(df.iloc[2].isnull())
# name False
# age True
# state False
# point True
# other True
# Name: 2, dtype: bool
print(df.loc[:, df.iloc[2].isnull()])
# age point other
# 0 24.0 NaN NaN
# 1 NaN NaN NaN
# 2 NaN NaN NaN
# 3 68.0 70.0 NaN
# 4 NaN 88.0 NaN
# 5 30.0 NaN NaN
Zeilen/Spalten mit mindestens einem fehlenden Wert extrahieren
Entfernen Sie als Beispiel Zeilen und Spalten, in denen alle Werte fehlende Werte sind.
df2 = df.dropna(how='all').dropna(how='all', axis=1)
print(df2)
# name age state point
# 0 Alice 24.0 NY NaN
# 2 Charlie NaN CA NaN
# 3 Dave 68.0 TX 70.0
# 4 Ellen NaN CA 88.0
# 5 Frank 30.0 NaN NaN
Verwenden Sie die Methode any(), die True zurückgibt, wenn in jeder Zeile/Spalte mindestens ein True vorhanden ist. Standardmäßig wird es auf Spalten angewendet. Wenn Achse = 1, WIRD SIE auf Zeilen angewendet.
Indem SIE any() aus dem Ergebnis von isnull() aufrufen, can SIE überprüfen, ob jede Zeile und Spalte mindestens einen fehlenden Wert enthält.
Zeilen extrahieren, die mindestens einen fehlenden Wert enthalten:
print(df2.isnull())
# name age state point
# 0 False False False True
# 2 False True False True
# 3 False False False False
# 4 False True False False
# 5 False False True True
print(df2.isnull().any(axis=1))
# 0 True
# 2 True
# 3 False
# 4 True
# 5 True
# dtype: bool
print(df2[df2.isnull().any(axis=1)])
# name age state point
# 0 Alice 24.0 NY NaN
# 2 Charlie NaN CA NaN
# 4 Ellen NaN CA 88.0
# 5 Frank 30.0 NaN NaN
Spalten extrahieren, die mindestens einen fehlenden Wert enthalten:
print(df2.isnull().any())
# name False
# age True
# state True
# point True
# dtype: bool
print(df2.loc[:, df2.isnull().any()])
# age state point
# 0 24.0 NY NaN
# 2 NaN CA NaN
# 3 68.0 TX 70.0
# 4 NaN CA 88.0
# 5 30.0 NaN NaN