Python -funk­tio­nen pandas DataFrame.dropna() används för att ta bort alla rader eller kolumner som in­ne­hål­ler saknade värden (NaN) från en DataFrame. Detta gör den särskilt viktig för att förbereda och rensa data.

Vad är syntaxen för pandas dropna()?

Funk­tio­nen dropna() ac­cep­te­rar upp till fem pa­ra­met­rar. Här är dess syntax:

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

Viktiga pa­ra­met­rar för dropna()

Du kan använda pa­ra­met­rar för att påverka funk­tio­nen pandas DataFrame.dropna(). Här är en översikt över de vik­ti­gas­te:

Parameter Be­skriv­ning Stan­dard­vär­de
axis Avgör om rader (0 eller index) eller kolumner (1 eller columns) ska tas bort. 0
how Anger om alla (all) eller endast vissa (any) värden måste vara NaN. any
thresh Anger det minsta antalet icke-NaN-värden som en rad eller kolumn måste ha för att inte tas bort; kan inte kom­bi­ne­ras med how. valfritt
subset Anger vilka rader eller kolumner som ska beaktas. valfritt
inplace Avgör om ope­ra­tio­nen ska utföras på den ur­sprung­li­ga DataFrame False
ignore_index Om True, märks den åter­stå­en­de axeln från 0 till n-1. False

Hur man använder pandas DataFrame.dropna()

Pandas dropna() används för att rensa data innan den ana­ly­se­ras. Genom att ta bort rader eller kolumner med saknade värden kan man undvika sned­vrid­ning­ar i sta­tis­tis­ka ut­vär­de­ring­ar. Eftersom saknade värden också kan leda till problem med data­vi­su­a­li­se­ring är det också för­del­ak­tigt att använda funk­tio­nen när man skapar diagram och rapporter.

Ta bort rader med saknade värden

I följande exempel tittar vi på en DataFrame som in­ne­hål­ler NaN-värden:

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 ut så här:

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

Därefter ska vi tillämpa funk­tio­nen pandas dropna():

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

När du kör koden ovan får du följande resultat:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Eftersom alla andra rader in­ne­hål­ler NaN-värden återstår endast den nollte och tredje raden.

Ta bort kolumner med saknade värden

På samma sätt kan du ta bort kolumner med saknade värden genom att ställa in pa­ra­me­tern axis till 1:

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

Kolumn C är den enda kolumn som återstår, eftersom det är den enda som inte in­ne­hål­ler NaN-värden:

C
0   9
1  10
2  11
3  12

An­vänd­ning av thresh

Om du vill ta bort rader som in­ne­hål­ler färre än två icke-NaN-värden kan du använda pa­ra­me­tern thresh:

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

När koden körs får man följande resultat:

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

Rad 1 tas inte bort från utdata eftersom den in­ne­hål­ler två icke-NaN-värden (2,0 och 10).

An­vänd­ning av subset

Med pa­ra­me­tern subset kan du ange vilka kolumner pro­gram­met ska söka efter saknade värden i. Endast rader som in­ne­hål­ler saknade värden i de angivna ko­lum­ner­na kommer att tas bort.

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

Här tas endast den andra raden bort. NaN-värdet i den första raden ignoreras på grund av pa­ra­me­tern subset, som endast tar hänsyn till kolumn A:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Gå till huvudmeny