コンテンツにスキップ

第4章 欠損値

1 欠損値

データに不備があり、値が存在しないことがあります。それが欠損値です。

欠損値のあるデータを挿入してみましょう。

df.loc["渡辺"] = ['A', '男', 90, None, 80, None]
df

欠損値があるかどうかは以下で分かります。

df.isnull().sum()

欠損値がある行を削除するには以下のようにします。

df.dropna()

しかし、通常は欠損値があっても削除することはせず、別の値で埋めて統計処理をすることが多いです。

例えば、0で欠損値を埋めるには以下のようにします。

df2 = df.fillna(0)
df2

平均値で欠損値を埋めるには以下のようにします。

df2["算数"] = df["算数"].fillna(df["算数"].mean())
df2["社会"] = df["社会"].fillna(df["社会"].mean())
df2

気温など連続して変換する値の場合、平均値で埋めてしまうと流れがおかしくなります。このような場合、前の値で埋めるという方法があります。

df2 = df.fillna(method='ffill')
df2

2 置換

値が存在しない以外にもおかしいデータがあった場合、データを置換する必要があります。

置換は {"列名": {置換前:置換後}} で指定します。

# 80を800に置換
df.replace({"国語":{80:800}})

欠損値を置換で埋めることも可能です。

df = df.replace({"算数":{None:80}})
df = df.replace({"社会":{None:80}})
df