Jak vyčistit data v pandas pomocí dropna()
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)pythonDů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)pythonDataFrame 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 12Dále použijeme funkci pandas dropna():
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)pythonSpuš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 12Jelikož 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)pythonSloupec C je jediný sloupec, který zůstává, protože je jediný, který neobsahuje hodnoty NaN:
C
0 9
1 10
2 11
3 12Použ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)pythonSpuš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)pythonZde 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