目次
1. Kuidas Pythonis NaN-i tuvastada
Mis on NaN?
NaN (Not a Number) on eriline ujukomaarv, mis tähistab, et arvutus on kehtetu või määramatu. Tavaliselt tekib see jagamisel nulliga või kehtetu arvutustulemuse korral, mistõttu on andmeanalüüsi ja arvutusprotsesside käigus eriti oluline olla ettevaatlik. Kui NaN-i õigesti ei käsitleta, võivad arvutustulemused olla ebatäpsed või programm ei pruugi ootuspäraselt toimida.NaN-i tuvastamise tähtsus
Kui NaN on andmekogumis, võib see mõjutada andmete usaldusväärsust ja arvutustulemusi. Seetõttu on oluline esmalt NaN-i tuvastada ja seejärel teha sobivad toimingud (kustutamine, asendamine jms).2. NaN’i loomise meetod
Pythonis saab NaN-i genereeridafloat('nan')
abil. Seda kasutatakse numbriliste arvutuste puhul kehtetu tulemuse selges märkimisel.num = float('nan')
print(num) # Tulemus: nan
None’iga erinevus
NaN on numbriliselt kehtetu, samas kuiNone
näitab “mitte midagi” olekut. None
on ==
abil võrdluseks võimalik, kuid NaN ei ole iseendaga võrreldes võrdne, seega ==
kasutamine võrdlemiseks on sobimatu.num = float('nan')
print(num == num) # Tulemus: False
none_value = None
print(none_value == None) # Tulemus: True

3. NaN tuvastamise meetod
3.1. Tuvastamine standardraamatukoguga(math.isnan()
)
Pythoni standardraamatukogus NaN-i tuvastamiseks kasutatakse math.isnan()
. See funktsioon tagastab True
, kui antud väärtus on NaN.import math
num = float('nan')
print(math.isnan(num)) # Tulemus: True
3.2. NumPy abil tuvastamine(numpy.isnan()
)
NumPy on massiivide ja maatriksite arvutamisele keskendunud teek, mis pakub numpy.isnan()
funktsiooni NaN-i tõhusaks tuvastamiseks massiivides. seda kasutatakse sageli numbrilises analüüsis ja teadusandmete töötlemisel.import numpy as np
num_list = [1, 2, np.nan, 4]
print(np.isnan(num_list)) # Tulemus: [False False True False]
3.3. pandasiga tuvastamine(pandas.isna()
)
Andmete raamistikuga töötamisel kasutatakse pandas’i isna()
või isnull()
funktsioone NaN-i tuvastamiseks. Need funktsioonid on kasulikud andmete puhastamisel ja puuduvate väärtuste töötlemisel.import pandas as pd
import numpy as np
data = pd.Series([1, 2, np.nan, 4])
print(pd.isna(data)) # Tulemus: 0 False
# 1 False
# 2 True
# 3 False
4. NaN’i eemaldamise ja asendamise meetodid
4.1. NaN’i eemaldamine loendist
Loendis olevate NaN-de eemaldamiseks saab kombineeridamath.isnan()
ja loendi mõistete kasutamist.import math
num_list = [1, 2, float('nan'), 4]
clean_list = [num for num in num_list if not math.isnan(num)]
print(clean_list) # Tulemuseks: [1, 2, 4]
4.2. NaN’i eemaldamine pandasiga (dropna()
)
Andmeraamist NaN-de eemaldamiseks kasutatakse dropna()
-meetodit. Sellega saab eemaldada NaN-e sisaldavad read või veerud.import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6]})
clean_df = df.dropna()
print(clean_df)
4.3. NaN’i asendamine pandasiga (fillna()
)
Kui NaN-e ei soovita eemaldada, vaid asendada kindla väärtusega, kasutatakse fillna()
-meetodit.import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np, 6]})
df.fillna(0, inplace=True)
print(df)

5. NaN-ga sisaldavad arvutused
NaN-ga sisaldavad arvutused annavad tulemuseks ka NaN, seega täpse tulemuse saamiseks tuleb NaN eelnevalt eemaldada või asendada.import numpy as np
result = 10 + np.nan
print(result) # Tulem: nan
NaN-ga sisaldavate statistiliste arvuste näide
Kui teete statistilisi arvutusi NaN-i sisaldaval andmekogul ja soovite NaN-i ignoreerida, kasutage NumPy funktsiooninanmean()
. See arvutab keskmise, jättes NaN-i välja.import numpy as np
data = [1, 2, np.nan, 4]
mean = np.nanmean(data) # Ignorides NaN-i, arvutab keskmise
print(mean) # Tulem: 2.3333...
6. NaN-i tuvastamise kohta tähelepanekud
6.1. Võrdlusoperaatori käitumine
NaN-l on eriline omadus, et võrdlusoperaatoritega ei ole see teiste arvudega ega iseendaga võrdselt võrreldav. Seetõttu ei saa seda==
või !=
abil tuvastada ning tuleb kasutada spetsiaalseid funktsioone (isnan()
või isna()
).num = float('nan')
print(num == num) # tulemus: False
6.2. Andmete puhastamise punktid
Andmeanalüüsis ei saa täpseid arvutusi teha, kui NaN-id jäävad alles. Kuna need võivad tulemusi moonutada, on vajalik eelnev korralik puhastamine. NaN-ide asjakohane eemaldamine või asendamine suurendab andmete usaldusväärsust.7. Kokkuvõte
Pythonis saabmath
, numpy
ja pandas
kasutamisega tõhusalt NaN-i tuvastada ja töödelda. NaN-i käsitlemise õige mõistmine ning andmeanalüüsi ja arvutuslike arvutuste usaldusväärsuse tagamiseks vajalike põhiteadmiste omandamine on oskus, mis on kasulik kõigis programmeerimisvaldkondades.