Sådan renser du data i pandas med dropna()
Python-funktionen pandas DataFrame.dropna() bruges til at fjerne alle rækker eller kolonner, der indeholder manglende værdier (NaN) fra en DataFrame. Dette gør den særlig vigtig til forberedelse og rensning af data.
Hvad er syntaksen for pandas dropna()?
Funktionen dropna() accepterer op til fem parametre. Her er dens syntaks:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)pythonVigtige parametre for dropna()
Du kan bruge parametre til at påvirke funktionen pandas DataFrame.dropna() s adfærd. Her er en oversigt over de vigtigste:
| Parameter | Beskrivelse | Standardværdi |
|---|---|---|
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 kombineres med how
|
valgfri |
subset
|
Angiver, hvilke rækker eller kolonner der skal betragtes som | valgfri |
inplace
|
Bestemmer, om operationen udføres på den oprindelige DataFrame | False
|
ignore_index
|
Hvis True, mærkes den resterende akse fra 0 til n-1
|
False
|
Sådan bruges pandas DataFrame.dropna()
Pandas dropna() bruges til at rense data, før de analyseres. Fjernelsen af rækker eller kolonner med manglende værdier hjælper med at forhindre skævheder i statistiske evalueringer. Da manglende værdier også kan føre til problemer med datavisualisering, er det også en fordel at bruge funktionen, når man opretter diagrammer og rapporter.
Fjernelse af rækker med manglende værdier
I det følgende eksempel ser vi på en DataFrame, der indeholder 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)pythonDataFrame 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 12Dernæst vil vi anvende pandas dropna() -funktionen:
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)pythonKørsel af ovenstående kode giver følgende resultat:
A B C
0 1.0 5.0 9
3 4.0 8.0 12Da alle de andre rækker indeholder 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 parameteren axis til 1:
## Remove all columns that contain at least one NaN value
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)pythonKolonne C er den eneste kolonne, der er tilbage, da det er den eneste, der ikke indeholder NaN-værdier:
C
0 9
1 10
2 11
3 12Brug af thresh
Hvis du vil fjerne rækker, der indeholder færre end to ikke-NaN-værdier, kan du bruge parameteren thresh:
## Only keeps rows that have 2 or more non-NaN values
df_thresh = df.dropna(thresh=2)
print(df_thresh)pythonKø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 12Række 1 fjernes ikke fra outputtet, da den indeholder 2 ikke-NaN-værdier (2,0 og 10).
Brug af subset
Med parameteren subset kan du angive de kolonner, hvor programmet skal søge efter manglende værdier. Kun rækker, der indeholder 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)pythonHer fjernes kun den anden række. NaN-værdien i den første række ignoreres på grund af undergruppe-parameteren, som kun tager kolonne A i betragtning:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12