なんつーか改めて言うことでもないかなとも思うんだけど、無頓着にやってたらちと思い悩んだので一応。
結構なんだかんだ NaN て便利でな:
1 >>> import math
2 >>> x = float('nan')
3 >>> y = 2
4 >>> math.sqrt(x**2 + y**2)
5 nan
6 >>> "{:.1f}".format(x)
7 'nan'
8 >>> "{:.1f}".format("a")
9 Traceback (most recent call last):
10 File "<stdin>", line 1, in <module>
11 ValueError: Unknown format code 'f' for object of type 'str'
てふわけで、Python (やその根底にある C) は NaN について良く知っておるわけね。だから「データがまだ取れてませんよー」のために NaN にしとくのがいい。これを None にしちゃうと:
1 >>> "{:.1f}".format(None)
2 Traceback (most recent call last):
3 File "<stdin>", line 1, in <module>
4 ValueError: Unknown format code 'f' for object of type 'str'
やだよぉもう。
ちなみに「NaN かどうか?」について、(NumPy 普段使いのワタシは) math.isnan の存在に気付いてなかった。なんだよあるじゃん、と。(ただ、numpy.nan はあるのに float.nan とか math.nan みたいなファクトリはないのよね。)