Hoe Python pandas dropna() te gebruiken om NA-waarden uit DataFrame te verwijderen

Introductie

In deze tutorial leer je hoe je de dropna() functie van panda’s DataFrame gebruikt.

NA-waarden zijn “Niet Beschikbaar”. Dit kan van toepassing zijn op Null, None, pandas.NaT, of numpy.nan. Door dropna() te gebruiken, verwijder je de rijen en kolommen met deze waarden. Dit kan voordelig zijn om je alleen geldige gegevens te geven.

Standaard retourneert deze functie een nieuwe DataFrame en blijft de oorspronkelijke DataFrame ongewijzigd.

Deze tutorial is geverifieerd met Python 3.10.9, pandas 1.5.2, en NumPy 1.24.1.

Syntax

dropna() accepteert de volgende parameters:

dropna(self, axis=0, how="any", thresh=None, subset=None, inplace=False)
  • axis: {0 (of 'index'), 1 (of 'columns')}, standaard 0
  • Als 0, verwijder rijen met ontbrekende waarden.
  • Als 1, verwijder kolommen met ontbrekende waarden.
  • how: {'any', 'all'}, standaard 'any'
  • Als 'any', verwijder de rij of kolom als een van de waarden NA is.
  • Als 'all', verwijder de rij of kolom als alle waarden NA zijn.
  • thresh: (optioneel) een int-waarde om de drempel voor de verwijderingsbewerking aan te geven.
  • subset: (optioneel) kolomlabel of reeks labels om rijen of kolommen te specificeren.
  • inplace: (optioneel) een bool-waarde.
  • Als True, wordt de bron DataFrame gewijzigd en wordt None geretourneerd.

Constructie van Voorbeeldgegevensreeksen

Construeer een voorbeeld DataFrame die geldige en ongeldige waarden bevat:

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)

Deze code zal de DataFrame afdrukken:

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

Voeg vervolgens een tweede DataFrame toe met extra rijen en kolommen met NA-waarden:

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)

Dit zal een nieuwe DataFrame opleveren:

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

U zult de voorgaande DataFrames gebruiken in de voorbeelden die volgen.

Alle rijen verwijderen met ontbrekende waarden

Gebruik dropna() om rijen te verwijderen met enige None, NaN, of NaT-waarden:

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

Dit zal uitvoeren:

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 kolommen laten vallen met ontbrekende waarden

Gebruik dropna() met axis=1 om kolommen te verwijderen met eventuele None, NaN of NaT waarden:

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

De kolommen met eventuele None, NaN of NaT waarden worden verwijderd:

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.

Rijen of kolommen laten vallen als alle waarden Null zijn met how

Gebruik het tweede DataFrame en how:

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

De rijen met alle waarden gelijk aan NA worden verwijderd:

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

De vijfde rij is verwijderd.

Vervolgens, gebruik how en specificeer de axis:

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

De kolommen met alle waarden gelijk aan NA worden verwijderd:

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

De vijfde kolom is verwijderd.

Het laten vallen van rijen of kolommen als een drempel wordt overschreden met thresh

Gebruik het tweede DataFrame met thresh om rijen te laten vallen die niet voldoen aan de drempel van minstens 3 niet-NA waarden:

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

De rijen die niet minstens 3 niet-NA waarden hebben, worden verwijderd:

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

De derde, vierde en vijfde rijen zijn verwijderd.

Het laten vallen van rijen of kolommen voor specifieke subsets

Gebruik het tweede DataFrame met subset om rijen met NA waarden in de Population kolom te laten vallen:

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

De rijen met Population die NA waarden hebben, worden verwijderd:

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

De derde, vierde en vijfde rijen zijn verwijderd.

U kunt ook de index waarden specificeren in de subset bij het laten vallen van kolommen uit het DataFrame:

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

De kolommen die NA waarden bevatten in een subset van rijen 1 en 2:

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

De derde, vierde en vijfde kolommen zijn verwijderd.

Het wijzigen van de bron DataFrame na het verwijderen van rijen of kolommen met inplace

Standaard wijzigt dropna() de bron DataFrame niet. In sommige gevallen wilt u echter mogelijk geheugen besparen bij het werken met een grote bron DataFrame door inplace te gebruiken.

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

Deze code maakt geen gebruik van een dfresult variabele.

Dit zal uitvoeren:

Output
Name ID Population Regions 0 Shark 1 100 1

De oorspronkelijke DataFrame is gewijzigd.

Conclusie

In dit artikel hebt u de dropna()-functie gebruikt om rijen en kolommen met NA-waarden te verwijderen.

Ga verder met uw leerproces met meer Python- en pandas-tutorials – Python pandas Module Tutorial, pandas Dubbele Rijen Verwijderen.

Referenties

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