Hello there, ('ω')ノ
データ分析やレポート作成をしていると、必ず出会うのが 「空欄」や「値が入っていない」という問題。
この状態のデータは、「欠損値(けっそんち)」と呼ばれ、SQLやExcelでは NULL(ヌル)
という特別な値で表現されます。
放っておくと平均値や件数などの集計が正しく出なかったり、分析モデルがうまく動かないことも…。
✅ 欠損値(NULL)とは?
「そのデータ項目に何も値が入力されていない状態」です。 たとえば以下のようなケース:
顧客名 | 年齢 | メールアドレス |
---|---|---|
山田太郎 | 30 | yamada@example.com |
佐藤花子 | NULL | sato@example.com |
鈴木一郎 | 25 | NULL |
▶ 年齢やメールアドレスが入っていない=NULLという状態です。
🔍 欠損値が生じる「3つの理由タイプ」
欠損値には、意味の異なる3つのタイプがあります。 これを知っておくと、対処法を間違えずに済むようになります。
① 入力ミス・抜け落ちタイプ(うっかりタイプ)
- フォーム入力忘れ
- データ収集時のエラー
- システムバグなど
🔧 対処法: ➡ データを再確認して入力し直すか、過去の履歴から補完する
② 該当なし・意味がないタイプ(存在しないタイプ)
- 退職者の「部署名」
- 未婚の人の「結婚記念日」
- 法人の「生年月日」など
🔧 対処法: ➡ 無理に埋めない!「該当なし(N/A)」として処理するのが基本 ※ 無理に0や平均を入れると誤解を招く
③ 将来的に入る予定タイプ(未確定タイプ)
- 商品の出荷予定日(まだ未定)
- 未入力のアンケート結果
- 今後入力されるコメント欄など
🔧 対処法: ➡ そのまま欠損として残しておき、更新を待つ ただし、集計時には「今はNULL」を考慮した処理が必要
🧮 SQLでNULLを扱う方法
🔸 NULLを見つける
SELECT * FROM customers WHERE email IS NULL;
→ メールアドレスが未入力の顧客を抽出します。
🔸 NULLでないものだけ取り出す
SELECT * FROM customers WHERE age IS NOT NULL;
🔸 欠損値に代わりの値を入れる(COALESCE関数)
SELECT name, COALESCE(email, '未登録') AS email_display FROM customers;
→ メールがNULLなら「未登録」と表示させる。ExcelのIF関数に似た考え方です。
📊 ExcelでのNULL対応(空白セル)
目的 | 対応方法 |
---|---|
空白セルを数える | =COUNTBLANK(範囲) |
空白を「なし」などに置き換える | フィルター + 置換 or =IF(A1="", "なし", A1) |
空白を平均で埋める | =IF(A1="", 平均値, A1) などを使う |
🧠 欠損を埋めるときの3つの考え方
方法 | 説明 | 向いている場面 |
---|---|---|
平均値・中央値で埋める | 他の値から代表値を使う | 年齢や金額などの数値データ |
最頻値(モード)で埋める | 一番多い値を使う | カテゴリ(例:性別、都道府県) |
フラグを立てる | NULLの有無を別列で記録 | モデル分析や欠損の傾向分析に便利 |
⚠️ NULLに関する注意点
注意点 | 内容 |
---|---|
NULLと0や空文字は別物 | NULL ≠ 0 、NULL ≠ '' (空文字) |
集計での扱いに注意 | AVG() やCOUNT() はNULLを自動で除外することがある |
条件式では思わぬ結果になる | = NULL ではなく IS NULL を使うこと! |
✅ まとめ:NULLは“無視してはいけない”大事なサイン
ポイント | 内容 |
---|---|
欠損には意味がある | 単なるミスか、意味のある空欄かを見極めよう |
対処法は目的次第 | 分析用か帳票用かで対応が変わる |
NULLを検出・処理する技術は必須 | SQLやExcelでもすぐに対応できる知識を身につけよう |
Best regards, (^^ゞ