Wie kann die Anzahl der fehlenden Werte in jeder Zeile im Pandas-Datenrahmen gezählt werden?

16

Wie kann ich die Anzahl der fehlenden Werte in jeder Zeile im Pandas-Datenrahmen ermitteln? Ich möchte den Datenrahmen in verschiedene Datenrahmen aufteilen, die in jeder Zeile die gleiche Anzahl fehlender Werte aufweisen.

Irgendein Vorschlag?

Kaggle
quelle

Antworten:

19

Sie können die Zeilen wie folgt zählen:

test_df.apply(lambda x: x.count(), axis=1)

test_df:

    A   B   C
0:  1   1   3
1:  2   nan nan
2:  nan nan nan

Ausgabe:

0:  3
1:  1
2:  0

Sie können das Ergebnis wie folgt hinzufügen:

test_df['full_count'] = test_df.apply(lambda x: x.count(), axis=1)

Ergebnis:

    A   B   C   full_count
0:  1   1   3   3
1:  2   nan nan 1
2:  nan nan nan 0
Jan van der Vegt
quelle
Hat perfekt funktioniert! Danke.
Kaggle
36

Wenn Pandas verwenden, versuchen Sie das Ausführen von Operationen in einer Schleife zu vermeiden, einschließlich apply, map, applymapetc. Das ist langsam!

Wenn Sie die fehlenden Werte in jeder Spalte zählen möchten, versuchen Sie:

df.isnull().sum() oder df.isnull().sum(axis=0)

Auf der anderen Seite können Sie in jeder Zeile (was Ihre Frage ist) zählen durch:

df.isnull().sum(axis=1)

Es ist ungefähr zehnmal schneller als die Lösung von Jan van der Vegt (übrigens zählt er gültige Werte anstatt fehlende Werte):

In [18]: %timeit -n 1000 df.apply(lambda x: x.count(), axis=1)
1000 loops, best of 3: 3.31 ms per loop

In [19]: %timeit -n 1000 df.isnull().sum(axis=1)
1000 loops, best of 3: 329 µs per loop
Icyblade
quelle
4

Der einfachste Weg:

df.isnull().sum(axis=1)
Yuan JI
quelle
4

Sie können auch einfach die Info-Methode für Datenrahmenobjekte verwenden:

df.info()

Dies gibt die Anzahl der Nicht-Null-Werte für jede Spalte an.

Chris Ivan
quelle
1

Nullwerte entlang der Spalte,

df.isnull().sum(axis=0)

leere Werte entlang der Spalte,

c = (df == '').sum(axis=0)

Nullwerte entlang der Zeile,

df.isnull().sum(axis=1)

leere Werte entlang der Zeile,

c = (df == '').sum(axis=1)
Rakesh Chaudhari
quelle
0
>>> df = pd.DataFrame([[1, 2, np.nan],
...                    [np.nan, 3, 4],
...                    [1, 2,      3]])

>>> df
    0  1   2
0   1  2 NaN
1 NaN  3   4
2   1  2   3

>>> df.count(axis=1)
0    2
1    2
2    3
dtype: int64
K3 --- rnc
quelle
0

Wenn Sie die Anzahl der fehlenden Werte zählen möchten:

np.logical_not(df.isnull()).sum()
Itachi
quelle
0

Dieses Snippet gibt einen ganzzahligen Wert der Gesamtzahl der Spalten mit fehlendem Wert zurück:

(df.isnull().sum() > 0).astype(np.int64).sum()
Neil Armstrong
quelle