Kaip valyti duomenis pandas naudojant dropna()
Python pandas DataFrame.dropna() funkcija naudojama pašalinti visas eilutes ar stulpelius, kuriuose yra trūkstamų verčių (NaN), iš DataFrame. Tai ypač svarbu ruošiant ir valant duomenis.
Kokia yra pandas dropna() sintaksė?
dropna() funkcija priima iki penkių parametrų. Štai jos sintaksė:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)pythonSvarbūs parametrai dropna()
Parametrus galite naudoti, kad paveiktumėte pandas DataFrame.dropna() funkcijos veikimą. Čia pateikiama svarbiausių parametrų apžvalga:
| Parametras | Aprašymas | Numatytasis vertė |
|---|---|---|
axis
|
Nustato, ar bus pašalintos eilutės (0 arba index) ar stulpeliai (1 arba columns)
|
0 |
how
|
Nurodo, ar visos (all) ar tik kai kurios (any) reikšmės turi būti NaN.
|
any
|
thresh
|
Nurodo mažiausią ne NaN verčių skaičių, kurį turi turėti eilutė arba stulpelis, kad nebūtų pašalintas; negali būti derinamas su how
|
pasirinktinai |
subset
|
Nurodo, kurios eilutės ar stulpeliai turėtų būti laikomi | pasirinktinai |
inplace
|
Nustato, ar operacija atliekama su originalia DataFrame | False
|
ignore_index
|
Jei True, likusi ašis pažymima nuo 0 iki n-1.
|
False
|
Kaip naudoti pandas DataFrame.dropna()
Pandas dropna() naudojamas duomenims valyti prieš juos analizuojant. Trūkstamų verčių eilučių ar stulpelių pašalinimas padeda išvengti statistinių vertinimų iškraipymų. Kadangi trūkstamos vertės taip pat gali sukelti problemų vizualizuojant duomenis, šią funkciją naudinga taikyti ir kuriant diagramas bei ataskaitas.
Eilučių su trūkstamomis reikšmėmis pašalinimas
Šiame pavyzdyje pažvelgsime į DataFrame, kuriame yra NaN reikšmės:
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)pythonDuomenų rėmelis atrodo taip:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 4.0 8.0 12Toliau taikysime pandas dropna() funkciją:
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)pythonVykdant aukščiau pateiktą kodą gaunamas toks rezultatas:
A B C
0 1.0 5.0 9
3 4.0 8.0 12Kadangi visos kitos eilutės turi NaN reikšmes, lieka tik nulinė ir trečioji eilutės.
Stulpelių su trūkstamomis reikšmėmis pašalinimas
Panašiai, galite pašalinti stulpelius su trūkstamomis reikšmėmis, nustatydami parametrą axis į 1:
## Remove all columns that contain at least one NaN value
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)pythonC stulpelis yra vienintelis likęs stulpelis, nes jis yra vienintelis, kuriame nėra NaN verčių:
C
0 9
1 10
2 11
3 12Naudojant thresh
Jei norite pašalinti eilutes, kuriose yra mažiau nei dvi ne NaN reikšmės, galite naudoti parametrą thresh:
## Only keeps rows that have 2 or more non-NaN values
df_thresh = df.dropna(thresh=2)
print(df_thresh)pythonVykdant kodą gaunamas toks rezultatas:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 121 eilutė nėra pašalinta iš išvesties, nes joje yra 2 ne NaN reikšmės (2,0 ir 10).
Naudojant subset
subset parametras leidžia nurodyti stulpelius, kuriuose programa turi ieškoti trūkstamų verčių. Bus pašalintos tik tos eilutės, kurių nurodytuose stulpeliuose yra trūkstamų verčių.
## Removes all rows where column A contains a NaN value
df_subset = df.dropna(subset=['A'])
print(df_subset)pythonČia pašalinama tik antra eilutė. Pirmoje eilutėje esanti NaN reikšmė ignoruojama dėl parametro subset, kuris atsižvelgia tik į A stulpelį:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12