人口動態調査 Tableau Prepでやってみる

人口動態調査 Tableau Prepでやってみる

人口動態調査

データ出典

 e-Statの人口動態調査結果データになかに「世界各国における人口動態」というデータがあります。
データ出典:e-Stat政府統計の総合窓口-統計で見る日本-世界各国における人口動態
<データが掲載されているページはこちら>
https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00450011&tstat=000001028897&cycle=7&year=20170&month=0&tclass1=000001053058&tclass2=000001053061&tclass3=000001053063&result_back=1&second=1&second2=1

エクセルデータ
e-Stat 世界各国における人口動態

 データはエクセルで作成されています。画像のように、1枚のシートに複数のデータテーブルが含まれています。

 エクセルの特徴は1枚のシート内でさまざまなことができる、セル単位の計算にすぐれている、ワープロ機能や図形や線の描画機能がつかいやすいことだろうと思っています。エクセルで計算したテーブルに文字や図形を挿入すればプレゼンシートになるし、印刷すればそのまま資料として活用できます。

 このデータをみると、空白行の挿入、セルの結合、列名を見やすいように2行にわける、数種類の線を使い分けるなど様々な工夫を凝らして丁寧に作成していることがわかります。

 ただし、BIツールからこのデータへ接続しようとするとき、
・セルの結合や列名を見やすいように2行にわけていることがかえって接続を難しくしている原因になることがあります。
・また、1枚のシートに複数のテーブルがある場合もBIツール側でテクニカルな作業が必要になります。

 BIツールから接続するデータは行名・列名と数値の羅列、テーブルはシートごとに分かれている状態がベストです。

 このデータの
・「出生数・出生率」のテーブル
・「死亡数・死亡率」のテーブル
 これら2テーブルのみにBIツールから接続したいときに、どうすればよいのでしょうか。

 そもそも政府が公開してくださっている各種データはBIツールでの二次利用を念頭において作成・公表しているものではありませんから、二次利用しようとする側がそれなりの対応をとるべきものです。もちろん各種公表データのなかには生データに近いものや、ポリゴンのような分析ツール専用データもおおくあります。

BIツールで接続する方法

 データはエクセルです。
 BIツールで接続するのであれば、
・不要な行列を取り除いてデータを行名・列名と数値の羅列にする
・テーブルをシートごとに分ければよいのです。
 つまりエクセルデータを加工すればOKです。

 別の方法はBIツールからデータへの接続方法を工夫することです。
 自分で集めたデータは自分で使いやすいように加工しますが、分析者はWebで公開されているオープンデータや売上・会計システムからアウトプットしたデータそのものを加工することはできるかぎり回避したいと思っています。
 データ加工による信ぴょう性の低下というようなことがある一方で、データを提供してくださっている方々への敬意的ななものが何かあるのです。

Tableau Prep

Tableau Prep

 タブロー本体にはデータへ接続するときにユニオンの作成、データ結合、ソート、グルーピングなど様々な機能があります。十分満足レベルの機能ですが、タブロー本体の機能以上につかやすい「Tableau Prep」というアプリがあります。

 今回は、
・「Tableau Prep」で「世界各国における人口動態」データに接続
・タブロー本体で分析が可能な状態にデータを加工してみます。

 もちろんデータ加工といっても元データに何一つ変更が加えられるものではありません。元データは完全に無傷です。

データへ接続する
Tableau Prep データ接続

 「データ接続」からファイル形式を選択してデータへ接続します。
今回のデータはエクセルでシート数は1枚です。
 複数のシートがあるときは各シートが表示されるので、接続するシートをドラッグ&ドロップします。シート数が1枚のときは自動的に接続してくれます。

Tableau Prep ステップの挿入

 +マークをクリックするといくつかの操作を選択できます。ここでは「ステップの挿入」を選択します。クリーニングのステップが挿入されました。

 ツールバーの四角形のようなマークをクリックします。現在、接続しているデータテーブルの状態を確認することができます。1枚のシートをデータテーブルとして認識しようとタブロープレップはがんばりますが、接続しているデータは1枚のシートに複数のデータテーブルがあるし空白行やタイトルなどがあるので分析できるレベルでの接続ができません。

データインタープリター
Tableau Prep データインタープリター

 データインタープリターのチェックボックスをクリックします。
 タブロープレップがテーブルデータだろうと推定するエクセルのセルの範囲を示してくれます。
・「B9:BG22」に「出生数・出生率」のデータが含まれているので、ドラッグ&ドロップします。

Tableau Prep データインタープリターから接続

 エクセルデータで確認すると「B9:BG22」のテーブルのなかで、今回アクセスしたい範囲は「B9:AF:22」です。AGから右の列は要りません。また、「B~AF」のあいだには空白列や「*」が記載されている列がありますから、必要な列だけを取り出す手順を実行します。

・フローに含めるフィールドを選択します。
・「年次」と各国の「Number」「Rate」を選択します。
 これで「出生数・出生率」のデータへ接続できました。

 ちなみに、元のエクセルデータではフィールド名が「日本」「Japan」「数」「Number」のように4行にわかれていました。行がバラバラのフィールド名から「日本 japan 数 Number」のようなフィールド名を自動的につくりだしてくれている!

・「B25:BG38」へ「死亡数・死亡率」のデータが含まれているのでドラッグ&ドロップします。
・フローに含めるフィールドを選択から「年次」と各国の「Number」「Rate」を選択します。

 これで2種類のデータへ接続できました。

データ結合
Tableau Prep データ結合

 各作業が終わるごとにステップを挿入して作業結果を確認することをオススメします。
・クリーニング1の上に重ねるようにクリーニング2をドラッグします。
・「結合」・「ユニオン」が表示されるので「結合」へドロップします。
 ちなみに「結合」はいわゆる横結合、データの列を増やすイメージです。「ユニオン」はいわゆる縦結合、データの行を増やすイメージです。

Tableau Prep データ結合

 結合句をうまく探し出すことができなかったようです。とりあえず「フランス」と「フランス」で結合しようとしています。もうすこし整頓されたデータどうしであればタブロープレップは一発で結合句をみつけてくれます。

Tableau Prep 結合の種類

・結合句「フランス」のところをクリックするとクリーニング1とクリーニング2のどれを結合句にするのかを設定できます。
・「年次Year」を選択します。
・結合のタイプを選択します。
 クリーニング1とクリーニング2はいずれも10行、結合句が完全に一致しているの「内部結合」「左結合」「右結合」のどれを選択しても同じです。タブロープレップが自動で選択した「内部結合」のまま進みます。

 結合のタイプを示すマークの下方に「結合結果のサマリー」が表示されます。四角に囲まれたなかに表示されている数値は、結合するそれぞれのデータの行数です。(フィールド名の行数はカウントしません)クリーニング1が10行、クリーニング2が10行、結合した結果が10行。バッチリ結合できました。

 ここまでのステップで、データは「年次Year」が行、つまりディメンション、国別に「出生数」「出生率」「死亡数」「死亡率」が列になっているので、これらで8×4=32種類のメージャーがある状態になっています。

 最終的には「年次Year」と「国」をディメンション、「出生数」「出生率」「死亡数」「死亡率」の4項目をメジャーにする必要があります。

ピポット
Tableau Prep ピポットの追加

 クリーニングでデータがうまく結合できているのかを確認して
・ピポットを追加します。

・フィールドから国別Number(出生数に該当するデータ)を8か国分複数選択(ctrtキーを押しながらクリック)します。
・ドラッグしてピポットされたフィールドへドロップします。

Tableau Prep ピポットの実行

・+マークをクリックすると新規ピポットされたフィールドがつくられます。
・空白のフィールドへ国別Rate(出生率に該当)
・新規フィールド→国別Number-1(死亡数に該当)
・新規フィールド→国別Rate-1(死亡率に該当)をドロップします。

 これで「年次Year」と「国名」がディメンション、「出生数」「出生率」「死亡数」「死亡率」がメジャーになりました。

値の分割とフィールド名の変更
Tableau Prep 値の分割

・ピポット1の名前フィールドの「・・・」をクリックして「値の分割」を選択します。
・「値の分割」は文字列などの値を区切り文字で分割する機能です。エクセルの「区切り位置」機能に近いイメージです。
・ピポット1の名前は国名を意味します。最初のスペースで前後に値を分割すると国名だけをとりだすことができます。
・「カスタム分割」を選択するとダイアログが開きます。
・半角スペースを入力して「分割」ボタンを押します。

Tableau Prep フィールド名の変更・削除

・必要がないフィールドを削除します。
・フィールド名を変更します。

Tableau Prep データ型変更

・フィールドのデータ型を変更します。
・「国」を「ABC」文字列から「地理的」へ変更します。

 アメリカ合衆国!」のようにタブローの地理名と一致しないときに「!」が表示されます。「アメリカ合衆国」は「米国」へ変更します。そうすると「ABC」マークが地球儀マークに変る・・・はずですが、なぜかうまくできません。タブローでポチっと直せばよいことですから先へすすめます。

タブローで確認
Tableau Prep タブローデスクトッププレビュー

・クリーニング4を右クリック
・「Tableau Desktopでプレビュー」を選択します。
・タブローがクリーニング4に接続した状態で開きます。

 ここまでのステップで思い通りのデータになっているのかを確認できます。
 プレビューで開いたタブローのデータはタブロープレップの元データを更新しても、途中のステップを更新しても変更されません。データを入れ替えてタブロープレップ側ですべてのステップを実行したうえで、タブロー側のデータ更新を実行しても何の変化もありません。タブロープレップ側で何かの変更を行ったときは、「Tableau Desktopでプレビュー」を再度実行します。

出力
Tableau Prep 出力と保存

・「出力の追加」をクリックします。
・参照からデータを保存するディレクトリを選んで名前をつけます。
・「フローの実行」をクリックすると「.hyper」形式でデータができあがります。

Tableau 分析

 タブローからデータへ接続して分析開始です。