Hoe rijen met nan-waarden in panda's te verwijderen
Vaak wil je misschien rijen verwijderen die NaN-waarden bevatten in een pandas DataFrame. Gelukkig is dit eenvoudig te doen met de pandas dropna() functie.
In deze zelfstudie ziet u verschillende voorbeelden van het gebruik van deze functie op de volgende panda’s DataFrame:
import numpy as np import scipy.stats as stats #create DataFrame with some NaN values 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]}) #view DataFrame 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
Voorbeeld 1: rijen met NaN-waarden verwijderen
We kunnen de volgende syntaxis gebruiken om alle rijen met NaN- waarden te verwijderen:
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
Voorbeeld 2: Verwijder rijen met alle NaN-waarden
We kunnen de volgende syntaxis gebruiken om alle rijen te verwijderen die alle NaN-waarden in elke kolom bevatten:
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
Er waren geen rijen met alle NaN-waarden in dit specifieke DataFrame, dus geen van de rijen is verwijderd.
Voorbeeld 3: Rijen onder een bepaalde drempel verwijderen
We kunnen de volgende syntaxis gebruiken om alle rijen te verwijderen die niet ten minste een bepaald aantal niet-NaN-waarden hebben:
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
De allereerste rij van het oorspronkelijke DataFrame bevatte niet minstens drie niet-NaN-waarden, dus dat was de enige rij die werd verwijderd.
Voorbeeld 4: Verwijder een rij met Nan-waarden in een specifieke kolom
We kunnen de volgende syntaxis gebruiken om alle rijen met een NaN-waarde in een specifieke kolom te verwijderen:
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
Voorbeeld 5: Reset de index na het verwijderen van rijen met NaN’s
We kunnen de volgende syntaxis gebruiken om de index van het DataFrame opnieuw in te stellen na het verwijderen van rijen met NaN-waarden:
#drop all rows that have any NaN values df = df. dropna () #reset index of DataFrame df = df. reset_index (drop=True) #view DataFrame 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
Je kunt de volledige documentatie voor de dropna() functie hier vinden.