Python -funktionen pandas DataFrame.dropna() används för att ta bort alla rader eller kolumner som innehåller 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()?

Funktionen dropna() accepterar upp till fem parametrar. Här är dess syntax:

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

Viktiga parametrar för dropna()

Du kan använda parametrar för att påverka funktionen pandas DataFrame.dropna(). Här är en översikt över de viktigaste:

Parameter Beskrivning Standardvärde
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 kombineras med how. valfritt
subset Anger vilka rader eller kolumner som ska beaktas. valfritt
inplace Avgör om operationen ska utföras på den ursprungliga DataFrame False
ignore_index Om True, märks den återstående 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 analyseras. Genom att ta bort rader eller kolumner med saknade värden kan man undvika snedvridningar i statistiska utvärderingar. Eftersom saknade värden också kan leda till problem med datavisualisering är det också fördelaktigt att använda funktionen när man skapar diagram och rapporter.

Ta bort rader med saknade värden

I följande exempel tittar vi på en DataFrame som innehåller 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 funktionen 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 innehåller 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 parametern 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 innehåller NaN-värden:

C
0   9
1  10
2  11
3  12

Användning av thresh

Om du vill ta bort rader som innehåller färre än två icke-NaN-värden kan du använda parametern 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 innehåller två icke-NaN-värden (2,0 och 10).

Användning av subset

Med parametern subset kan du ange vilka kolumner programmet ska söka efter saknade värden i. Endast rader som innehåller saknade värden i de angivna kolumnerna 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 parametern 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