A Python pandas DataFrame.dropna() függvényt arra használják, hogy eltávolítsák az összes hiányzó értéket (NaN) tartalmazó sort vagy oszlopot egy DataFrame-ből. Ez különösen fontos az adatok előkészítése és tisztítása során.

Mi a pandas dropna() szintaxisa?

A dropna() függvény legfeljebb öt paramétert fogad el. Íme a szintaxisa:

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

Fontos paraméterek dropna() 14-hez

A paraméterek segítségével befolyásolhatja a pandas DataFrame.dropna() függvény viselkedését. Íme a legfontosabb paraméterek áttekintése:

Paraméter Leírás Alapértelmezett érték
axis Meghatározza, hogy sorok (0 vagy index) vagy oszlopok (1 vagy columns) kerülnek-e eltávolításra. 0
how Meghatározza, hogy az összes (all) vagy csak néhány (any) értéknek NaN-nak kell lennie. any
thresh Meghatározza, hogy egy sor vagy oszlopnak legalább hány nem NaN értékkel kell rendelkeznie ahhoz, hogy ne kerüljön eltávolításra; nem kombinálható how opcionális
subset Meghatározza, mely sorokat vagy oszlopokat kell figyelembe venni. opcionális
inplace Meghatározza, hogy a művelet az eredeti DataFrame-en történik-e. False
ignore_index Ha True, akkor a fennmaradó tengely 0-tól n-1-ig van jelölve. False

A pandák használata DataFrame.dropna()

A Pandas dropna() az adatok elemzése előtti tisztítására szolgál. A hiányzó értékeket tartalmazó sorok vagy oszlopok eltávolítása segít megelőzni a statisztikai értékelések torzítását. Mivel a hiányzó értékek az adatok vizualizálásában is problémákat okozhatnak, a funkció használata diagramok és jelentések készítésekor is előnyös.

Hiányzó értékekkel rendelkező sorok eltávolítása

A következő példában megvizsgálunk egy NaN értékeket tartalmazó DataFrame-et:

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

A DataFrame így néz ki:

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

Ezután alkalmazzuk a pandas dropna() függvényt:

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

A fenti kód futtatása a következő eredményt adja:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Mivel az összes többi sor NaN értékeket tartalmaz, csak a nulladik és a harmadik sor marad meg.

Hiányzó értékekkel rendelkező oszlopok eltávolítása

Hasonlóképpen, a hiányzó értékekkel rendelkező oszlopokat eltávolíthatja úgy, hogy a axis paramétert 1-re állítja:

## Remove all columns that contain at least one NaN value
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
python

A C oszlop az egyetlen oszlop, amely megmarad, mivel ez az egyetlen, amely nem tartalmaz NaN értékeket:

C
0   9
1  10
2  11
3  12

thresh használata

Ha olyan sorokat szeretne eltávolítani, amelyek kevesebb mint két nem NaN értéket tartalmaznak, akkor a thresh paramétert használhatja:

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

A kód futtatása a következő eredményt adja:

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

Az 1. sor nem kerül eltávolításra a kimenetből, mert 2 nem NaN értéket tartalmaz (2,0 és 10).

subset használata

A subset paraméter lehetővé teszi, hogy megadja azokat az oszlopokat, amelyekben a programnak hiányzó értékeket kell keresnie. Csak azok a sorok kerülnek eltávolításra, amelyek a megadott oszlopokban hiányzó értékeket tartalmaznak.

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

Itt csak a második sor kerül eltávolításra. Az első sorban található NaN érték figyelmen kívül marad a subset paraméter miatt, amely csak az A oszlopot veszi figyelembe:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Ugrás a főmenübe