Skip to content

pandas: Fehlende Werte (NaN) erkennen und zählen mit isnull(), isna()

Python

In diesem Artikel wird beschrieben, wie SIE überprüfen, ob pandas.DataFrame und Series fehlende Werte enthalten, und wie SIE die Anzahl der fehlenden und nicht fehlenden Werte umfassen.

  • Erkennen Sie fehlende Werte mit isnull() und isna()
  • Überprüfen Sie, ob alle Elemente in einer Zeile und Spalte Werte fehlen
  • Überprüfen Sie, ob eine Zeile und Spalte mindestens einen fehlenden Wert enthält
  • Zählen Sie fehlende Werte in jeder Zeile und Spalte
  • Zählen Sie nicht fehlende Werte in jeder Zeile und Spalte
  • Zählen Sie die Gesamtzahl der fehlenden Werte
  • Zählen Sie die Gesamtzahl der nicht fehlenden Werte
  • Überprüfen Sie, ob pandas.DataFrame mindestens einen fehlenden Wert enthält
  • Für Pandas.Serie

In den following Artikeln erfahren SIE, wie SIE fehlende Werte entfernen und ersetzen.

In den following Artikeln erfahren SIE, wie SIE Elemente umfassen, sterben bestimmte Bedingungen erfüllen, nicht nur NaN.

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(). Verwenden Sie nur die ersten drei Zeilen.

import pandas as pd

df = pd.read_csv('data/src/sample_pandas_normal_nan.csv')[:3]
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

Erkennen Sie fehlende Werte mit isnull() und isna()

pandas.DataFrame und Series haben die Methoden isnull() und isna(). Beispiele für Pandas.Series werden am Ende gezeigt. Beachten Sie, dass die Methode isnan() nicht bereitgestellt WIRD.

True für fehlende Werte, False für fehlende Werte:

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

print(df.isna())
#     name    age  state  point  other
# 0  False  False  False   True   True
# 1   True   True   True   True   True
# 2  False   True  False   True   True

isnull() ist ein Alias ​​für isna(), dessen Verwendung dieselbe ist. isnull() wird hauptsächlich in diesem Artikel verwendet, aber SIE können es durch isna() ersetzen.

notnull() und notna() werden ebenfalls bereitgestellt, die True zurückgeben, wenn der Wert nicht fehlt, und False, wenn der Wert fehlt. notnull() ist ein Alias ​​​​für notna()

print(df.notnull())
#     name    age  state  point  other
# 0   True   True   True  False  False
# 1  False  False  False  False  False
# 2   True  False   True  False  False

print(df.notna())
#     name    age  state  point  other
# 0   True   True   True  False  False
# 1  False  False  False  False  False
# 2   True  False   True  False  False

Beachten Sie, dass NaN immer False für == und True für != zurückgibt.

print(df == float('nan'))
#     name    age  state  point  other
# 0  False  False  False  False  False
# 1  False  False  False  False  False
# 2  False  False  False  False  False

print(df != float('nan'))
#    name   age  state  point  other
# 0  True  True   True   True   True
# 1  True  True   True   True   True
# 2  True  True   True   True   True

Überprüfen Sie, ob alle Elemente in einer Zeile und Spalte Werte fehlen

all() gibt True zurück, wenn alle Elemente in jeder Zeile und Spalte True sind.

Indem Sie all() aus dem Ergebnis von isnull() aufrufen, können Sie prüfen, ob alle Elemente in jeder Zeile und Spalte Werte fehlen.

Standardmäßig wird es auf Spalten angewendet. Wenn das Argument Achse = 1 ist, WIRD es auf Zeilen angewendet.

print(df.isnull().all())
# name     False
# age      False
# state    False
# point     True
# other     True
# dtype: bool

print(df.isnull().all(axis=1))
# 0    False
# 1     True
# 2    False
# dtype: bool

Überprüfen Sie, ob eine Zeile und Spalte mindestens einen fehlenden Wert enthält

any() gibt True zurück, wenn es in jeder Zeile und Spalte mindestens ein True gibt.

Indem SIE any() aus dem Ergebnis von isnull() aufrufen, can SIE überprüfen, ob jede Zeile und Spalte mindestens einen fehlenden Wert enthält.

Standardmäßig wird es auf Spalten angewendet. Wenn das Argument Achse = 1 ist, WIRD es auf Zeilen angewendet.

print(df.isnull().any())
# name     True
# age      True
# state    True
# point    True
# other    True
# dtype: bool

print(df.isnull().any(axis=1))
# 0    True
# 1    True
# 2    True
# dtype: bool

Zählen Sie fehlende Werte in jeder Zeile und Spalte

sum() berechnet die Summe der Elemente für jede Zeile und Spalte.

Da sum() als True=1 und False=0 berechnet WIRD, can SIE die Anzahl der fehlenden Werte in jeder Zeile und Spalte umfassen, dafür sum() aus dem Ergebnis von isnull() aufrufen.

Sie können fehlende Werte standardmäßig in jeder Spalte und in jeder Zeile mit Achse=1 umfassen.

print(df.isnull().sum())
# name     1
# age      2
# state    1
# point    3
# other    3
# dtype: int64

print(df.isnull().sum(axis=1))
# 0    2
# 1    5
# 2    3
# dtype: int64

Zählen Sie nicht fehlende Werte in jeder Zeile und Spalte

count() zählt die Anzahl der nicht fehlenden Werte (= vorhandene Werte) in jeder Zeile und Spalte.

Rufen Sie es direkt aus dem ursprünglichen pandas.DataFrame auf, nicht aus dem Ergebnis von isnull().

Sie können standardmäßig keine fehlenden Werte in jeder Spalte und in jeder Zeile mit Achse=1 umfassen.

print(df.count())
# name     2
# age      1
# state    2
# point    0
# other    0
# dtype: int64

print(df.count(axis=1))
# 0    3
# 1    0
# 2    2
# dtype: int64

Zählen Sie die Gesamtzahl der fehlenden Werte

Sie können die gesamten Daten als NumPy-Array numpy.ndarray mit dem Attribut-Werten von pandas.DataFrame abrufen.

print(df.isnull().values)
# [[False False False  True  True]
#  [ True  True  True  True  True]
#  [False  True False  True  True]]

print(type(df.isnull().values))
# <class 'numpy.ndarray'>

Im Gegensatz zu pandas.DataFrame berechnet sum() von numpy.ndarray standardmäßig die Summe aller Elemente.

Daher can SIE durch Aufrufe von sum() aus dem Attribut values ​​​​(numpy.ndarray) des Ergebnisses von isnull() sterben Gesamtzahl der fehlenden Werte erhalten.

print(df.isnull().values.sum())
# 10

Zählen Sie die Gesamtzahl der nicht fehlenden Werte

Sie can die Gesamtzahl der nicht fehlenden Elemente erhalten, davon sterben Sie die Anzahl jeder Zeile und Spalte, die Sie mit count() erhalten haben, mit sum() summieren.

print(df.count().sum())
# 5

Sie können sum() auch aus dem Attribut values ​​(numpy.ndarray) des Ergebnisses von notnull() oder notna() aufrufen (wobei das nicht fehlende Element True ist).

print(df.notnull().values.sum())
# 5

Überprüfen Sie, ob pandas.DataFrame mindestens einen fehlenden Wert enthält

Anhand der oben angezeigten Gesamtzahl fehlender Werte can SIE überprüfen, ob pandas.DataFrame mindestens einen fehlenden Wert enthält.

If die Gesamtzahl der fehlenden Werte Nicht Null ist, bedeutet stirbt, dass pandas.DataFrame mindestens einen fehlenden Wert enthält.

print(df.isnull().values.sum() != 0)
# True

If die Gesamtzahl der fehlenden Werte gleich dem Größenattribut (der Anzahl aller Elemente) ist, bedeutet stirbt, dass alle Elemente fehlende Werte sind.

print(df.size)
# 15

print(df.isnull().values.sum() == df.size)
# False

Für Pandas.Serie

pandas.Series hat auch Methoden wie isnull(), isna(), notnull() und notna(). Es kann genauso gehandhabt werden wie die obigen Beispiele für pandas.DataFrame.

s = df['state']
print(s)
# 0     NY
# 1    NaN
# 2     CA
# Name: state, dtype: object

print(s.isnull())
# 0    False
# 1     True
# 2    False
# Name: state, dtype: bool

print(s.notnull())
# 0     True
# 1    False
# 2     True
# Name: state, dtype: bool

print(s.isnull().any())
# True

print(s.isnull().all())
# False

print(s.isnull().sum())
# 1

print(s.count())
# 2