データ分析実践
初級問題チェック
問題 26 /40
pandasのdropnaメソッドに関する説明で、誤っているものはどれか。
選択 1
dropnaメソッドでDataFrameを更新するときは、inplace=Trueの引数をつける。
選択 2
how='any'の引数をつけると、すべての列がNaNになっている行だけ削除される。
選択 3
axis=1の引数をつけると、NaNがある列が削除される。
選択 4
subset='列名'の引数をつけると、指定した列にNaNがある行だけ削除される。
解説
選択肢2が正解です。
次のDataFrameで解説します。
df = pd.DataFrame(
[['1日', 'ぶどう', 100],
[np.NaN, np.NaN, np.NaN],
['2日', 'りんご', 300],
['2日', 'りんご', np.NaN]],
columns=['日付', '商品名', '売上'])
▶︎
【選択肢1】
dropnaメソッドでDataFrameを更新するときは、inplace=Trueの引数をつける。
正しい説明です。
dropnaメソッドは元のDataFrameを更新しません。df.dropna()としても、元のDataFrameはそのままです。
df.dropna()
▶︎
df
▶︎
DataFrameを更新する場合は、新たな変数に代入するか、inplace=Trueの引数をつけます。
df2 = df.dropna()
df2
▶︎
df.dropna(inplace=True)
df
▶︎
【選択肢2】
how='any'の引数をつけると、すべての列がNaNになっている行だけ削除される。
誤った説明です。
how='any'の引数をつけると、一つでもNaNがある列があれば、その行を削除します。how='any'がデフォルトのため、引数をつけなくても同じ結果になります。
df.dropna()
▶︎
すべての列がNaNになっている行だけを削除する場合は、how='all'の引数をつけます。
df.dropna(how='all')
▶︎
【選択肢3】
axis=1の引数をつけると、NaNがある列が削除される。
正しい説明です。
NaNがある列を削除するため、問題文の場合はすべての列が削除され、空のDataFrameになります。
(df.dropna(axis=1)).empty
▶︎
True
デフォルトはaxis=0で、行を削除します。
【選択肢4】
subset='列名'の引数をつけると、指定した列にNaNがある行だけ削除される。
正しい説明です。
df.dropna(subset='商品名')
▶︎
「商品名」の列にNaNがあるインデックス番号1の行だけ削除されています。
(公式書籍 p.194-196)







