Hvordan rense data i pandas med dropna()
Python-funksjonen pandas DataFrame.dropna() brukes til å fjerne alle rader eller kolonner som inneholder manglende verdier (NaN) fra en DataFrame. Dette gjør den spesielt viktig for å forberede og rense data.
Hva er syntaksen for pandas dropna()?
Funksjonen dropna() aksepterer opptil fem parametere. Her er syntaksen:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)pythonViktige parametere for dropna()
Du kan bruke parametere til å påvirke oppførselen til pand DataFrame.dropna() -funksjonen. Her er en oversikt over de viktigste:
| Parameter | Beskrivelse | Standardverdi |
|---|---|---|
axis
|
Bestemmer om rader (0 eller index) eller kolonner (1 eller columns) skal fjernes
|
0 |
how
|
Angir om alle (all) eller bare noen (any) verdier må være NaN.
|
any
|
thresh
|
Angir minimum antall ikke-NaN-verdier en rad eller kolonne må ha for å unngå å bli fjernet; kan ikke kombineres med how.
|
valgfritt |
subset
|
Angir hvilke rader eller kolonner som skal vurderes | valgfritt |
inplace
|
Bestemmer om operasjonen skal utføres på den opprinnelige DataFrame | False
|
ignore_index
|
Hvis True, blir den gjenværende aksen merket fra 0 til n-1.
|
False
|
Hvordan bruke pandas DataFrame.dropna()
Pandas dropna() brukes til å rense data før de analyseres. Fjerning av rader eller kolonner med manglende verdier bidrar til å forhindre skjevheter i statistiske evalueringer. Siden manglende verdier også kan føre til problemer med datavisualisering, er det også en fordel å bruke funksjonen når man lager diagrammer og rapporter.
Fjerne rader med manglende verdier
I det følgende eksemplet skal vi se på en DataFrame som inneholder NaN-verdier:
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 slik ut:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 4.0 8.0 12Neste skal vi bruke pandas dropna() -funksjonen:
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)pythonKjøring av koden ovenfor gir følgende resultat:
A B C
0 1.0 5.0 9
3 4.0 8.0 12Siden alle de andre radene inneholder NaN-verdier, er det bare den nullte og tredje raden som gjenstår.
Fjerne kolonner med manglende verdier
På samme måte kan du fjerne kolonner med manglende verdier ved å sette 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 kolonnen som gjenstår, siden den er den eneste som ikke inneholder NaN-verdier:
C
0 9
1 10
2 11
3 12Bruker thresh
Hvis du vil fjerne rader som inneholder færre enn to ikke-NaN-verdier, kan du bruke parameteren thresh:
## Only keeps rows that have 2 or more non-NaN values
df_thresh = df.dropna(thresh=2)
print(df_thresh)pythonKjøring av koden gir følgende utdata:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12Rad 1 blir ikke fjernet fra utdataene fordi den inneholder to ikke-NaN-verdier (2,0 og 10).
Bruker subset
Parameteren subset lar deg spesifisere kolonnene der programmet skal lete etter manglende verdier. Bare rader som inneholder manglende verdier i de angitte kolonnene, vil bli fjernet.
## Removes all rows where column A contains a NaN value
df_subset = df.dropna(subset=['A'])
print(df_subset)pythonHer fjernes bare den andre raden. NaN-verdien i den første raden ignoreres på grunn av delmengdeparameteren, som bare tar hensyn til kolonne A:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12