Pythonでは、特殊な値としてNoneとNaNがあります。これらは初心者がつまづきやすいポイントであり、それぞれの違いと適切な使い方を理解することは重要です。
NoneとNaNの違い
NoneはPythonの内部型(NoneType)で、値が存在しないことを示します。一方、NaNはIEEE 754浮動小数点標準で定義された数値で、数値演算に使用できます。
具体的には、Noneは存在しないことを示すための定数で、存在しないからNoneに対する演算はエラーになります。一方、NaNは数ではない浮動小数点を表す数(非数)で、自分自身との比較でFalseを返すのが特性です。
NoneとNaNの扱い方
PythonでNoneとNaNを扱う際の基本的な方法は以下の通りです。
Noneの判定
Noneの判定はis Noneを使用します。
f = lambda x: True if x is not None else False
f(0) # -> True
f(numpy.nan) # -> True
f(None) # -> False
NaNの判定
NaNの判定はmath.isnan()やnumpy.isnan()を使用します。
numpy.isnan(0) # -> False
numpy.isnan(None) # -> TypeError(Noneが数値でないため)
numpy.isnan(numpy.nan) # -> True
NaNの削除
NaNの削除はdropna()関数を使用します。
df1 = df.dropna()
NaNの置換
NaNを具体的な数字に置き換えたい場合は、fillna()関数が役立ちます。
df5 = df.fillna(0)
以上がPythonにおけるNoneとNaNの基本的な違いと扱い方になります。これらの理解は、データ分析や機械学習などの分野でPythonを使用する際に非常に重要です。