Gabay sa NaN sa Python: Paano Hawakan ang Nawawalang Float

1. Paraan ng pag-detect ng NaN sa Python

Ano ang NaN?

Ang NaN(Not a Number) ay isang espesyal na halaga ng floating-point na naglalarawan na ang numerong operasyon ay hindi wasto o hindi tinukoy. Karaniwan itong lumilitaw bilang resulta ng paghahati sa zero o ng hindi wastong operasyon, kaya’t kailangang mag-ingat lalo na sa pagsusuri ng datos at numerikal na pagproseso. Kung hindi tama ang paghawak sa NaN, maaaring maging hindi tumpak ang mga resulta ng kalkulasyon o hindi gumana nang ayon sa inaasahan ang programa.

Kahalagahan ng Pag-detect ng NaN

Kapag kasama ang NaN sa isang dataset, maaaring maapektuhan ang pagiging mapagkakatiwalaan ng datos at ang mga resulta ng kalkulasyon. Dahil dito, mahalagang unang tukuyin ang NaN at pagkatapos ay isagawa nang tama ang mga susunod na hakbang (tulad ng pagtanggal, pagpapalit, atbp.).

2. Paraan ng Paglikha ng NaN

Sa Python, maaaring lumikha ng NaN gamit ang float('nan'). Ginagamit ito upang hayagang ipakita ang hindi wastong resulta sa mga numerikal na kalkulasyon.
num = float('nan')
print(num)  # Resulta: nan

Pagkakaiba sa None

Bagaman ang NaN ay numerikal na hindi wasto, ang None ay nagpapahiwatig ng “walang anumang bagay” na kalagayan. Maaaring ikumpara ang None gamit ang ==, ngunit ang NaN ay hindi pantay kahit na ikumpara sa sarili, kaya ang paggamit ng == para sa paghuhusga ay hindi angkop.
num = float('nan')
print(num == num)  # Resulta: False

none_value = None
print(none_value == None)  # Resulta: True

3. Pamamaraan ng Pagtukoy sa NaN

3.1. Pagtukoy gamit ang Standard Library(math.isnan()

Upang matukoy ang NaN gamit ang standard library ng Python, gamitin ang math.isnan(). Ang function na ito ay nagbabalik ng True kung ang ibinigay na halaga ay NaN.
import math

num = float('nan')
print(math.isnan(num))  # Resulta: True

3.2. Pagtukoy gamit ang NumPy(numpy.isnan()

Ang NumPy ay isang library na nakatuon sa pagkalkula ng mga array at matrix, at nag-aalok ng function na numpy.isnan() para epektibong matukoy ang NaN sa loob ng mga array. Madalas itong ginagamit sa numerikal na pagsusuri at siyentipikong pagproseso ng datos.
import numpy as np

num_list = [1, 2, np.nan, 4]
print(np.isnan(num_list))  # Resulta: [False False  True False]

3.3. Pagtukoy gamit ang pandas(pandas.isna()

Kapag nagtatrabaho sa mga DataFrame, gamitin ang isna() o isnull() ng pandas upang matukoy ang NaN. Ang mga function na ito ay kapaki-pakinabang sa paglilinis ng data at paghawak ng mga nawawalang halaga.
import pandas as pd
import numpy as np

data = pd.Series([1, 2, np.nan, 4])
print(pd.isna(data))  # Resulta: 0    False
                      #      1    False
                      #      2     True
                      #      3    False

4. Paraan ng pagtanggal at pagpapalit ng NaN

4.1. Pagtanggal ng NaN mula sa listahan

Para tanggalin ang NaN sa loob ng listahan, maaaring pagsamahin ang math.isnan() at list comprehension.
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)  # Resulta: [1, 2, 4]

4.2. Pagtanggal ng NaN gamit ang pandas (dropna())

Kung aalisin ang NaN mula sa DataFrame, gamitin ang dropna() method. Sa ganitong paraan, matatanggal ang mga row o column na may NaN.
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. Pagpapalit ng NaN gamit ang pandas (fillna())

Kung hindi nais tanggalin ang NaN kundi palitan ito ng isang tiyak na halaga, gamitin ang fillna() method.
import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6]})
df.fillna(0, inplace=True)
print(df)
侍エンジニア塾

5. Pagkalkulang may NaN

Ang mga kalkulasyon na may kasamang NaN ay magreresulta rin sa NaN, kaya upang makakuha ng tumpak na resulta, kailangan munang alisin o palitan ang NaN.
import numpy as np

result = 10 + np.nan
print(result)  # Resulta: nan

Halimbawa ng estadistikal na kalkulasyon na may NaN

Kapag gumagawa ng estadistikal na kalkulasyon sa dataset na may NaN at nais mong huwag isama ang NaN sa pagkalkula, gamitin ang function na nanmean() ng NumPy. Kinakalkula nito ang average na hindi isinasama ang NaN.
import numpy as np

data = [1, 2, np.nan, 4]
mean = np.nanmean(data)  # Kalkulahin ang average na hindi isinasama ang NaN
print(mean)  # Resulta: 2.3333...

6. Mga Paalala sa Pagtukoy ng NaN

6.1. Pag-uugali ng mga Operator ng Paghahambing

Ang NaN ay may natatanging katangian na kahit ihambing mo ito sa ibang numero o sa sarili nito gamit ang mga operator ng paghahambing, hindi ito magiging katumbas. Dahil dito, hindi maaaring gamitin ang == o != para sa pagtukoy, at kailangan gumamit ng mga espesyal na function (tulad ng isnan() o isna()).
num = float('nan')
print(num == num)  # Resulta: False

6.2. Mga Punto sa Paglilinis ng Data

Sa pagsusuri ng data, kung mananatili ang NaN, hindi makakakuha ng tumpak na kalkulasyon. Dahil maaaring maiba ang mga resulta, kailangan ng maayos na paglilinis nang maaga. Sa pamamagitan ng wastong pagtanggal o pagpapalit ng NaN, maaaring mapabuti ang pagiging mapagkakatiwalaan ng data.

7. Buod

Sa Python, sa pamamagitan ng paggamit ng math, numpy, at pandas, maaaring epektibong matukoy at maproseso ang NaN. Ang tamang pag-unawa sa kung paano hawakan ang NaN, at ang pagkakaroon ng batayang kaalaman upang mapanatili ang pagiging maaasahan ng pagsusuri ng datos at numerong kalkulasyon ay isang kasanayan na kapaki-pakinabang sa lahat ng larangan ng programming.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール