欠損値(データの空白)を扱う
現実のデータには、値が入っていない箇所がよくあります。例えば、アンケートで一部の質問に答えていない人がいたり、センサーが一時的に故障して記録が取れなかったりする場合です。このような「値が入っていない箇所」を 欠損値 と呼びます。
pandasでは、欠損値はNaN(Not a Number)として表されます。
import pandas as pd
import numpy as np
data = {"name": ["太郎", "花子", "次郎"], "score": [80, np.nan, 65]}
df = pd.DataFrame(data)
df.isna() # 各値が欠損値かどうかをTrue/Falseで確認
df["score"].isna().sum() # 欠損値の個数を数える
欠損値の扱いは、道具によって違います。pandasのdf["score"].mean()は、欠損値を 自動的に飛ばして 残りの値だけで平均を計算します(この例では80と65の平均で72.5)。一方、NumPyの配列で平均を計算すると、答えがnanになってしまいます。また、多くの機械学習のモデルは、欠損値が混ざったデータをそのまま学習できません。
気づかないうちに計算から外れていたり、エラーになったりするのを避けるため、欠損値は前処理の段階で自分で扱い方を決めます。代表的な対処方法が2つあります。
df.dropna() # 欠損値がある行を削除する
df.fillna(df["score"].mean()) # 欠損値を平均値などで埋める
どちらを選ぶかは状況次第です。「削除しても十分なデータ量が残るか」「欠損していること自体に意味がないか」を考えて判断します。この判断そのものが、データ分析の重要なスキルの一つです。