Funkce Python pandas DataFrame.dropna() se používá k odstranění všech řádků nebo sloupců obsahujících chybějící hodnoty (NaN) z DataFrame. To je zvláště důležité pro přípravu a čištění dat.

Jaká je syntaxe pro pandas dropna()?

Funkce dropna() přijímá až pět parametrů. Zde je její syntaxe:

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

Důležité parametry pro dropna()

Pomocí parametrů můžete ovlivnit chování funkce pandas DataFrame.dropna(). Zde je přehled těch nejdůležitějších:

Parametr Popis Výchozí hodnota
axis Určuje, zda budou odstraněny řádky (0 nebo index) nebo sloupce (1 nebo columns). 0
how Určuje, zda musí být všechny (all) nebo pouze některé (any) hodnoty NaN. any
thresh Určuje minimální počet hodnot, které nejsou NaN, které musí řádek nebo sloupec obsahovat, aby nebyl odstraněn; nelze kombinovat s how volitelné
subset Určuje, které řádky nebo sloupce by měly být považovány za volitelné
inplace Určuje, zda se operace provádí na původním DataFrame. False
ignore_index Pokud True, zbývající osa je označena od 0 do n-1 False

Jak používat pandas DataFrame.dropna()

Pandas dropna() se používá k čištění dat před jejich analýzou. Odstranění řádků nebo sloupců s chybějícími hodnotami pomáhá zabránit zkreslení statistických vyhodnocení. Vzhledem k tomu, že chybějící hodnoty mohou také vést k problémům s vizualizací dat, je použití této funkce výhodné také při vytváření grafů a reportů.

Odstranění řádků s chybějícími hodnotami

V následujícím příkladu se podíváme na DataFrame obsahující 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 vypadá 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

Dále použijeme funkci pandas dropna():

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

Spuštění výše uvedeného kódu vede k následujícímu výsledku:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Jelikož všechny ostatní řádky obsahují hodnoty NaN, zůstávají pouze nultý a třetí řádek.

Odstranění sloupců s chybějícími hodnotami

Podobně můžete odstranit sloupce s chybějícími hodnotami nastavením parametru 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

Sloupec C je jediný sloupec, který zůstává, protože je jediný, který neobsahuje hodnoty NaN:

C
0   9
1  10
2  11
3  12

Použití thresh

Pokud chcete odstranit řádky, které obsahují méně než dvě hodnoty jiné než NaN, můžete použít parametr thresh:

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

Spuštění kódu vygeneruje následující výstup:

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

Řádek 1 není z výstupu odstraněn, protože obsahuje 2 hodnoty, které nejsou NaN (2,0 a 10).

Použití subset

Parametr subset umožňuje určit sloupce, ve kterých má program hledat chybějící hodnoty. Odstraněny budou pouze řádky, které obsahují chybějící hodnoty ve sloupcích, které byly určeny.

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

Zde je odstraněn pouze druhý řádek. Hodnota NaN v prvním řádku je ignorována kvůli parametru subset, který bere v úvahu pouze sloupec A:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Přejít do hlavního menu