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)
python

Dô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)
python

DataFrame 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)
python

Spustení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 12

Keďž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)
python

Stĺ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  12

Použ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)
python

Spustení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  12

Riadok 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)
python

Tu 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
Prejsť na hlavné menu