データ表の形式 (クロス集計形式・列指向形式)

データ表の形式 (クロス集計形式・列指向形式)

BIツールを初めて試したときに「あれ?!」となる原因は、データ形式の違いにあるのです。クロス集計形式と列指向形式について解説しています。

データ表を保存しておく形式

2020年は国勢調査実施年

 2020年は4年に一度のオリンピック・パラリンピックが東京で開催されるとうことで大いに盛り上がるのだろうと思います。
 我々データマンにとって2020年は5年に一度の国勢調査実施年!前回の調査は2015年、西暦末尾が5と0の年に調査が実施されるわけです。実際に盛り上がるのは国勢調査の集計結果が公表される2022年ですが・・・

 国勢調査は、調査から集計結果公表までのリードタイムが長いためデータの鮮度としては疑問符がつくものの、人口や世帯数が1年や2年のあいだに急変するようなこと考えづらく、少なくとも公表から5年間は有効な基礎データとして活用しもてまったく問題はないと思います。
 しかも、日本全国津々浦々にいたるデータをドーンと公表してくれるからデータ収集にかかる手間暇を省力化でて本当にありがたいです。
 もしも国勢調査結果の結果公表がないと、各自治体のホームページからデータを収集しなければならないことを考えるとゾッとします。

データの保存について

 国勢調査データが5年間有効であるなら5年間は保管しておく必要があります。利用頻度が低ければ、必要なときに必要な統計を「政府統計の窓口 e-Stat」からダウンロードすればよいのだろうと思います。
 一方で、頻繁にデータを利用するような場合はあらかじめ個人のパソコンへダウンロードしておいたほうがよいでしょう。
 さらに、企業内の複数人が頻繁に利用するような場合は、サーバーへダウンロードしておいて用途に応じて必要とするデータの部分へ接続するといった方法が効率的です。

 ちなみに「政府統計の窓口 e-Stat」の一部データにはAPI機能があります。データベースの専門知識があれば活用できるのでしょうが、テクニックがないと手が届きません。「DB」からダウンロードする方法もありますが、保存形式はCSVです。従って、一般的には公表されているエクセルかCSVファイルをダウンロードして利用することになります。

 では、パソコンとかサーバーへはどのような表形式でデータを保存しておくのがベストなのでしょうか?もちろん、データ利用者にとって「扱いやすい」ことがベストな状態ですが、「政府統計の窓口 e-Stat」が公開しているデータ表にはさまざまな形式があります。
 また、国勢調査は5年に一度とはいえ新しいデータが追加されます。そのほか行政データには年次・月次・速報のように国勢調査よりも頻繁に新しいデータが公表されるものが多くあります。そうなると、保存しているデータへ新規データを追加するときのことも考えておく必要があります。

大別すると2形式ある
政府統計の窓口 e-Statより引用

 画像は「政府統計の窓口 e-Stat」の「DB」から「ダウンロード」を選択すると表示される画面。クロス集計形式と列指向形式の特徴がズバリ書いてあるので引用します。

<クロス集計表形式とは>
 Matrix形式、横持ちといいわれる形式です。行・列に設定したセルへ数値が入っています。「画面に表示している表に近いかたちでダウンロードすることができます。」このように記載されているとおり、データ表として視覚的に見やすいことがメリットです。「ダウンロードに時間がかかる場合があります。」これがデメリットです。

<列指向形式とは>
 List形式、縦持ちといわれる形式です。「ツールに取り込むときに適しています。」のとおり、BIツールから接続するときに最適な形式です。
 「クロス集計表形式に比べ速くダウンロードすることができます。」デメリットは表を「見る」だけでは、各数値間の比較が難しいことです。

クロス集計形式

見やすいことが特徴
数値はダミーです

 行の項目と列の項目がクロスしているセルへ入っている値がデータです。北海道(行3)の総計-総人口(列B)は1,800人だということがわかります。
 一目で北海道の総計-総人口は青森県の2倍である、すぐにわかります。このように数値の比較において表の状態のままでも「見やすい」ことがクロス集計形式の特徴です。

 クロス集計形式データ表へ年代別の人口構成批表を追加作成しました。
 65歳以上が全人口に占める割合は北海道よりも青森県の方が高い。一目瞭然、計算式も簡単にできる。数値を見るための表としてクロス集計形式は優れものです。

クロス集計形式データ表からグラフをつくる

<列名の編集が必要です> 
 画像のように列名が行1と行2の両方にあります。このまま「挿入」→「おすすめグラフ」で棒グラフを描画してみましょう。

 表にしたがい12個の横軸が自動的に生成されます。エクセルは行1と行2が列名であることを認識できているといえます。BIツールのタブローもデータインタープリター機能を使用して行1と行2で列名を作成することが可能です。

 しかし、すべての分析ツールにエクセルやタブローのように行1と行2で列名を作成する機能があるとは限りません。このままでは行1を列名、行2以下をデータ(値)として取り込んでしまう可能性があります。 

 基本的にクロス集計形式の列名は1行にまとめて保存しておく方がベターです。

小計・合計の値は必要なのか

 データを保存しておくときに小計や合計は必要なのでしょうか?
 データとしては不要だろうと思います。小計・合計が必要な分析もあれば不要な分析もあります。分析者が必要に応じて小計・合計を計算すればよいのです。

 ただし資料としてデータ表そのものを利用するようなときは、小計・合計があるほうが解りやすい。これは間違いありません。

クロス集計形式のデメリット

 クロス集計形式データ表へタブローから接続します。データの小計・合計は残しています。
 画像のようにディメンション数=1、メージャー数=9になります。

 さっそく、都道府県別の男性・女性の割合にどのような違いがあるのかを確認しましょう。ところが肝心な男性・女性の割合を示すメジャーがありません・・・

エクセルを使い慣れている人がBIツールに対して抱く疑問点

 まず、男性が人口に占める割合の計算メジャーをつくります。次に女性が人口に占める割合の計算してメジャーをつくります。
 男性の15歳未満の割合を分析したければ「男性の15歳未満の÷総計男性の人口」という計算メジャーをつくります。次から次へとメジャーが増えてゆきます。

 計算メジャーを作成するということは、元のデータ表に計算式が入った列をどんどん増やしている状況と同じです。それならエクセルのような表計算ソフトの方が優れています。


 つまり、BIツールを活用して分析するとなると、クロス集計形式とは別の形式でデータを保存しておく必要があるということになります。 

列指向形式

束ねやすい

 列指向形式は項目列ごとに値が対応します。画像のように列A(都道府県)【&】列B(性別)【&】列C(年齢)ごとに一意の値になります。北海道【&】男性【&】15歳未満人口=100(人)です。

E列へ
北海道【&】男性【&】15歳未満でイクラが大好物な人数=20(人)
このような値が追加されるのはOKです。

 列指向形式は必要な行データだけを抜き出して束ねるときに有用性が高い形式です。


 エクセルには、列をフィルターする機能や、列を昇順・降順で並び替える機能がありません(手動ならできる)。行をフィルター・並び替えすることができます。
 列指向形式は行をフィルター・並び替えて、行を束ねることで必要な値を得ることができる形式だとイメージしてもよいでしょう。


 左画像のように都道府県で束ねます。そして束ごとに人口列の値を合計すると都道府県別の総人口値を得ることができます。
 青森県が不要ならばフィルターで除外します。右画像のように年齢で並び替えて束ねることもできます。列Bで男性だけを選択すると男性のみを取り出して集計できます。

 行の束ね方と、束の要不要を指示することで必要な値をを得ることがでます。こうすることでクロス集計形式よりも簡単に必要な値を見つけ出して集計することができるわけです。このことがデータをグラフ化するときに有利性を発揮します。

エクセルのグラフ

  列指向形式のデータ表から「おすすめグラフ」を作成します。エクセルはピボットグラフの作成を指示します。


 横軸がデータの束です。「年齢」の束を優先するのか「都道府県」の束を優先するのかの選択だけで横軸を変更して、別のグラフを見せることができます。

 また、男性女性の構成比は、もともとのデータ表に値がありません。ピボットグラフならもともとのデータ表にない値をつくってくれます。
 クロス集計形式のときは、計算式を入れた列を追加する必要がありました。このようにデータをグラフ化するときには列指向形式が圧倒的に有利な形式なのです。

タブローから接続する

 12個あったメジャーが「人口」だけになります。クロス集計形式とは大違いです。
 表計算をつかえば男性・女性構成比を算出する計算メジャーも不要です。

複数のシートをまとめるときの違い

クロス集計形式

 年や月別にブックやシートが分かれていることがよくあります。複数のブックやシートは1枚の表へまとめて保存します。

 クロス集計形式へ列を追加するかたちでまとまてみます。あらたなデータが公表されるたびに列が右へ右へと、毎年、毎月、増加します。列はフィルターや並び替えができないため、目的の値へたどり着くことがますます困難になります。

 年の列を追加して、新規データは下へくっつけます。コンパクトに収まります。

列指向形式

  列指向形式も同様に「年」の列を追加して下へくっつけます。