Verwendung von Python pandas dropna() zum Löschen von NA-Werten aus DataFrame

Einführung

In diesem Tutorial erfahren Sie, wie Sie die dropna()-Funktion von pandas DataFrame verwenden.

NA-Werte stehen für „Nicht verfügbar“. Dies kann auf Null, None, pandas.NaT oder numpy.nan zutreffen. Die Verwendung von dropna() entfernt die Zeilen und Spalten mit diesen Werten. Dies kann Ihnen dabei helfen, nur gültige Daten zu erhalten.

Standardmäßig gibt diese Funktion ein neues DataFrame zurück, und das Ausgangs-DataFrame bleibt unverändert.

Dieses Tutorial wurde mit Python 3.10.9, pandas 1.5.2 und NumPy 1.24.1 überprüft.

Syntax

dropna() akzeptiert die folgenden Parameter:

dropna(self, axis=0, how="any", thresh=None, subset=None, inplace=False)
  • axis: {0 (oder 'index'), 1 (oder 'columns')}, Standard 0
  • Wenn 0, entfernen Sie Zeilen mit fehlenden Werten.
  • Wenn 1, entfernen Sie Spalten mit fehlenden Werten.
  • how: {'any', 'all'}, Standard 'any'
  • Wenn 'any', entfernen Sie die Zeile oder Spalte, wenn eines der Werte NA ist.
  • Wenn 'all', entfernen Sie die Zeile oder Spalte, wenn alle Werte NA sind.
  • thresh: (optional) ein int-Wert zur Angabe des Schwellenwerts für die Drop-Operation.
  • subset: (optional) Spaltenbezeichnung oder Sequenz von Bezeichnungen zur Angabe von Zeilen oder Spalten.
  • inplace: (optional) ein bool-Wert.
  • Wenn True, wird das Quell-DataFrame geändert und None wird zurückgegeben.

Erstellung von Beispieldatenrahmen

Erstellen Sie einen Beispieldatenrahmen, der gültige und ungültige Werte enthält:

dropnaExample.py
import pandas as pd
import numpy as np

d1 = {
'Name': ['Shark', 'Whale', 'Jellyfish', 'Starfish'],
'ID': [1, 2, 3, 4],
'Population': [100, 200, np.nan, pd.NaT],
'Regions': [1, None, pd.NaT, pd.NaT]
}

df1 = pd.DataFrame(d1)
print(df1)

Dieser Code gibt den Datenrahmen aus:

Output
Name ID Population Regions 0 Shark 1 100 1 1 Whale 2 200 None 2 Jellyfish 3 NaN NaT 3 Starfish 4 NaT NaT

Fügen Sie dann einen zweiten Datenrahmen mit zusätzlichen Zeilen und Spalten mit NA-Werten hinzu:

d2 = {
'Name': ['Shark', 'Whale', 'Jellyfish', 'Starfish', pd.NaT],
'ID': [1, 2, 3, 4, pd.NaT],
'Population': [100, 200, np.nan, pd.NaT, pd.NaT],
'Regions': [1, None, pd.NaT, pd.NaT, pd.NaT],
'Endangered': [pd.NaT, pd.NaT, pd.NaT, pd.NaT, pd.NaT]
}

df2 = pd.DataFrame(d2)
print(df2)

Dies gibt einen neuen Datenrahmen aus:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT 2 Jellyfish 3 NaN NaT NaT 3 Starfish 4 NaT NaT NaT 4 NaT NaT NaT NaT NaT

Sie werden die vorherigen Datenrahmen in den folgenden Beispielen verwenden.

Entfernen aller Zeilen mit fehlenden Werten

Verwenden Sie dropna(), um Zeilen mit None, NaN oder NaT-Werten zu entfernen:

dropnaExample.py
dfresult = df1.dropna()
print(dfresult)

Dies gibt aus:

Output
Name ID Population Regions 0 Shark 1 100 1

A new DataFrame with a single row that didn’t contain any NA values.

Alle Spalten mit fehlenden Werten verwerfen

Verwenden Sie dropna() mit axis=1, um Spalten mit beliebigen None, NaN oder NaT-Werten zu entfernen:

dfresult = df1.dropna(axis=1)
print(dfresult)

Die Spalten mit beliebigen None, NaN oder NaT-Werten werden verworfen:

Output
Name ID 0 Shark 1 1 Whale 2 2 Jellyfish 3 3 Starfish 4

A new DataFrame with a single column that contained non-NA values.

Zeilen oder Spalten verwerfen, wenn alle Werte Null sind mit how

Verwenden Sie den zweiten DataFrame und how:

dropnaExample.py
dfresult = df2.dropna(how='all')
print(dfresult)

Die Zeilen mit alle Werten gleich NA werden verworfen:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT 2 Jellyfish 3 NaN NaT NaT 3 Starfish 4 NaT NaT NaT

Die fünfte Zeile wurde verworfen.

Anschließend verwenden Sie how und geben Sie die axis an:

dropnaExample.py
dfresult = df2.dropna(how='all', axis=1)
print(dfresult)

Die Spalten mit alle Werten gleich NA werden verworfen:

Output
Name ID Population Regions 0 Shark 1 100 1 1 Whale 2 200 None 2 Jellyfish 3 NaN NaT 3 Starfish 4 NaT NaT 4 NaT NaT NaT NaT

Die fünfte Spalte wurde verworfen.

Das Löschen von Zeilen oder Spalten, wenn ein Schwellenwert überschritten wird, mit thresh

Verwenden Sie das zweite DataFrame mit thresh, um Zeilen zu löschen, die den Schwellenwert von mindestens 3 Nicht-NA-Werten nicht erfüllen:

dropnaExample.py
dfresult = df2.dropna(thresh=3)
print(dfresult)

Die Zeilen, die nicht mindestens 3 Nicht-NA-Werte enthalten, werden gelöscht:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT

Die dritte, vierte und fünfte Zeile wurden gelöscht.

Das Löschen von Zeilen oder Spalten für bestimmte Untermengen

Verwenden Sie das zweite DataFrame mit subset, um Zeilen mit NA-Werten in der Population-Spalte zu löschen:

dropnaExample.py
dfresult = df2.dropna(subset=['Population'])
print(dfresult)

Die Zeilen, die Population mit NA-Werten enthalten, werden gelöscht:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT

Die dritte, vierte und fünfte Zeile wurden gelöscht.

Sie können auch die index-Werte im subset angeben, wenn Sie Spalten aus dem DataFrame löschen:

dropnaExample.py
dfresult = df2.dropna(subset=[1, 2], axis=1)
print(dfresult)

Die Spalten, die NA-Werte im Teilmengenbereich der Zeilen 1 und 2 enthalten:

Output
Name ID 0 Shark 1 1 Whale 2 2 Jellyfish 3 3 Starfish 4 4 NaT NaT

Die dritte, vierte und fünfte Spalte wurden gelöscht.

Ändern des Quelldatenrahmens nach dem Löschen von Zeilen oder Spalten mit inplace

Nach Standardverhalten ändert dropna() den Quelldatenrahmen nicht. In einigen Fällen möchten Sie jedoch möglicherweise Speicherplatz sparen, wenn Sie mit einem großen Quelldatenrahmen arbeiten, indem Sie inplace verwenden.

dropnaExample.py
df1.dropna(inplace=True)
print(df1)

Dieser Code verwendet keine dfresult-Variable.

Dies wird ausgegeben:

Output
Name ID Population Regions 0 Shark 1 100 1

Der Originaldatenrahmen wurde geändert.

Schlussfolgerung

In diesem Artikel haben Sie die Funktion dropna() verwendet, um Zeilen und Spalten mit NA-Werten zu entfernen.

Weiterlernen mit weiteren Python- und pandas-Tutorials – Python pandas Modul Tutorial, pandas Duplikate Zeilen löschen.

Referenzen

Source:
https://www.digitalocean.com/community/tutorials/pandas-dropna-drop-null-na-values-from-dataframe