Hur man rensar data i pandas med dropna()
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)pythonViktiga 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)pythonDataFrame 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 12Dä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)pythonNä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 12Eftersom 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)pythonKolumn 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 12Anvä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)pythonNä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 12Rad 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)pythonHä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