Oft möchten Sie möglicherweise Zeilen löschen, die NaN-Werte in einem Pandas-DataFrame enthalten. Glücklicherweise ist dies mit der Funktion pandas dropna() einfach zu bewerkstelligen.

Dieses Tutorial zeigt einige Beispiele für die Verwendung dieser Funktion auf den folgenden Pandas DataFrame:

import numpy as np
import scipy.stats as stats

#Dataframe erstellen mit einigen NaN-Werten
df = pd.DataFrame({'rating': [np.nan, 85, np.nan, 88, 94, 90, 76, 75, 87, 86],
                   'points': [np.nan, 25, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, np.nan, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#Dataframe anzeigen
df


        rating  points  assists rebounds
0   NaN NaN 5.0 11
1   85.0    25.0    7.0 8
2   NaN 14.0    7.0 10
3   88.0    16.0    NaN 6
4   94.0    27.0    5.0 6
5   90.0    20.0    7.0 9
6   76.0    12.0    6.0 6
7   75.0    15.0    9.0 10
8   87.0    14.0    9.0 10
9   86.0    19.0    5.0 7

Beispiel 1: Zeilen mit beliebigen NaN-Werten löschen

Wir können die folgende Syntax verwenden, um alle Zeilen zu löschen, die alle NaN Werte haben:

df.dropna()

    rating  points  assists rebounds
1   85.0    25.0    7.0 8
4   94.0    27.0    5.0 6
5   90.0    20.0    7.0 9
6   76.0    12.0    6.0 6
7   75.0    15.0    9.0 10
8   87.0    14.0    9.0 10
9   86.0    19.0    5.0 7

Beispiel 2: Drop-Zeilen mit allen NaN-Werten

Wir können die folgende Syntax verwenden, um alle Zeilen mit allen NaN-Werten in jeder Spalte zu löschen:

df.dropna(how='all') 

        rating  points  assists rebounds
0   NaN NaN 5.0 11
1   85.0    25.0    7.0 8
2   NaN 14.0    7.0 10
3   88.0    16.0    NaN 6
4   94.0    27.0    5.0 6
5   90.0    20.0    7.0 9
6   76.0    12.0    6.0 6
7   75.0    15.0    9.0 10
8   87.0    14.0    9.0 10
9   86.0    19.0    5.0 7

In diesem speziellen DataFrame gab es keine Zeilen mit allen NaN-Werten, sodass keine der Zeilen gelöscht wurde.

Beispiel 3: Zeilen unterhalb eines bestimmten Schwellenwerts ablegen

Wir können die folgende Syntax verwenden, um alle Zeilen zu löschen, die nicht mindestens eine bestimmte Anzahl von Nicht-NaN-Werten haben:

df.dropna(thresh=3) 

    rating  points  assists rebounds
1   85.0    25.0    7.0 8
2   NaN 14.0    7.0 10
3   88.0    16.0    NaN 6
4   94.0    27.0    5.0 6
5   90.0    20.0    7.0 9
6   76.0    12.0    6.0 6
7   75.0    15.0    9.0 10
8   87.0    14.0    9.0 10
9   86.0    19.0    5.0 7

Die allererste Zeile im ursprünglichen DataFrame hatte nicht mindestens 3 Nicht-NaN-Werte, daher war es die einzige Zeile, die gelöscht wurde.

Beispiel 4: Drop Row mit Nan-Werten in einer bestimmten Spalte

Wir können die folgende Syntax verwenden, um alle Zeilen mit einem NaN-Wert in einer bestimmten Spalte zu löschen:

df.dropna(subset=['assists'])

    rating  points  assists rebounds
0   NaN NaN 5.0 11
1   85.0    25.0    7.0 8
2   NaN 14.0    7.0 10
4   94.0    27.0    5.0 6
5   90.0    20.0    7.0 9
6   76.0    12.0    6.0 6
7   75.0    15.0    9.0 10
8   87.0    14.0    9.0 10
9   86.0    19.0    5.0 7

Beispiel 5: Zurücksetzen des Index nach dem Löschen von Zeilen mit NaNs

Wir können die folgende Syntax verwenden, um den Index des DataFrame zurückzusetzen, nachdem die Zeilen mit den NaN-Werten gelöscht wurden:

#tropfen Sie alle Zeilen mit NaN-Werten
df = df.dropna()

# Index von DataFrame zurücksetzen
df = df.reset_index(drop=True)

#Dataframe anzeigen
df

        rating  points  assists rebounds
0   85.0    25.0    7.0 8
1   94.0    27.0    5.0 6
2   90.0    20.0    7.0 9
3   76.0    12.0    6.0 6
4   75.0    15.0    9.0 10
5   87.0    14.0    9.0 10
6   86.0    19.0    5.0 77

Die vollständige Dokumentation zur Funktion dropna() finden Sie hier.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: