Python pandas DataFrame.dropna() funkcija tiek izmantota, lai no DataFrame izdzēstu visas rindas vai kolonnas, kas satur trūk­sto­šas vērtības (NaN). Tas padara to īpaši svarīgu datu sa­ga­ta­vo­ša­nai un tīrīšanai.

Kāda ir pandas dropna() sintakse?

Funkcija dropna() pieņem līdz pieciem pa­ra­met­riem. Šeit ir tās sintakse:

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

Svarīgi parametri dropna()

Jūs varat izmantot pa­ra­met­rus, lai ietekmētu pandas DataFrame.dropna() funkcijas darbību. Šeit ir pārskats par sva­rī­gā­ka­jiem pa­ra­met­riem:

Parametrs Apraksts No­klu­sē­ju­ma vērtība
axis Nosaka, vai tiks noņemtas rindas (0 vai index) vai kolonnas (1 vai columns) 0
how Norāda, vai visām (all) vai tikai dažām (any) vērtībām jābūt NaN any
thresh Norāda minimālo ne-NaN vērtību skaitu, kas jābūt rindā vai kolonnā, lai tā netiktu izdzēsta; nevar apvienot ar how. ne­ob­li­gāts
subset Norāda, kuras rindas vai kolonnas jāuzskata par fa­kul­ta­tī­vas
inplace Nosaka, vai darbība tiek veikta ar sākotnējo DataFrame False
ignore_index Ja True, atlikusī ass tiek marķēta no 0 līdz n-1 False

Kā lietot pandas DataFrame.dropna()

Pandas dropna() tiek izmantots, lai attīrītu datus pirms to analīzes. Trūkstošo vērtību rindu vai kolonnu izņemšana palīdz novērst sta­tis­tis­ko no­vēr­tē­ju­mu ne­ob­jek­ti­vi­tā­ti. Tā kā trūk­sto­šās vērtības var radīt arī problēmas ar datu vi­zua­li­zā­ci­ju, šīs funkcijas iz­man­to­ša­na ir izdevīga arī diagrammu un ziņojumu izveidē.

Rindu ar trūk­sto­šām vērtībām dzēšana

Šajā piemērā ap­ska­tī­sim DataFrame, kas satur NaN vērtības:

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 izskatās šādi:

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

Tālāk mēs pie­mē­ro­sim pandas dropna() funkciju:

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

Izpildot iepriekš minēto kodu, tiek iegūts šāds rezultāts:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Tā kā visas pārējās rindas satur NaN vērtības, paliek tikai nulles un trešā rinda.

Trūkstošo vērtību kolonnu dzēšana

Līdzīgi varat noņemt kolonnu ar trūk­sto­šām vērtībām, iestatot parametru axis uz 1:

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

Kolonna C ir vienīgā kolonna, kas paliek, jo tā ir vienīgā, kas nesatur NaN vērtības:

C
0   9
1  10
2  11
3  12

Iz­man­to­jot thresh

Ja vēlaties izdzēst rindas, kurās ir mazāk nekā divas NaN vērtības, varat izmantot parametru thresh:

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

Koda izpildes rezultāts ir šāds:

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

1. rinda netiek izņemta no izvades, jo tajā ir 2 vērtības, kas nav NaN (2,0 un 10).

Iz­man­to­jot subset

subset parametrs ļauj norādīt kolonnes, kurās prog­ram­mai jāmeklē trūk­sto­šās vērtības. Tiks dzēstas tikai rindas, kurās no­rā­dī­ta­jās kolonās ir trūk­sto­šas vērtības.

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

Šeit tiek izņemta tikai otrā rinda. NaN vērtība pirmajā rindā tiek ignorēta, jo parametrs subset ņem vērā tikai A kolonnu:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Go to Main Menu