NaN digunakan sebagai placeholder untuk data yang hilang secara konsisten di panda , konsistensinya bagus. Saya biasanya membaca / menerjemahkan NaN sebagai "hilang" . Lihat juga bagian 'bekerja dengan data yang hilang' di dokumen.
Kami menulis dalam 'pilihan representasi NA' dokumen :
Setelah bertahun-tahun penggunaan produksi [NaN] telah terbukti, setidaknya menurut pendapat saya, sebagai keputusan terbaik mengingat keadaan di NumPy dan Python secara umum. Nilai khusus NaN (Not-A-Number) digunakan di mana - mana sebagai nilai NA, dan ada fungsi API isnull
dan notnull
yang dapat digunakan di seluruh dtypes untuk mendeteksi nilai NA.
...
Jadi, saya telah memilih pendekatan Pythonic "kepraktisan mengalahkan kemurnian" dan memperdagangkan kemampuan integer NA untuk pendekatan yang lebih sederhana dalam menggunakan nilai khusus dalam float dan array objek untuk menunjukkan NA, dan mempromosikan array integer menjadi mengambang ketika NAs harus diperkenalkan.
Catatan: "Gotcha" bahwa Seri bilangan bulat yang berisi data yang hilang di-upcast menjadi float .
Menurut pendapat saya, alasan utama untuk menggunakan NaN (over None) adalah karena NaN dapat disimpan dengan dtype float64 numpy, daripada dtype objek yang kurang efisien, lihat promosi tipe NA .
s_bad = pd.Series([1, None], dtype=object)
s_good = pd.Series([1, np.nan])
In [13]: s_bad.dtype
Out[13]: dtype('O')
In [14]: s_good.dtype
Out[14]: dtype('float64')
Jeff berkomentar (di bawah) tentang ini:
np.nan
memungkinkan untuk operasi vektor; its a float value, sedangkan None
, menurut definisi, memaksa tipe objek, yang pada dasarnya menonaktifkan semua efisiensi di numpy.
Jadi ulangi 3 kali dengan cepat: object == bad, float == good
Mengatakan itu, banyak operasi mungkin masih bekerja dengan baik dengan None vs NaN (tetapi mungkin tidak didukung, yaitu terkadang memberikan hasil yang mengejutkan ):
In [15]: s_bad.sum()
Out[15]: 1
In [16]: s_good.sum()
Out[16]: 1.0
Untuk menjawab pertanyaan kedua:
Anda harus menggunakan pd.isnull
dan pd.notnull
untuk menguji data yang hilang (NaN).
qwerty
itu bukan angka.