NULL, NA, NaNの整理
基本事項
- NULL, NA, NaNはそれぞれ意味が違う.NULLは無いこと(未定義),NAは使えないこと(Not Available,欠損値), NaNは数値でないこと(Not a Number,非数)だということを踏まえておく.
各言語での扱い
R
- 全てあるので特に悩まない.
- 0/0はNaN.
x = NULL is.null(x) #=> True x = Nan is.nan(x) #=> True x = NA is.na(x) #=> True
python
- まとめると,普通はNone,numpy,pandas使う時はnanを使っても良い,という感じかな?
- 標準ライブラリではNoneがNullに相当する.Sqlite3にNULLを入れたいときはNoneを渡す.
- numpyにはnanがある.masked arrayというのもあるみたいだけど使っているのかな?
- scikit-learnには何もないので,別途自分で整理する必要がある
- pandasはNaNがある.
# sqlite3使う場合には,タプルで渡すことに注意 db.execute("INSERT INTO table_name VALUES('hoge', ?, 1)", (None,))