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 NaNisna() 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()) # Truenotna() 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.comMenghitung 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: int64Persentase 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: float64Tabel 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 float64Jumlah 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 3Memfilter 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 NaNMemeriksa 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()) # FalseMemvisualisasikan 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 float64Pemeriksaan 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
- Mendeteksi Nilai yang Hilang
- Menghapus Nilai yang Hilang
- Mengisi Nilai yang Hilang
- Interpolasi dan Imputasi Lanjutan