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

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

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

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

今回は下記のようなデータ(以下df)を使って、pythonを活用したデータサイエンスで頻出のdropna( )メソッドの使い方を解説します。

早速解説します。

dropna( )メソッドの使い方

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

df.dropna( )


 

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

・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( )とすることで、欠損値がある行を削除できることは上記で解説しました。
上記以外で頻出のdropna( )メソッドの使い方を解説します。
 

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

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

df.dropna(axis = 1)


 

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

 
引数『how = ‘all’』とすると、すべての要素がNaNである行を削除できます。
今回のdfは4行目がすべてNaNなので4行目だけ削除されます。

df.dropna(how='all')

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

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

 
『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をコピーしました