🙂
欠損値の処理方法
欠損値とは
データセット内に全ての情報が揃っていない状況です。
欠損値があるかどうかの確認方法
Pandasライブラリの isna() 関数と sum() 関数を組み合わせて、下記のようなコードを使うと、欠損値を確認できます。
# 各列における欠損値の数を確認
missing_values = data.isna().sum()
print(missing_values)
欠損値がある場合は、0ではない数字が表示されます。
【欠損値がある場合】
欠損値を埋める方法
欠損値を埋める方法はいくつかあります。
前方補填(Forward Fill)
前方補填は、欠損値の直前の値を使用して穴を埋める方法です。
data.ffill(inplace=True)
後方補填(Backward Fill)
後方補填は、欠損値の直後の値を使用して穴を埋める方法です。
data.bfill(inplace=True)
平均値での補填
数値データの場合、列の平均値で欠損値を埋めることができます。
mean_value = data['column_name'].mean()
data['column_name'].fillna(mean_value, inplace=True)
中央値での補填
数値データにおいて外れ値がある場合、列の中央値で欠損値を埋めることが推奨されます。
mean_value = data['column_name'].median()
data['column_name'].fillna(mean_value, inplace=True)
うまくいかない時の対処法
ひとつの方法ではうまくいかないこともあります。たとえばデータセットの最初の行が欠損している場合、前方補填(ffill)では直前の値が存在しないため、欠損値を埋めることができません。このような場合、以下のように複数の手法を組み合わせることで、処理が可能になります。
# 前方補填を試みる
data.ffill(inplace=True)
# 前方補填で埋められなかった欠損値を後方補填で処理する
data.bfill(inplace=True)
古い方法
下記のコードを使うと、"FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead." とエラーになります。
data.fillna(method='ffill')
methodは、今後のバージョンでは非推奨となるためです。使用を避けておきましょう。
さいごに
欠損値があると、エラーが起こったりします。前処理を行った後に欠損値を確認し、欠損値があれば、上記の方法で埋めておくようにしましょう。
記事が参考になれば嬉しいです^^
Discussion