Panduan Lengkap NaN di Python: Cara Menangani Nilai Hilang

1. Cara Menentukan NaN di Python

Apa itu NaN?

NaN (Not a Number) adalah floating-point khusus yang menunjukkan bahwa operasi numerik tidak valid atau tidak terdefinisi. Biasanya muncul sebagai hasil pembagian dengan nol atau operasi yang tidak valid, sehingga perlu perhatian khusus dalam analisis data dan pemrosesan numerik. Jika NaN tidak ditangani dengan benar, hasil perhitungan dapat menjadi tidak akurat dan program mungkin tidak berfungsi sebagaimana mestinya.

Pentingnya Menentukan NaN

Jika NaN terdapat dalam dataset, keandalan data dan hasil perhitungan dapat terpengaruh. Oleh karena itu, penting untuk pertama-tama menentukan NaN, kemudian melakukan penanganan yang tepat (seperti penghapusan, penggantian, dll.).

2. Cara Membuat NaN

Di Python, NaN dapat dibuat dengan float('nan'). Digunakan untuk secara eksplisit menunjukkan hasil yang tidak valid dalam perhitungan numerik.
num = float('nan')
print(num)  # hasil: nan

Perbedaan dengan None

NaN tidak valid secara numerik, sedangkan None menunjukkan keadaan “tidak ada apa-apa”. None dapat dibandingkan dengan ==, tetapi NaN tidak sama dengan dirinya sendiri, sehingga penilaian dengan == tidak tepat.
num = float('nan')
print(num == num)  # hasil: False

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

3. Cara Menentukan NaN

3.1. Penentuan dengan Library Standar(math.isnan()

Untuk menentukan NaN dengan library standar Python, gunakan math.isnan(). Fungsi ini mengembalikan True jika nilai yang diberikan adalah NaN.
import math

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

3.2. Penentuan dengan NumPy(numpy.isnan()

NumPy adalah library yang khusus untuk perhitungan array dan matriks, menyediakan fungsi numpy.isnan() untuk menentukan NaN dalam array secara efisien. Sering digunakan dalam analisis numerik dan pemrosesan data ilmiah.
import numpy as np

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

3.3. Penentuan dengan pandas(pandas.isna()

Saat menangani DataFrame, gunakan isna() atau isnull() dari pandas untuk menentukan NaN. Fungsi-fungsi ini membantu dalam pembersihan data dan penanganan nilai yang hilang.
import pandas as pd
import numpy as np

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

4. Cara Menghapus & Mengganti NaN

4.1. Menghapus NaN dari List

Untuk menghapus NaN yang ada dalam list, Anda dapat menggabungkan math.isnan() dengan 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)  # Hasil: [1, 2, 4]

4.2. Menghapus NaN dengan pandas (dropna())

Jika ingin menghapus NaN dari DataFrame, gunakan metode dropna(). Ini akan menghapus baris atau kolom yang mengandung 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(df)

4.3. Mengganti NaN dengan pandas (fillna())

Jika tidak ingin menghapus NaN tetapi mengganti dengan nilai tertentu, gunakan metode fillna().
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. Perhitungan yang Mengandung NaN

Perhitungan yang mengandung NaN akan menghasilkan NaN juga, sehingga untuk mendapatkan hasil yang akurat, Anda perlu menghapus atau mengganti NaN terlebih dahulu.
import numpy as np

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

Contoh Perhitungan Statistik yang Mengandung NaN

Saat melakukan perhitungan statistik pada dataset yang mengandung NaN dan ingin mengabaikan NaN, gunakan fungsi nanmean() dari NumPy. Fungsi ini menghitung nilai rata-rata dengan mengecualikan NaN.
import numpy as np

data = [1, 2, np.nan, 4]
mean = np.nanmean(data)  # Mengabaikan NaN untuk menghitung rata-rata
print(mean)  # hasil: 2.3333...

6. Catatan tentang Penentuan NaN

6.1. Perilaku Operator Perbandingan

NaN memiliki sifat khusus dimana tidak sama dengan nilai lain atau dirinya sendiri ketika dibandingkan menggunakan operator perbandingan. Oleh karena itu, tidak dapat melakukan penilaian dengan == atau !=, dan perlu menggunakan fungsi khusus (isnan() atau isna()).
num = float('nan')
print(num == num)  # hasil: False

6.2. Poin Penting saat Pembersihan Data

Dalam analisis data, NaN yang tersisa tidak memungkinkan perhitungan yang akurat. Karena dapat mengubah hasil perhitungan, pembersihan yang tepat diperlukan sebelumnya. Dengan menghapus atau mengganti NaN secara tepat, keandalan data dapat ditingkatkan.

7. Ringkasan

Di Python, dengan memanfaatkan math, numpy, pandas, Anda dapat menentukan dan memproses NaN secara efisien. Memahami cara menangani NaN dengan benar, serta memperoleh pengetahuan dasar untuk menjaga keandalan analisis data dan perhitungan numerik, adalah keterampilan yang berguna di semua bidang pemrograman.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール