ねこすたっと

ねこの気持ちと統計について悩む筆者の備忘録的ページ。

高校生のためのデータ分析入門 (29):キレイな分析用データセットを作成しよう

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書いてきました。今回と次回で、実際にデータを分析する準備をしていきましょう。

分析を始める前にデータをキレイにしよう

データ分析は、そもそもデータがなければ始まりません。 データは、組織の中で収集されるものだけでなく、外部機関(政府、自治体、国際機関など)から提供されるものもあります。無料で利用できるものもあれば、有料*1で提供されるものもあります。

データの源が何であれ、分析するためには、まずデータセットを「キレイな状態」にする必要があります。データを分析可能なキレイな状態にすることを、「前処理」と言ったりします。一見地味ですが、「データ分析は8割が前処理!」と言っても過言ではないほど重要なステップです。

キレイなデータセットとは

データセットは、

  • 1つの対象者の情報が、1つの行に収められている
  • 1つの項目(変数)が、1つの列に収められている
  • 1つの値が、1つのセル(=マス)に収められている

が基本です。 下に示したのはダメな例ですが、どこがダメなのか考えてみましょう。

1つの列には1つの特性のみ収める

「後期の期末成績」を見てください。点数と5段階評価がまとめられていますね。 つまり、1つの列に2つの特性(= 属性(attribute)と言います)が格納されてしまっています。 一見すると数値が収められているように見えますが、"( )" が入っているため、文字列として認識されます。 このままだと平均点を計算するときに、年間総合評点が邪魔になってしまいます。

「所属クラブ」についても、複数の所属先がまとめて1つの列に格納されていますが、 所属のパターンが多くなり、このままでは「テニス部に入っている人は何人いるか」などを集計することが難しいです。 例えば、「運動部」「文化部」と複数の列に分けて情報を収めておく方が、使いやすいデータセットになるかもしれません。

1つの列に収める属性は1つにしておきましょう。後で属性と属性をくっつけてまとめる(例:"1組", "1番" → "1-1")のは簡単にできますから。

1つの行で1人のデータが完結している

次に「組」の列を見てください。同じ組の人の部分はセルが結合されていますね。 確かに、人間が見るときは余計な繰り返しがない方が見やすいですが、分析するためには「1行取り出せば1人のデータが完結している状態」になっている必要があります。

見出し行は1行に

データを収めた表(データテーブル)の一番上には、各列に収められている特性を示す「変数名」を書きます。 これを「見出し行(header)」と言います。 どこまでが見出しなのか分からなくなるので、見出し行は1行だけにする約束になっています。

入力は文字情報のみ(できれば半角英数だけ)

ExcelやGoogleスプレッドシートでは、セルに色をつけることができますよね。「血液型」は色分けされていて見やすくなっていますが、解析ソフトには色の情報は反映されません。 文字として入力した情報だけが読み取られます。また、2組1番の宍粟さんは前期の期末試験は欠席でしたが、このセルに斜線を引いておいても解析ソフトには読み込めません。欠測値には「NA(not available)」と入れておきましょう

自分でデータセットを作る場合は、慣れるまでは「変数名を含め、半角英数字だけ*2使う」とした方が余計なトラブルが少ないです。さっきのデータの中に1箇所、誤って入力されている部分があるのが分かりますか?

1組2組の神戸さんの数学の中間結果だけが全角で入力されちゃってます。これはエラーのもと!

上記に注意して作成し直すと、次のようになります。

横型データと縦型データ

さっき「1行に1人分」と説明しましたが、これは分析の方針によります。 例えば、1回の試験を分析単位にする場合は、下の表のように1行ごとに試験の結果が入っている方が扱いやすいです。

1人の生徒につき4行分必要になるので、元のデータよりも縦長になりますね。 元のデータセットのように、反復して測定した結果(= テストの点数)を横に並べたものを横型データ、あるいは横持ちデータ(wide format data)と言います。 これに対して、反復測定した結果を縦に並べたものを縦型データ、あるいは縦持ちデータ(long format data)と言います。

横型と縦型は互いに変換することが可能で、用いる解析方法によって選択します。

複数のデータテーブルを統合して使う

これまでデータセットは最初から1つの塊として収集(あるいは提供)されるものとして話してきましたが、実際はいくつかのデータテーブルに分かれていることが少なくありません。

例えば、生徒の組と所属クラブのデータセットは、下の2つのデータテーブルを元にして作成することができますね。

「生徒番号」によって2つのデータが関連付けられています。このように、複数のデータテーブルに分けて保管された一連のデータの集合を、関係データベース(relational database)と言います。

「生徒番号」のように、データテーブルを結びつけるための列を「キー(key)」と呼びます。キーとなる項目は、重複や空欄があってはいけません(同姓同名がいる可能性があるので、名前はキーにしない方がいいです)。

場合によっては複数の項目を組み合わせてキーにすることがあります。 例えば、病院の入院記録データは、患者ごとに固有のカルテ番号だけではキーになりません。同じ人が複数回入院する可能性があるからです。しかし、同じ人が同じ日に2回入院することはないので、カルテ番号と入院年月日を組み合わせればキーにすることができます。

なぜ、わざわざ複数のデータテーブルに分けるんだろう?と思うかもしれませんが、その方が整理・管理が簡単だからです。管理するときは分けておく方が便利ですが、分析するときは1つにまとめる必要があります

おわりに

  • 自分でデータセットを準備するときは、半角英数に限定しておくと良いと言いましたが、外部から提供されるデータを扱うときはそうはいきません。全角を半角に直したり、文字列から数値だけを切り出したりするスキルが必要になります。
  • データセットを扱う場合は個人情報にも気をつけましょう。名前、住所、電話番号など個人を特定できる情報は、顧客管理としては必要ですがデータ分析には不要なものが多いです。
  • 次回:高校生のためのデータ分析入門 (30):解析環境を準備しよう! - ねこすたっと

*1:情報は価値ある商品になりえます

*2:数字から始まる変数名や、一部の記号は受け付けてくれない場合があります。また、単語と単語の間にスペースを入れると、何個入っているのか分からなくなるのでやめましょう。