らふのプログラミングメモ

プログラミングメモです。

DataFrameの欠損値についての取り扱い方法 その1 とりあえず消してみよう

分析したいデータには大体が欠損値がつきものだと思います。

というわけで、まずは欠損値についてまとめてみましょう。

タイトルコール:DataFrameの欠損値について
DataFrameの欠損値についてまとめていこう!!

欠損値の取り扱いは以下の2種類かと思います。

  • 削除
  • 穴埋め(置き換えですね)

今回は削除についてまとめていきたいと思います。

消してしまおう!(削除)

データによっては消してしまったほうがいいものもある(かもしれません)
というこで、まずは消してしまう方法から考えていきましょう。

削除方法として
- 該当するデータを1つずつ確認して削除する方法
- 一括で変換(dropna)をする方法
の2種類があります。

テストデータを作ってみます。

name age add English math
0 aaa Nan Tokyo 80 90
1 bbb 20 Osaka 85 80
2 ccc 22 Nagoya 90 85

aaaさんの年齢を欠損させておきます。

import pandas as pd
import numpy as np

data = {"name":["aaa","bbb","ccc"],"age":[np.nan,20,22],"add":["Tokyo","Osaka","Nagoya"],"English":[80,85,90],"math":[90,80,85]}

df = pd.DataFrame(data)
  • dropna()を使ってデータを一括で消去してしまおう。
df_after = df.dropna()
print(df_after)

df_afterの結果:

name age add English math
1 bbb 20 Osaka 85 80
2 ccc 22 Nagoya 90 85

aaaさんのデータが全消去されました。

今回は1つのデータのみ欠損値があっただけなので、次は複数あった場合を確認してみましょう。

data2 = {"name":["aaa","bbb","ccc",np.nan,"EEE"],"age":[np.nan,20,22,20,18],"add":["Tokyo","Osaka","Nagoya",np.nan,np.nan],"English":[80,85,90,100,90],"math":[90,80,85,80,90]}

df2 = pd.DataFrame(data2)

df2の結果:

name age add English math
0 aaa Nan Tokyo 80 90
1 bbb 20 Osaka 85 80
2 ccc 22 Nagoya 90 85
3 NaN 20.0 NaN 100 80
4 EEE 18.0 NaN 90 90

これをdropna()を使って削除してみましょう。

df2_after = df2.dropna()

df2_afterの結果:

name age add English math
1 bbb 20 Osaka 85 80
2 ccc 22 Nagoya 90 85

この結果からわかるように、1つでもNanデータがあるとデータは削除されることがわかります。

<最終更新日:2021/09/27>
2021/09/27:タイトルの一部と画像を修正。 2021/09/24:タイトル一部修正。画像追加。

2021/09/21 投稿