Hello there, ('ω')ノ
データ分析において、よくある困りごとの一つが「見た目は合ってるのに、中身がヘン!」という問題です。 たとえばこんな経験、ありませんか?
- 「日付」と思ったら文字列だった
- 「数値」と思ったら“十”とか“0円”が混じっていた
- 「男性/女性」欄に“女”“女子”“M”“1”などバラバラな表記がある
こういった「形式ミスマッチ」や「無効なデータ」があると、 正しく集計できなかったり、集計エラーや予測ミスの原因になります。
✅ まず知っておきたい:無効データ・形式ミスマッチとは?
用語 | 内容 | 例 |
---|---|---|
無効なデータ | 本来ありえない値 | 年齢「999歳」や売上「-100円」など |
形式ミスマッチ | 型(データの形式)が異なる | 日付なのに文字列、数字の列に「円」などが混入 |
🧪 よくある形式ミスマッチの例
項目 | 本来の形式 | よくある間違い |
---|---|---|
日付 | 2025-06-01 | "6月1日", "01/06", "6/1/25"(文字列扱い) |
数値 | 1000 | "1,000", "一千", "千円", "-"(空欄) |
性別 | 男/女 | M/F、1/0、男性/女子、空白 |
メール | ○○@example.com | "なし", "test@", 空欄, 電話番号が入っている |
🔍 発見のコツ:データの型チェック
① Excelで型を調べる
=ISTEXT(A1)
→ 文字列かどうか=ISNUMBER(A1)
→ 数値かどうか=ISERROR(A1)
→ エラー値(#DIV/0!など)
② SQLで型の確認や抽出
SELECT * FROM users WHERE ISNUMERIC(age) = 0;
※使用するDBによっては関数名が異なることも(例:TRY_CAST
, ISDATE
など)
🧹 データクリーニングの実践方法
🔸 ① 数値から記号や単位を取り除く
Excelの場合:
- 「置換」機能で「円」や「,」を削除
- 数値の列に
"--"
や"N/A"
が入っている場合は=IFERROR(VALUE(A1), "")
などで対応
SQLの場合:
SELECT CAST(REPLACE(price, '円', '') AS INTEGER) FROM sales;
🔸 ② 曖昧なカテゴリを統一する(マッピング)
例:性別の表記ゆれを統一する(Excel or SQL)
元の値 | 変換後 |
---|---|
M, 男, 男性, 1 | 男性 |
F, 女, 女子, 0 | 女性 |
空白, 不明, その他 | 不明 |
→ Excelなら IF
関数や VLOOKUP
→ SQLなら CASE WHEN
で変換できます:
SELECT CASE WHEN gender IN ('M', '男', '男性', '1') THEN '男性' WHEN gender IN ('F', '女', '女子', '0') THEN '女性' ELSE '不明' END AS gender_cleaned FROM users;
🔸 ③ 異常値を検出する(例:年齢が0歳未満や150歳以上)
SELECT * FROM users WHERE age < 0 OR age > 120;
→ 明らかに「あり得ない値」は除外 or 確認が必要です。
⚠️ 形式ミスマッチが起きる主な原因
原因 | 説明 |
---|---|
入力時の自由記述 | 人が手入力するフォームはゆれが出やすい |
単位付きの文字列 | 「円」「cm」などがデータに含まれる |
自動変換 | Excelが日付と認識して勝手に変換する |
システム間のデータ形式違い | Aシステムでは「1」、Bシステムでは「男」など |
🧠 データクレンジングの考え方
ステップ | やること |
---|---|
① 発見 | フィルタや型チェックで異常値・ゆれを探す |
② 分類 | 無効データか、形式ゆれかを見極める |
③ 修正 | 数値・日付に変換、カテゴリ統一など |
④ 再確認 | 処理後にエラーが出ていないか確認する |
✅ まとめ:形式が違えば“分析不能”になる!
ポイント | 内容 |
---|---|
データの見た目にだまされない | 数字や日付でも実は文字列のことがある |
統一ルールを決める | 特にカテゴリ項目(性別・職種・都道府県など)は要注意 |
自動チェック仕組み化が理想 | 入力ルールの定義やバリデーション設計も視野に |
Best regards, (^^ゞ