Kā tīrīt datus pandās ar dropna()
Python pandas DataFrame.dropna() funkcija tiek izmantota, lai no DataFrame izdzēstu visas rindas vai kolonnas, kas satur trūkstošas vērtības (NaN). Tas padara to īpaši svarīgu datu sagatavošanai un tīrīšanai.
Kāda ir pandas dropna() sintakse?
Funkcija dropna() pieņem līdz pieciem parametriem. Šeit ir tās sintakse:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)pythonSvarīgi parametri dropna()
Jūs varat izmantot parametrus, lai ietekmētu pandas DataFrame.dropna() funkcijas darbību. Šeit ir pārskats par svarīgākajiem parametriem:
| Parametrs | Apraksts | Noklusējuma 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.
|
neobligāts |
subset
|
Norāda, kuras rindas vai kolonnas jāuzskata par | fakultatī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 statistisko novērtējumu neobjektivitāti. Tā kā trūkstošās vērtības var radīt arī problēmas ar datu vizualizāciju, šīs funkcijas izmantošana ir izdevīga arī diagrammu un ziņojumu izveidē.
Rindu ar trūkstošām vērtībām dzēšana
Šajā piemērā apskatī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)pythonDataFrame 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 12Tālāk mēs piemērosim pandas dropna() funkciju:
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)pythonIzpildot iepriekš minēto kodu, tiek iegūts šāds rezultāts:
A B C
0 1.0 5.0 9
3 4.0 8.0 12Tā 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ūkstošā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)pythonKolonna 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 12Izmantojot 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)pythonKoda izpildes rezultāts ir šāds:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 121. rinda netiek izņemta no izvades, jo tajā ir 2 vērtības, kas nav NaN (2,0 un 10).
Izmantojot subset
subset parametrs ļauj norādīt kolonnes, kurās programmai jāmeklē trūkstošās vērtības. Tiks dzēstas tikai rindas, kurās norādītajās kolonās ir trūkstoš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