Kuinka puhdistaa dataa pandas-kirjastossa dropna()-funktiolla
Python pandas DataFrame.dropna() -funktiota käytetään poistamaan kaikki rivit tai sarakkeet, jotka sisältävät puuttuvia arvoja (NaN) DataFrame-taulukosta. Tämä tekee siitä erityisen tärkeän datan valmistelussa ja puhdistamisessa.
Mikä on pandas dropna():n syntaksi?
dropna() -funktio hyväksyy enintään viisi parametria. Sen syntaksi on seuraava:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)pythonTärkeät parametrit dropna()
Voit käyttää parametreja vaikuttamaan pandas DataFrame.dropna() -funktion toimintaan. Tässä on yhteenveto tärkeimmistä parametreista:
| Parametri | Kuvaus | Oletusarvo |
|---|---|---|
axis
|
Määrittää, poistetaanko rivejä (0 tai index) vai sarakkeita (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 sarakkeessa on oltava, jotta se ei poisteta; ei voi yhdistää kohtaan how
|
valinnainen |
subset
|
Määrittää, mitkä rivit tai sarakkeet on otettava huomioon | valinnainen |
inplace
|
Määrittää, suoritetaanko operaatio alkuperäisessä DataFrame-kehyksessä. | 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 puhdistamiseen ennen niiden analysointia. Puuttuvia arvoja sisältävien rivien tai sarakkeiden poistaminen auttaa estämään tilastollisten arvioiden vääristymistä. Koska puuttuvat arvot voivat aiheuttaa ongelmia myös tietojen visualisoinnissa, tämän toiminnon käyttö on edullista myös kaavioiden ja raporttien luomisessa.
Puuttuvia arvoja sisältävien rivien poistaminen
Seuraavassa esimerkissä tarkastelemme 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)pythonDataFrame 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 12Seuraavaksi sovellamme pandas dropna() -funktiota:
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)pythonYllä olevan koodin suorittaminen tuottaa seuraavan tuloksen:
A B C
0 1.0 5.0 9
3 4.0 8.0 12Koska kaikki muut rivit sisältävät NaN-arvoja, vain nollas ja kolmas rivi jäävät jäljelle.
Puuttuvia arvoja sisältävien sarakkeiden poistaminen
Vastaavasti voit poistaa sarakkeet, joissa on puuttuvia arvoja, asettamalla parametrin axis arvoksi 1:
## Remove all columns that contain at least one NaN value
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)pythonSarakkeesta C jää jäljelle ainoastaan yksi sarake, koska se on ainoa, joka ei sisällä NaN-arvoja:
C
0 9
1 10
2 11
3 12Käyttämällä thresh
Jos haluat poistaa rivit, jotka sisältävät vähemmän kuin kaksi ei-NaN-arvoa, voit käyttää parametria thresh:
## Only keeps rows that have 2 or more non-NaN values
df_thresh = df.dropna(thresh=2)
print(df_thresh)pythonKoodin suorittaminen tuottaa seuraavan tuloksen:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12Rivi 1 ei poisteta tulosteesta, koska se sisältää 2 ei-NaN-arvoa (2,0 ja 10).
Käyttämällä subset
Parametrilla subset voit määrittää sarakkeet, joista ohjelma etsii puuttuvia arvoja. Vain rivit, jotka sisältävät puuttuvia arvoja määritetyissä sarakkeissa, poistetaan.
## Removes all rows where column A contains a NaN value
df_subset = df.dropna(subset=['A'])
print(df_subset)pythonTässä vain toinen rivi poistetaan. Ensimmäisen 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