Hogyan tisztítsuk meg az adatokat a pandasban a dropna() segítségével?
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)pythonFontos 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)pythonA 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 12Ezutá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)pythonA 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 12Mivel 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)pythonA 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 12thresh 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)pythonA 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 12Az 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)pythonItt 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