【pandas】DataFrameでNaNの行列を削除する方法(dropnaの使い方まとめ)

今回はDataFrameの削除に使う関数の解説です。

コードと画像をたくさん使っています。参考になれば幸いです。

行・列の削除に使える関数

関数処理
df.pop(列名)1列を削除する
del df[列名] 複数列を削除できる。df.loc[行名]は使えない
df.drop()複数行・列を削除できる
詳しくはコチラの記事へ
df.dropna()NaNのセルがある行・列を削除
この記事で解説します。
df.drop_duplicates()重複列の削除
詳しくはコチラの記事へ

popdeldropの3つの基本的な使い方は以下の記事でまとめています。

関連記事

こんにちは、今回はpandasのDataFrameで行や列を削除する方法を解説していきます。 それぞれの役割やメリットを確認しながら基本的なポイントを押さえていきましょう。 [itemlink post_id="4429"] […]

この記事ではdropna関数に関して解説していきます。

dropna関数の引数

pandas公式ドキュメントのdropnaページはコチラ

この関数は空(NaN)になっているセルがある行や列を削除します。行方向にみるのか列方向に見るのかは選択できます。

引数デフォルト値処理
axis0(行方向)1で列方向
how'any''any'は少なくとも一つNaNがある行や列を削除する
'all'はすべてNaNの行や列を削除する
threshなし整数を渡す
例)2のときは欠損していないセルが2つ以上の行・列を残す
subsetなし列名のリストを渡すと、その列からNAをさがして削除する
inplaceFalseTrueでもとのDataFrameを変更する

それぞれの引数の解説では以下のデータフレームを使います。

削除する前のDataFrame

NaNには、pd.NaTNonenp.nanの3種類があります。(ほかにもあるかもしれませんが今回はこれです。)

pdはpandas、npはnumpyの意味です。

dropna関数は3つとものNaNに対して正しく処理してくれます。

axisとhowの役割

基本的にNaNが1つもない行や列しか残りません。

一つでもあったら消されます。

行方向に削除

行方向の削除

列方向に削除

列方向の削除

how=’all’のとき

全て空(NaN)の行や列を削除します。

今回の例で使っているDataFrameはすべて空の行や列がないので削除されません。

inplaceの役割

もしdropna関数を使ったのに削除されていない場合はこの引数を見てみましょう。

デフォルト(False)のとき

このとき元のDataFrameは変更されません。

つまり、削除されていないもとのDataFrameが表示されます。

削除する前のDataFrame

Trueのとき

このときは元のDataFrameが変更されています。

削除が反映される

元のDataFremeを変更したくないけど、削除したものを残したい場合は別の変数に代入しておきます。

以下のdrop関数の記事のinplaceの部分にコードが書いています。

関連記事

こんにちは、今回はdrop関数に関して詳しくまとめていきたいと思います。 DataFrameの整形で非常に役に立つ関数なのでぜひ使い来ないしたいですね。 特に、dropを使ったのに削除できなかったときの対処法も書いています。 […]

threshの役割

  • 整数を渡す。
  • thresh=2なら、NaNでないセルが2つ以上ある行や列を残す。
  • 行方向に削除するときはaxis=0でもOK
行方向に削除
列方向

subsetの役割

  • 列名か行名のリストを渡す。
  • その列または行のNaNを削除する。
  • 指定外の列や行にはNaNが残ることもある。
行方向の削除
列方向の削除

まとめ

今回はNaNを消す関数の使い方をまとめました。

NaNの種類が3つもあることを初めて知りました!

削除に困っている方の参考になれば幸いです。