集計する前に整える——欠損・重複・単位・表記揺れの見分け方

架空の学習記録を使い、値がないこと、同じ記録が二つあること、単位や文字の違いを区別する。元データを残し、処理の根拠と件数を説明できる前処理を学ぶ。

この単元の目標
  • 欠損と実測の0を区別し、平均の分母と報告対象を説明できる
  • 1行が表す対象と識別キーを決め、重複候補と別の観測を見分けられる
  • 単位変換と表記統一を、意味を確かめてから適用できる
  • 元データ・変換規則・件数の記録を残し、前処理の結果を検証できる
📑 目次
  1. 1. なぜ「計算の前」に仕事があるのか
  2. 2. 最初に「1行は何か」を決める
  3. 3. 欠損は「量」ではなく「状態」
  4. 4. 重複は「似ている」だけで削除しない
  5. 5. 単位の統一と表記の統一は別の操作
  6. 6. 直した結果を、後から説明できるようにする
  7. 根拠と適用範囲

1. なぜ「計算の前」に仕事があるのか

買い物の合計で、500円と「未入力」を同じ500円として足すことはできません。データも同じです。計算機は数を速く足せても、その空欄が未回答なのか、0を意味するのかは自動では分かりません。前処理は、集計したい意味に合わせてデータの状態を確かめ、説明できる形に整える作業です。見た目をきれいにするだけではありません。

以下の記録・施設名・識別子はすべて教材用の架空データです。実在する生徒や学校の統計ではありません。既存の「データの活用とモデル化」から一歩進み、ここでは予測や相関ではなく、集計用の表をどう作り、その作り方を検証するかに集中します。

2. 最初に「1行は何か」を決める

同じ人が同じ時間だけ勉強した日が二日あっても、それは二つの記録です。そこで、今回は「1行=1件の学習日の記録」と決めます。記録IDは記録を識別する文字列で、別の日の記録には別IDを付ける仕様です。取り込み時に同じ記録を二度コピーした可能性があります。IDが同じ行でも内容が違えば、どちらが正しいか確認するまで確定できません。

取込行記録ID学習時間の原文場所の原文確認済みの事情
1R0130 min図書室回答済み
2R020.5 h 図書室 回答済み。場所の前後に空白
3R020.5 h 図書室 行2を取り込み時に再コピー
4R03空欄自宅時間だけ未回答
5R040 min自宅勉強しなかったと回答
6R051 hとしょしつこの調査では「図書室」の別表記と確認済み

目標は「重複を除いた記録について、回答された学習時間の平均を分で報告する」ことです。まず表を見て、数値化より先に保留したい行を指してみましょう。行4は時間が不明、行3はコピー、行2と6は単位変換が必要です。場所の表記の確認は、時間の計算とは別の問題です。

種類意味の違いこの表での扱い
欠損必要な値が記録されていないR03は未回答という状態を残す
重複同じ対象の記録が余分に入っているコピーと確認済みの行3を集計対象から外す
単位の混在数の尺度が異なるhをminに換算し、単位列もそろえる
表記揺れ同じ意味が違う文字列で書かれている確認済みの対応表で場所を統一する

3. 欠損は「量」ではなく「状態」

0分は、測る対象の時間が0だったという回答です。未回答は、時間が分からないという状態です。空欄を0に置き換えると、知らなかった時間を「勉強しなかった」という情報に変えてしまいます。欠損には未回答、測定不能、そもそも対象外などの理由があり、同じ記号で表示していても理由を別の列に残すと後で判断できます。

空欄・「不明」・「—」・「999」などを一律に欠損と決めないでください。999が有効な測定値のこともあります。入力仕様を確認して欠損記号を定めます。また、文字を数値に変換する際に空文字が0になる処理もあるため、数値化の前に欠損を判定することが重要です。

時間が分かった記録だけの平均なら、分母は元の行数ではなく、有効な回答数です。以下でVは重複処理後に時間が分かった記録の集合、nはその件数、tᵢは分に統一した時間です。nが正のときだけ平均を計算でき、n=0なら「算出できない」と報告します。

n=∣V∣>0,tˉobs=∑i∈Vtinn=|V|>0,\qquad \bar{t}_{\mathrm{obs}}=\frac{\sum_{i\in V}t_i}{n}
欠損を除いた平均が、全員・全記録の平均を正しく推定するとは限りません。例えば長時間学習した人ほど未回答なら、回答済みだけの平均には偏りがあり得ます。平均値による穴埋めも、仮定に基づく推定値であって観測値の回復ではありません。欠損理由、対象、件数を併記しましょう。

4. 重複は「似ている」だけで削除しない

名簿に同姓同名があるからといって、一人を消すことはできません。今回なら、同じ30分でもR01とR02は別の記録です。重複判定に使う列の組をキーといい、この表では記録IDを使います。別の調査では「対象IDと日付」の組が必要かもしれません。キーは分析の目的と収集仕様に合わせて決めます。

  1. 同じキーの行を重複候補として集める。キー自体が空欄なら、空欄同士を一つの対象とみなさず確認に回す。
  2. 同じキーで内容も同じ、かつ再コピーと確認できたら、余分なコピーを集計対象から外す。元データは消さない。
  3. 同じキーなのに値が異なれば、更新履歴や原票を確認する。根拠なしに先頭の行だけ残したり、平均を取ったりしない。
重複削除で平均が変わらなかったとしても、処理が不要だったとはいえません。同じ観測を二度数えると件数が水増しされます。平均だけでなく、記録数、合計、欠損数も照合してください。

5. 単位の統一と表記の統一は別の操作

「0.5」と「30」の大小を比べる前に、何の単位かを読みます。0.5時間と30分は同じ長さです。単位統一は数量を保つ変換であり、hをminという文字に置き換えるだけでは不十分です。数値と単位を別々の列に分けると、単位を失う事故を防ぎやすくなります。ここでは1時間=60分を使い、途中では丸めません。

tmin=60th,0.5 h=30 mint_{\mathrm{min}}=60t_{\mathrm{h}},\qquad 0.5\,\mathrm{h}=30\,\mathrm{min}

一方、場所の「 図書室 」は前後の空白を除去し、「としょしつ」は確認済みの対応表で「図書室」に変換します。これは量の換算ではなく、分類のための文字列の標準化です。「図書館」と「図書室」は似ていても別施設かもしれず、勝手に統合しません。大文字小文字、全角半角などをそろえてよいかも列ごとに判断します。

識別子「0012」を数値の12に変えると、先頭の0が失われます。商品コードや郵便番号など、計算しない番号は文字列として扱うのが適切な場合があります。また、単位のない「30」は30分とは断定できません。仕様・原票で確認できなければ保留します。
例題1:6行の表から、何件の平均を報告する?

上の架空表を使う。行3のコピーを除外し、時間を分にそろえる。回答された時間の平均と欠損件数を報告しよう。さらに、R03を誤って0分にした場合、そしてコピーを残した場合と比較しよう。

解答・解説

コピー除外後は5記録。分にそろえるとR01=30、R02=30、R03=欠損、R04=0、R05=60です。有効4記録の合計は120分、平均は120÷4=**30分**。報告は「5記録中、有効4記録の平均30分、時間未回答1記録」とします。欠損を0にすると120÷5=24分となり、架空の0を加えた結果です。コピーを残して欠損だけ除くと合計150分、有効5行で平均30分のままですが、件数も合計も誤りです。実際の全5記録の平均は、欠損時間が分からない限り確定できません。

例題2:単位が混ざった散歩距離

別の架空表に、独立した3回の散歩距離「1.2 km」「800 m」「0.5 km」がある。欠損・重複はなく、表示値を計算用の値として扱う。m単位の平均距離を求めよう。数だけを取り出して足してはいけないのはなぜか。

解答・解説

1 km=1000 mなので1200 m、800 m、500 mにそろえます。合計2500 mを3回で割り、平均は2500÷3 m、**約833.3 m**(小数第1位に丸める)です。1.2+800+0.5では、異なる尺度の数を混ぜており、意味のある合計距離になりません。この表示桁数は測定精度を保証するものではありません。

6. 直した結果を、後から説明できるようにする

前処理後の表だけを保存すると、なぜ値が変わったか追えません。元の表を読み取り用として残し、作業用の表に「元の行番号」「原文」「変換後の値」「処理理由」を持たせます。行を捨てるのではなく、集計対象フラグと理由を付ける方法なら、コピーの除外も確認できます。ルールを先に書き、同じ入力から同じ結果を作れるようにしましょう。

確認箇所例題1の検証結果
取込件数と重複6行 − 確認済みのコピー1行 = 5記録
回答状態有効4記録 + 欠損1記録 = 5記録
時間の制約有効値はすべてmin、非負。0は有効値として残る
場所の分類図書室3記録、自宅2記録。場所の集計には時間未回答のR03も含む
処理の再適用既にminの値を再度60倍しない。既に統一済みの表記やキーは変わらない

同じ表でも、時間平均と場所の件数では必要な列が違います。時間が欠損だからといってR03の行全体を消すと、分かっている「自宅」という回答も失われます。必要な列に応じて対象を選び、集計ごとの分母を説明することが大切です。異常に大きい値も、期待する結果に合わせて削除せず、単位違い・誤入力・本当に長い時間のどれかを確認します。

練習:処理の理由も答える
  1. 架空の4記録の学習時間は「10 min」「0 min」「未回答」「50 min」。重複はない。有効記録の平均と、未回答を0にした平均を比べよう。

    解答・解説

    有効3記録の平均は60÷3=20分。未回答を0にすると60÷4=15分です。実測の0は分母に含めますが、未回答を0とする根拠はありません。全4記録の真の平均は不明です。

  2. キーが記録IDの表に、P01=20分、P02=20分、P01=25分がある。どの行を重複候補にし、どう扱うか。更新時刻などの追加情報はない。

    解答・解説

    二つのP01が同じキーの候補ですが値が食い違うため、どちらを残すかは確定できず原票などを確認します。P02は別IDなので、20分が同じという理由では除外しません。

  3. 独立した2回の作業時間が0.25 hと45 minだった。どちらも回答済みで、表示値を正確な計算値として扱う。分単位の合計と平均を求めよう。

    解答・解説

    0.25×60=15分。合計15+45=60分、平均60÷2=30分です。0.25をそのまま45に足すことはできません。

  4. 施設名「体育館」「 体育館 」「体育室」がある。前後の空白は無意味と確認できたが、施設一覧はまだない。どこまで統一できるか。

    解答・解説

    「 体育館 」の前後の空白は除いて「体育館」にできます。「体育室」は別施設の可能性があるため、施設一覧や原票で確認するまで統合しません。原文と変換理由を残します。

  5. 取込10行から確認済みコピーを2行除外した。残りに時間の欠損が3記録ある。時間平均の分母はいくつか。また、場所が全件回答済みなら、場所の件数集計の対象はいくつか。

    解答・解説

    重複処理後は8記録、時間が有効なのは8−3=5記録なので平均の分母は5。場所の集計は8記録です。時間の欠損を理由に行全体を削除しないため、対象件数が異なります。

確認クイズ

問1. 学習時間の空欄を0にする前に最も必要なのは?

問2. 記録IDが別で、学習時間だけがどちらも30分だった。正しい判断は?

問3. 0.75 hをmin単位で記録すると?

問4. 表記統一の作業として適切なのは?

問5. 重複除外の前後で平均が一致した。何がいえる?

根拠と適用範囲

本記事の数値はすべて自作の架空データから、平均=合計÷有効件数、1 h=60 min、1 km=1000 mを用いて計算しています。実社会の学習時間の分布や施設利用率を示す統計ではありません。IDの一意性・コピーの事情・施設名の対応は教材内で明記した条件であり、現実の表では収集仕様や原票で確認が必要です。欠損値の推定法の優劣や、個別ソフトの自動変換規則を一般化するものではありません。

📝 メモこの端末のみに保存
メモ欄はページ読み込み後に使えるようになります。