データ分析実践
初級問題チェック

問題 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)