#概要
pythonとpandasでKaggleのTitanic問題を次のようなアプローチで解いているのですが、Pandasのnanの処理に詰まっています。
#方針
・テストデータを1行ずつ読み込む
・各データについて、クラス・性別・年齢層が同じものをtrainデータから抜き取る
・抜き出したtrainのデータに含まれるSurvivedの項目の割合を調べ、生存確率を出す。
#コード
python
1 import pandas as pd 2 import numpy as np 3 test = pd.read_csv("data/test.csv") 4 train = pd.read_csv("data/train.csv") 5 for index, row in test.iterrows(): 6 qs='Pclass=="{0}" and Sex=="{1}" and {2}-10 < Age and Age < {2}+10' 7 target=train.query(qs.format(row['Pclass'],row['Sex'],row['Age'])) 8 print(target.mean()['Survived']) 9 #以下略
#問題点
例えば、row['age']がnanの時、
python
1 target=train.query('Pclass=="1" and Sex=="male" and nan-10 < Age and Age < nan+10')
で、name 'nan' is not definedのエラーが出てしまいます。
「nanがあった場合のみ、そこの条件を飛ばす」という処理はどのように書けるでしょうか?
python
1 target=train.query('Pclass=="1" and Sex=="male")

回答2件
あなたの回答
tips
プレビュー