Ako čistiť dáta v pandas pomocou dropna()
Funkcia Python pandas DataFrame.dropna() sa používa na odstránenie všetkých riadkov alebo stĺpcov obsahujúcich chýbajúce hodnoty (NaN) z DataFrame. To je obzvlášť dôležité pri príprave a čistení údajov.
Aká je syntax pre pandas dropna()?
Funkcia dropna() prijíma až päť parametrov. Tu je jej syntax:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)pythonDôležité parametre pre dropna()
Pomocou parametrov môžete ovplyvniť správanie funkcie pandas DataFrame.dropna(). Tu je prehľad tých najdôležitejších:
| Parameter | Popis | Predvolená hodnota |
|---|---|---|
axis
|
Určuje, či budú odstránené riadky (0 alebo index) alebo stĺpce (1 alebo columns).
|
0 |
how
|
Určuje, či všetky (all) alebo len niektoré (any) hodnoty musia byť NaN.
|
any
|
thresh
|
Určuje minimálny počet hodnôt, ktoré nie sú NaN, ktoré musí mať riadok alebo stĺpec, aby nebol odstránený; nemožno kombinovať s how
|
voliteľné |
subset
|
Určuje, ktoré riadky alebo stĺpce by sa mali považovať za | voliteľné |
inplace
|
Určuje, či sa operácia vykonáva na pôvodnom DataFrame. | False
|
ignore_index
|
Ak je hodnota True, zostávajúca os je označená od 0 do n-1.
|
False
|
Ako používať pandas DataFrame.dropna()
Pandas dropna() sa používa na čistenie údajov pred ich analýzou. Odstránenie riadkov alebo stĺpcov s chýbajúcimi hodnotami pomáha predchádzať skresleniu štatistických vyhodnotení. Keďže chýbajúce hodnoty môžu viesť aj k problémom s vizualizáciou údajov, použitie tejto funkcie je výhodné aj pri vytváraní grafov a správ.
Odstránenie riadkov s chýbajúcimi hodnotami
V nasledujúcom príklade sa pozrieme na DataFrame obsahujúci hodnoty NaN:
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 vyzerá takto:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 4.0 8.0 12Ďalej použijeme funkciu pandas dropna():
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)pythonSpustením vyššie uvedeného kódu sa dosiahne nasledujúci výsledok:
A B C
0 1.0 5.0 9
3 4.0 8.0 12Keďže všetky ostatné riadky obsahujú hodnoty NaN, zostávajú len nulový a tretí riadok.
Odstránenie stĺpcov s chýbajúcimi hodnotami
Podobne môžete odstrániť stĺpce s chýbajúcimi hodnotami nastavením parametra axis na hodnotu 1:
## Remove all columns that contain at least one NaN value
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)pythonStĺpec C je jediný stĺpec, ktorý zostáva, pretože je jediný, ktorý neobsahuje hodnoty NaN:
C
0 9
1 10
2 11
3 12Použitie thresh
Ak chcete odstrániť riadky, ktoré obsahujú menej ako dve hodnoty, ktoré nie sú NaN, môžete použiť parameter thresh:
## Only keeps rows that have 2 or more non-NaN values
df_thresh = df.dropna(thresh=2)
print(df_thresh)pythonSpustením kódu sa vytvorí nasledujúci výstup:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12Riadok 1 nie je z výstupu odstránený, pretože obsahuje 2 hodnoty, ktoré nie sú NaN (2,0 a 10).
Použitie subset
Parameter subset umožňuje určiť stĺpce, v ktorých má program hľadať chýbajúce hodnoty. Odstránené budú len riadky, ktoré obsahujú chýbajúce hodnoty v určených stĺpcoch.
## Removes all rows where column A contains a NaN value
df_subset = df.dropna(subset=['A'])
print(df_subset)pythonTu je odstránený len druhý riadok. Hodnota NaN v prvom riadku je ignorovaná kvôli parametru podmnožiny, ktorý zohľadňuje len stĺpec A:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12