0Pricing
Pandas & NumPy Academy · Pelajaran

Mendeteksi Nilai yang Hilang

Gunakan isna(), notna(), dan isnull() untuk menemukan lokasi NaN dalam Series atau DataFrame serta menghitung nilai yang hilang di setiap kolom.

Mendeteksi Nilai yang Hilang adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa Itu Nilai yang Hilang di Pandas?

Di Pandas, nilai yang hilang direpresentasikan sebagai NaN (Bukan Angka) untuk kolom numerik dan None atau pd.NaT untuk kolom datetime. Data yang hilang umum ditemukan dalam kumpulan data dunia nyata karena catatan mungkin tidak lengkap, sensor mungkin gagal, atau penggabungan mungkin menghasilkan baris yang tidak memiliki pasangan. Mendeteksi nilai yang hilang selalu menjadi langkah pertama dalam alur kerja pembersihan data.

Pandas menormalkan None, float('nan'), dan numpy.nan menjadi representasi NaN internal yang sama untuk kolom numerik.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'name': ['Alice', None, 'Carol'],
    'age': [25, np.nan, 30],
    'salary': [50000.0, 60000.0, np.nan]
})
print(df)
#     name   age   salary
# 0  Alice  25.0  50000.0
# 1   None   NaN  60000.0
# 2  Carol  30.0      NaN

isna() dan isnull()

isna() dan isnull() sepenuhnya identik — keduanya mengembalikan DataFrame atau Series dengan bentuk yang sama, berisi True di setiap posisi yang nilainya hilang dan False di posisi lainnya. Pandas menyediakan kedua nama tersebut semata-mata berdasarkan preferensi pengguna. Hasilnya dapat langsung digunakan sebagai topeng boolean untuk pemfilteran atau perhitungan lanjutan.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [1, np.nan, 3],
    'B': [np.nan, 2, np.nan]
})

print(df.isna())
#        A      B
# 0  False   True
# 1   True  False
# 2  False   True

# Both are identical
print((df.isna() == df.isnull()).all().all())  # True

notna() untuk Menemukan Nilai yang Tidak Hilang

notna() (yang juga memiliki alias notnull()) adalah kebalikan dari isna() — fungsi ini mengembalikan True ketika nilai ada dan False ketika nilai tersebut hilang. Ini berguna ketika Anda ingin memfilter baris yang memiliki nilai pada kolom penting, misalnya mewajibkan agar kunci utama atau variabel target tidak bernilai NaN.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'id': [1, 2, 3],
    'email': ['a@x.com', None, 'c@x.com']
})

# Keep only rows where email is present
with_email = df[df['email'].notna()]
print(with_email)
#    id    email
# 0   1  a@x.com
# 2   3  c@x.com

Menghitung Nilai yang Hilang per Kolom

Memanggil .isna().sum() pada DataFrame akan menjumlahkan nilai True (yang setara dengan 1) per kolom, sehingga menghasilkan jumlah nilai yang hilang per kolom. Ini adalah langkah awal yang paling berguna untuk memahami kualitas kumpulan data baru — Anda dapat mengetahui kolom mana yang perlu diperhatikan.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'name': ['Alice', None, 'Carol', None],
    'age': [25, np.nan, 30, 22],
    'salary': [50000, 60000, np.nan, np.nan]
})

missing_counts = df.isna().sum()
print(missing_counts)
# name      2
# age       1
# salary    2
# dtype: int64

Persentase Nilai yang Hilang per Kolom

Jumlah absolut nilai NaN kurang berguna dibandingkan persentase nilai yang hilang karena jumlah tersebut bergantung pada ukuran kumpulan data. Membagi isna().sum() dengan jumlah total baris (atau memanggil isna().mean()) menghasilkan fraksi nilai yang hilang, yang dapat Anda kalikan dengan 100 untuk memperoleh persentase. Kolom dengan lebih dari 30–50% nilai yang hilang sering memerlukan keputusan apakah kolom tersebut masih layak dipertahankan.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [1, np.nan, 3, np.nan, 5],
    'B': [np.nan, 2, np.nan, 4, 5],
    'C': [1, 2, 3, 4, 5]
})

missing_pct = (df.isna().mean() * 100).round(1)
print(missing_pct)
# A    40.0
# B    40.0
# C     0.0
# dtype: float64

Tabel Ringkasan Nilai yang Hilang

Pola EDA yang umum adalah membuat tabel ringkasan nilai yang hilang yang menampilkan jumlah, persentase, dan dtype setiap kolom dalam satu tampilan. Ini memberikan gambaran lengkap tentang kualitas data sebelum Anda mengambil keputusan pembersihan. Anda dapat mengurutkannya untuk menampilkan kolom yang paling bermasalah terlebih dahulu.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'col_a': [1, np.nan, 3],
    'col_b': [np.nan, np.nan, 3],
    'col_c': [1, 2, 3]
})

summary = pd.DataFrame({
    'missing_count': df.isna().sum(),
    'missing_pct': (df.isna().mean() * 100).round(1),
    'dtype': df.dtypes
}).sort_values('missing_pct', ascending=False)
print(summary)
#         missing_count  missing_pct   dtype
# col_b               2         66.7  float64
# col_a               1         33.3  float64
# col_c               0          0.0  float64

Jumlah Nilai yang Hilang pada Tingkat Baris

Anda juga dapat menghitung nilai yang hilang per baris dengan memanggil isna().sum(axis=1). Ini membantu mengidentifikasi catatan yang sebagian besar kosong (misalnya, respons survei yang tidak lengkap), yang mungkin ingin Anda tandai atau hapus sebagai satu kesatuan. Baris dengan banyak nilai yang hilang pada dasarnya berbeda dari nilai yang hilang secara tersebar di tingkat kolom.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'a': [1, np.nan, np.nan],
    'b': [np.nan, 2, np.nan],
    'c': [3, 4, np.nan]
})

# Count NaN per row
df['missing_count'] = df.isna().sum(axis=1)
print(df)
#      a    b    c  missing_count
# 0  1.0  NaN  3.0              1
# 1  NaN  2.0  4.0              1
# 2  NaN  NaN  NaN              3

Memfilter Baris dengan Sebagian atau Semua Nilai Hilang

Gunakan df[df.isna().any(axis=1)] untuk menemukan baris yang memiliki setidaknya satu nilai NaN, atau df[df.isna().all(axis=1)] untuk menemukan baris yang setiap nilainya adalah NaN. Filter ini membantu Anda memisahkan catatan bermasalah untuk diperiksa sebelum menentukan cara menanganinya.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'x': [1, np.nan, np.nan],
    'y': [2, 3, np.nan],
    'z': [4, 5, np.nan]
})

# Rows with at least one NaN
has_any_nan = df[df.isna().any(axis=1)]
print('Any NaN:\n', has_any_nan)

# Rows where all values are NaN
all_nan = df[df.isna().all(axis=1)]
print('All NaN:\n', all_nan)
#      x    y    z
# 2  NaN  NaN  NaN

Memeriksa NaN pada Kolom Tertentu

Untuk pemeriksaan cepat pada satu kolom, panggil df['col'].isna().sum() atau gunakan df['col'].isna().any() untuk memperoleh satu boolean (True jika terdapat setidaknya satu NaN). Satu baris kode ini berguna dalam pemeriksaan validasi data atau pernyataan pencatatan dalam alur kerja.

import pandas as pd
import numpy as np

df = pd.DataFrame({'price': [10.0, np.nan, 30.0, np.nan, 50.0]})

print('NaN count in price:', df['price'].isna().sum())  # 2
print('Any NaN in price?', df['price'].isna().any())    # True
print('All present?', df['price'].notna().all())         # False

Memvisualisasikan Nilai yang Hilang dengan Heatmap

Untuk kumpulan data dengan banyak kolom, heatmap nilai yang hilang lebih informatif daripada tabel angka. Anda dapat membuatnya dengan mudah menggunakan Seaborn: semakin gelap suatu sel, semakin banyak data yang hilang pada kombinasi kolom-baris tersebut. Pustaka pihak ketiga populer bernama missingno menyediakan visualisasi khusus untuk nilai yang hilang.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

np.random.seed(0)
df = pd.DataFrame(
    np.where(np.random.rand(20, 5) > 0.7, np.nan, np.random.randn(20, 5)),
    columns=['A', 'B', 'C', 'D', 'E']
)

# Heatmap of missing values
sns.heatmap(df.isna(), cbar=False, yticklabels=False)
plt.title('Missing Value Pattern')
plt.tight_layout()
plt.savefig('missing_heatmap.png')
print('Saved missing_heatmap.png')

info() untuk Pemeriksaan Cepat Nilai yang Hilang

df.info() mencetak ringkasan singkat yang mencakup jumlah nilai yang tidak null untuk setiap kolom. Ini adalah cara tercepat untuk menemukan kolom yang memiliki nilai hilang dalam kumpulan data baru: kolom mana pun yang jumlah nilai tidak null-nya lebih sedikit daripada jumlah total baris memiliki nilai NaN. Fungsi ini juga menampilkan dtype dan penggunaan memori.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'id': [1, 2, 3, 4, 5],
    'age': [25, np.nan, 30, np.nan, 22],
    'salary': [50000, 60000, np.nan, 70000, 80000]
})

df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 5 entries, 0 to 4
# Data columns (total 3 columns):
#  #   Column  Non-Null Count  Dtype
# ---  ------  --------------  -----
#  0   id      5 non-null      int64
#  1   age     3 non-null      float64
#  2   salary  4 non-null      float64

Pemeriksaan Cepat

Uji pemahaman Anda tentang pendeteksian nilai yang hilang di Pandas.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari: isna() dan isnull() identik dan mengembalikan topeng boolean untuk posisi yang nilainya hilang, isna().sum() menghitung NaN per kolom, dan isna().mean()*100 menghasilkan persentase nilai yang hilang. Gunakan df.info() untuk gambaran umum yang cepat dan isna().any(axis=1) untuk menemukan baris yang memiliki setidaknya satu NaN. Selanjutnya, kita akan membahas penghapusan nilai yang hilang dengan dropna().

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mendeteksi Nilai yang Hilang” gratis?

Ya — teks lengkap “Mendeteksi Nilai yang Hilang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mendeteksi Nilai yang Hilang”?

Gunakan isna(), notna(), dan isnull() untuk menemukan lokasi NaN dalam Series atau DataFrame serta menghitung nilai yang hilang di setiap kolom. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Mendeteksi Nilai yang Hilang” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mendeteksi Nilai yang Hilang
  2. Menghapus Nilai yang Hilang
  3. Mengisi Nilai yang Hilang
  4. Interpolasi dan Imputasi Lanjutan
← Kembali ke Pandas & NumPy Academy