[pandas] 8. DataFrameに欠損値(NaN)があるときの処理

Pandas

はじめに

データ分析を行う際、欠損値(NaN: Not a Number)の適切な処理は非常に重要です。pandasライブラリでは、欠損値を効率的に処理するための様々な機能が提供されています。このページでは、欠損値の検出方法、除外方法、置換方法について詳しく解説します。

解説

モジュールのインポート

NaNを含むDataFrameの作成

NaNがTrueとなるisnull()

isnullにより、NaNの部分がTrueとなったbool型の配列が得られます。

NaNがFalseとなるnotnull()

notnull()はisnull()の逆で、NaNの部分がFalseとなったbool型の配列が得られます。

NaNを除外するdropna()

dropna()メソッドを使用することで、NaNを含む行を除外した新しいDataFrameを取得できます。

dropna()メソッドでaxis=1またはaxis=’columns’を指定することで、NaNを含む列を除外できます。

how='all'により、全てNaNの行だけ除外されます。

NaNに値を代入するfillna()

.fillna(#)の#にNaNの代わりに使用したい数値を入れると、NaNがその指定した数値に置換された配列が得られます。

ひとつ前の要素を代入するffill

ffillはforward-fillの略で、NaNのひとつ前の要素が代入されます。

ひとつ後の要素を代入するbfill

bfillはback-fillの略でひとつ後の要素が代入されます。

axis=1を指定すると列方向のひとつ後の要素が代入されます。ffillとbfillは、それぞれ前後の要素がNaNの場合、値はNaNのままとなります。

まとめ

pandasにおける欠損値処理の主な方法は以下の通りです:

  • 欠損値の検出: isnull(), isna()
  • 欠損値の除外: dropna()
  • 欠損値の置換: fillna()
  • 高度な欠損値処理: scikit-learnのSimpleImputerなど

適切な欠損値処理はデータ分析の精度を大きく左右します。データの性質や分析の目的に合わせて、最適な方法を選択することが重要です。

また、実際のデータ分析プロジェクトでは、これらの方法を組み合わせて使用することが一般的です。例えば、まず欠損値が多すぎる列を削除し、その後で残りの欠損値を適切な値で置換するといった流れです。

参考

pandas.DataFrame.fillna — pandas 2.3.2 documentation
pandas.DataFrame.dropna — pandas 2.3.2 documentation

コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)

コメント