Python-funk­tio­nen pandas DataFrame.dropna() bruges til at fjerne alle rækker eller kolonner, der in­de­hol­der manglende værdier (NaN) fra en DataFrame. Dette gør den særlig vigtig til for­be­re­del­se og rensning af data.

Hvad er syntaksen for pandas dropna()?

Funk­tio­nen dropna() ac­cep­te­rer op til fem parametre. Her er dens syntaks:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)
python

Vigtige parametre for dropna()

Du kan bruge parametre til at påvirke funk­tio­nen pandas DataFrame.dropna() s adfærd. Her er en oversigt over de vigtigste:

Parameter Be­skri­vel­se Stan­dard­vær­di
axis Bestemmer, om rækker (0 eller index) eller kolonner (1 eller columns) skal fjernes 0
how Angiver, om alle (all) eller kun nogle (any) værdier skal være NaN. any
thresh Angiver det mindste antal ikke-NaN-værdier, som en række eller kolonne skal have for at undgå at blive fjernet; kan ikke kom­bi­ne­res med how valgfri
subset Angiver, hvilke rækker eller kolonner der skal betragtes som valgfri
inplace Bestemmer, om ope­ra­tio­nen udføres på den op­rin­de­li­ge DataFrame False
ignore_index Hvis True, mærkes den re­ste­ren­de akse fra 0 til n-1 False

Sådan bruges pandas DataFrame.dropna()

Pandas dropna() bruges til at rense data, før de ana­ly­se­res. Fjer­nel­sen af rækker eller kolonner med manglende værdier hjælper med at forhindre skævheder i sta­ti­sti­ske eva­lu­e­rin­ger. Da manglende værdier også kan føre til problemer med da­ta­vi­su­a­li­se­ring, er det også en fordel at bruge funk­tio­nen, når man opretter di­a­gram­mer og rapporter.

Fjernelse af rækker med manglende værdier

I det følgende eksempel ser vi på en DataFrame, der in­de­hol­der NaN-værdier:

import pandas as pd
import numpy as np
# Creating a DataFrame with sample data
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
print(df)
python

DataFrame ser således ud:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
2  NaN  NaN  11
3  4.0  8.0  12

Dernæst vil vi anvende pandas dropna() -funk­tio­nen:

## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)
python

Kørsel af oven­stå­en­de kode giver følgende resultat:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Da alle de andre rækker in­de­hol­der NaN-værdier, er det kun den nulte og tredje række, der er tilbage.

Fjernelse af kolonner med manglende værdier

På samme måde kan du fjerne kolonner med manglende værdier ved at indstille pa­ra­me­te­ren axis til 1:

## Remove all columns that contain at least one NaN value
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
python

Kolonne C er den eneste kolonne, der er tilbage, da det er den eneste, der ikke in­de­hol­der NaN-værdier:

C
0   9
1  10
2  11
3  12

Brug af thresh

Hvis du vil fjerne rækker, der in­de­hol­der færre end to ikke-NaN-værdier, kan du bruge pa­ra­me­te­ren thresh:

## Only keeps rows that have 2 or more non-NaN values
df_thresh = df.dropna(thresh=2)
print(df_thresh)
python

Kørsel af koden giver følgende output:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12

Række 1 fjernes ikke fra outputtet, da den in­de­hol­der 2 ikke-NaN-værdier (2,0 og 10).

Brug af subset

Med pa­ra­me­te­ren subset kan du angive de kolonner, hvor pro­gram­met skal søge efter manglende værdier. Kun rækker, der in­de­hol­der manglende værdier i de angivne kolonner, fjernes.

## Removes all rows where column A contains a NaN value
df_subset = df.dropna(subset=['A'])
print(df_subset)
python

Her fjernes kun den anden række. NaN-værdien i den første række ignoreres på grund af un­der­grup­pe-pa­ra­me­te­ren, som kun tager kolonne A i be­tragt­ning:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Gå til ho­ved­me­nu­en