python3でnanが入ってるデータを取り使う場合

生データにnanが入ってるってことはそれなりによくある。

nan入っててもそのまま処理してくれたり、nan_policyとかを手動でセットすればオーケって場合は楽なんだけど、そうでない場合もあって結構めんどくさいことも。

それでどうするかっていうと、まあ状況によってnanを0にしたり、infにしたり、周りの値の平均値にしたり、含む行を削除しちゃったり、などなど。

numpyのndarrayにnanがいる場合

データは2列複数行のndarray。

isnan()でnanの場所を探して書き換える。

data[i][np.isnan(data[i])]=0
data[i][np.isnan(data[i])]=np.inf

など。

同じくisnan()で探して含む行を削除する

こうやってanyを使って抽出するってのが一番シンプル? 文字数も少ないし。

data[i]=data[i][~np.isnan(data[i]).any(axis=1)]

deleteを使って書くならこんな感じかな? データによって少し変える必要があるかもしれないが。私のは2列目にnanが入ってるのでこう書いた。

 data[i] = np.delete(data[i],np.where(np.isnan(data[i][:,1])),axis=0)

今の所はこのくらい。

pandasとか他の形式で扱うことがあったら追記する。

関連記事

1. pythonのまとめ

D