【Python図解】Pandas DataFrameで欠損値のある行・列を削除する方法(dropna( )メソッド)を解説!

Pythonの欠損値処理でこんな悩みはありませんか?

「欠損値のある行を削除したい」
「すべての要素が欠損値である行 or 列を削除したい」
「特定の列に欠損値がある行を削除したい」

そのお悩み解決します。
結論をお話しするとPandasのdropna( )メソッドを使用することで解決できます。

今回は下記のようなデータ(以下df)を使って解説します。

早速解説します。

dropna( )メソッドの使い方

df.dropna( )とすることで、欠損値(NaN)がある行を削除できます。
つまりdf.dropna( )とすることで、dfの欠損値は無くなります。
今回のdfでは1,2,4行目にNaNがあるので、1,2,4行目が削除されます。

df.dropna( )

dropna( )メソッドを使う際の注意点

dfを更新する際は、df = df.dropna( )とすることを忘れないようにしてください。
df = df.dropna( )としないと欠損値を削除後のdfがdfとして反映されません。

データの削除後は、「index番号のリセット」をしないと、後工程でエラーが発生する可能性が高いので忘れないようにしてください。下記記事参照。

【Python図解】Pandas DataFrameでindexをリセットする方法(reset_index()メソッド)を解説!
Pythonのpandas DataFrameでこんな悩みはありませんか? 「Pandas DataFrameでデータを削除したらindex番号が連番じゃなくなった、、しかしリセットの仕方がわからない。」 「Pandas DataFrame...

続いてdropna( )メソッドの条件を指定する方法を解説します。

dropna( )メソッドの条件指定

df.dropna( )とすることで、欠損値がある行を削除できることは上記で解説しました。
それ以外の欠損値のある行もしくは列の削除方法を解説します。

欠損値がある列を削除したい場合

欠損値がある列を削除したい場合は、df.dropna(axis = 1)とします。
今回のdfではA,B,C列にNaNがあるのでdf.dropna(axis = 1)とすると列がなくなります。

df.dropna(axis = 1)

今までは欠損値のある行、列を削除する方法を解説しました。
続いて、「全ての要素がNaNである行を削除する場合」を解説します。

すべての要素がNaNである行を削除したい場合

dropna( )メソッドの引数howをhow = ‘all’とすると、すべての要素がNaNである行を削除できます。
今回のdfは4行目がすべてNaNなので4行目が削除されます。

df.dropna(how='all')

最後に「特定の列にNaNがある行を削除したい場合」を解説します。

特定の列にNaNがある行を削除したい場合

dropna( )メソッドの引数subsetをsubset = [‘列名’] とすることで、特定の列にNaNがある行を削除することができます。
今回のdfの’A’列は2行目、4行目はNaNなので、2,4行目を削除できます。

df.dropna(subset = ['A'])

subset = [‘列名’]は複数入れることも可能。例えばdf.dropna(subset = [‘A’,’B’])のように書けば、A列もしくはB列にNaNがある行を削除できます。

解説は以上です。
今回はPandas DataFrameで欠損値のある行・列を削除する方法を解説しました。
pandasのdropna( )メソッドは上記の4パターンが使いこなせれば問題ないです。

pythonを活用したデータサイエンスでは、欠損値処理は頻出なので、是非本記事を通してマスターしていただければと思います。

また下記の「pandasのまとめ記事」も良ければご活用ください。pandasを調べる回数を減らせます。

【Python図解】Pandasのメソッド解説記事まとめ
今回の記事では、私がpython初学者だった時に感じた悩みを解決する記事を書いています。 「Pandasのメソッドの解説記事は多いが、全体像がわからない、、」 「Pandasのメソッドは非常に多く調べるのが大変なので、情報を集約して欲しい、...

この記事が少しでも皆さんのお役に立てれば幸いです。

タイトルとURLをコピーしました