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番号のリセット」をしないと、後工程でエラーが発生する可能性が高いので忘れないようにしてください。下記記事参照。
続いて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を調べる回数を減らせます。
この記事が少しでも皆さんのお役に立てれば幸いです。