Python pandas DataFrame.dropna() -funktiota käytetään pois­ta­maan kaikki rivit tai sarakkeet, jotka si­säl­tä­vät puuttuvia arvoja (NaN) DataFrame-tau­lu­kos­ta. Tämä tekee siitä erityisen tärkeän datan val­mis­te­lus­sa ja puh­dis­ta­mi­ses­sa.

Mikä on pandas dropna():n syntaksi?

dropna() -funktio hyväksyy enintään viisi pa­ra­met­ria. Sen syntaksi on seuraava:

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

Tärkeät pa­ra­met­rit dropna()

Voit käyttää pa­ra­met­re­ja vai­kut­ta­maan pandas DataFrame.dropna() -funktion toi­min­taan. Tässä on yh­teen­ve­to tär­keim­mis­tä pa­ra­met­reis­ta:

Parametri Kuvaus Ole­tusar­vo
axis Määrittää, pois­te­taan­ko rivejä (0 tai index) vai sa­rak­kei­ta (1 tai columns) 0
how Määrittää, onko kaikkien (all) vai vain joidenkin (any) arvojen oltava NaN. any
thresh Määrittää, kuinka monta ei-NaN-arvoa rivillä tai sa­rak­kees­sa on oltava, jotta se ei poisteta; ei voi yhdistää kohtaan how va­lin­nai­nen
subset Määrittää, mitkä rivit tai sarakkeet on otettava huomioon va­lin­nai­nen
inplace Määrittää, suo­ri­te­taan­ko operaatio al­ku­pe­räi­ses­sä DataFrame-ke­hyk­ses­sä. False
ignore_index Jos True, jäljellä oleva akseli nimetään 0:sta n-1:een. False

Kuinka käyttää pandas DataFrame.dropna()

Pandas dropna() käytetään tietojen puh­dis­ta­mi­seen ennen niiden ana­ly­soin­tia. Puuttuvia arvoja si­säl­tä­vien rivien tai sa­rak­kei­den pois­ta­mi­nen auttaa estämään ti­las­tol­lis­ten arvioiden vää­ris­ty­mis­tä. Koska puuttuvat arvot voivat aiheuttaa ongelmia myös tietojen vi­sua­li­soin­nis­sa, tämän toiminnon käyttö on edullista myös kaa­vioi­den ja ra­port­tien luo­mi­ses­sa.

Puuttuvia arvoja si­säl­tä­vien rivien pois­ta­mi­nen

Seu­raa­vas­sa esi­mer­kis­sä tar­kas­te­lem­me DataFrame-taulukkoa, joka sisältää NaN-arvoja:

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 näyttää tältä:

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

Seu­raa­vak­si so­vel­lam­me pandas dropna() -funktiota:

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

Yllä olevan koodin suo­rit­ta­mi­nen tuottaa seuraavan tuloksen:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Koska kaikki muut rivit si­säl­tä­vät NaN-arvoja, vain nollas ja kolmas rivi jäävät jäljelle.

Puuttuvia arvoja si­säl­tä­vien sa­rak­kei­den pois­ta­mi­nen

Vas­taa­vas­ti voit poistaa sarakkeet, joissa on puuttuvia arvoja, aset­ta­mal­la pa­ra­met­rin axis arvoksi 1:

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

Sa­rak­kees­ta C jää jäljelle ai­noas­taan yksi sarake, koska se on ainoa, joka ei sisällä NaN-arvoja:

C
0   9
1  10
2  11
3  12

Käyt­tä­mäl­lä thresh

Jos haluat poistaa rivit, jotka si­säl­tä­vät vähemmän kuin kaksi ei-NaN-arvoa, voit käyttää pa­ra­met­ria thresh:

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

Koodin suo­rit­ta­mi­nen tuottaa seuraavan tuloksen:

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

Rivi 1 ei poisteta tu­los­tees­ta, koska se sisältää 2 ei-NaN-arvoa (2,0 ja 10).

Käyt­tä­mäl­lä subset

Pa­ra­met­ril­la subset voit määrittää sarakkeet, joista ohjelma etsii puuttuvia arvoja. Vain rivit, jotka si­säl­tä­vät puuttuvia arvoja mää­ri­te­tyis­sä sa­rak­keis­sa, pois­te­taan.

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

Tässä vain toinen rivi pois­te­taan. En­sim­mäi­sen rivin NaN-arvo ohitetaan, koska osajoukko-parametri ottaa huomioon vain sarakkeen A:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Siirry pää­va­lik­koon