Project Maestro(Beta)で奈良県の統計データを前処理してみた #tableau #Maestro
はじめに
ごきげんよう。大阪オフィス唯一のDI部メンバー、tamaでございます。
Tableau社が以前より予告していた新プロダクトである「Project Maestro」ですが、実は、現在ベータ版を無料で試せるようになっています。
下記ページの下部にある「今すぐ登録する」からTableauアカウントを登録します。しばらくするとベータ版のダウンロードリンクがメールで案内されます。
現在私は奈良県葛城市に住んでいますが、「葛城市って奈良県の中でどのくらい広いのか」という疑問がここ最近頭の中で渦巻いており、夜も眠れません。ですので、奈良県が提供しているデータをTableauで分析したい…のですが、自治体が提供しているデータは、分析するにあたっては結構クセがある形となっており、いきなりTableauで接続しても、ちょっと面倒くさいです。
そこで、今回は私が住んでいる奈良県のデータを、Project Maestroで前処理してみたいと思います。
※あくまで「奈良県の各市区町村の広さを可視化する」という目的のための前処理なので、Maestroの各機能を網羅するようなエントリにはなっておりません。
そもそもProject Maestroとは?
一言でいうと、Tableauで使いやすい形にデータを加工するためのデスクトップ用ツールといったところでしょうか。
データ前処理ツールといえば、既にAlteryx等のツールが存在しています。例えばAlteryxは前処理だけでなく、空間情報処理や統計分析など多種多様な分析行ったり、AWSやDataRobot等のあらゆる他ツールと連携したりすることができます。対してMaestroは機能をシンプルな前処理関連に絞り込み、Tableau向けに特化させたツールといえます。(Tableauと併用することを前提に開発されています。)
準備
ゴール
- 奈良県の市区町村の面積データを、Tableauで扱いやすいように前処理する。
作業環境
- MacOS High Sierra 10.13.3
- Project Maestro Beta 0.4
- (Tableau Desktop 10.5)
使用データ
- 奈良県の市区町村の面積データ
奈良県の市区町村のデータを入手する
上記リンク先のページから「人口(xls 1188KB)」をダウンロードします。
実際に使ってみる
Maestroにデータを読み込ませる
何はともあれ、まずは先ほど入手したExcelデータをMaestroで読み込みます。左上の「connections」から「Microsoft Excel」を選択し、先ほどのデータを選択します。
すると、メニューの左側に、読み込んだExcelの各シートがズラっと並びます。今回は市区町村別の面積データがほしいので、「1-2.市区町村別面積」をダブルクリックします。すると、シート内のデータが読み込まれます。
読み込まれたデータの各カラムの情報が確認できますが、ちょっと変な感じです。おそらく、Excelファイルにありがちな、凝った段組がなされていると予想します。Excelで見る分にはよいのですが、分析で使用するにはツライものがあります。
そんな時は「データインタープリター」機能を使用しましょう。これは、読み込んだExcelの中から、データに関する部分だけキレイに抽出してくれる機能になります。(実はTableau Desktopにもある機能です。)
画面左側の「Use Data Interpreter」にチェックを入れましょう。(上記画像参照)すると、下記のようにデータがいい感じに整形されます。
だいぶキレイに読み込めるようになりました。データを見てみますと、市区町村毎にカラムが分かれている形式になっています。これでも分析できないことはないですが、Tableauで扱うのであれば縦持ちの方が何かと都合が良いです。「市区町村」という1つのカラムに、各市区町村の名称が入っている方がよい…つまり今回の前処理のメインは「ピボット処理」である…という方針がここで出てきました。
では、実際にピボット処理+細かい調整に入ってきます。
カラムの型変換を行う
具体的な処理に入る前に、この画面で1つだけ作業しておきます。それは、「単位:㎢ 年 次」という項目の型を文字列にしておく作業です。理由は後で行う処理のためです。(具体的な内容は後述)
型変換の仕方はTableauのデータソース画面とほとんど同じです。カラムにあるアイコンを選択して任意の型を選びましょう。
不要なカラムを消す
Maestroは画面上部に処理の流れが表示されていきますが、処理の追加もこの部分が行うことができます。まず、ピボット処理をする前に、細々した調整をしたいので、データ部分のプラスマークを選択し、「Add Step」を選択します。
すると、下記のような画面になります。
Add Stepを選択すると「clean」という処理が追加されます。ここではカラム単位に前処理を実施することができます。
とりあえず、今回は市区町村別のデータがあればいいので、県合計、市合計、郡合計にあたるカラムは取っ払っちゃいます。カラムの逆三角マークからメニューを開いて、「Remove Field」を選べば、そのカラムを削除できます。
混在している文字列を除去する
次に、各カラムをザッと見てみますと、面積データなのに、一部文字列となっているカラムがあります。文字列だと値の大小の比較ができません。処理を施す必要がありそうです。
この画面では、各カラムの値を確認することができますが、どうやら一部のデータにはアルファベットが混在していることがわかりました。ですので、該当カラムは文字列だけ削除したいと思います。
Remove Fieldと同じく、カラムの逆三角のメニュー→Clean→Remove Lettersでカラムのデータ内の文字列を削除することができます。
これを該当するカラムに順次適用していきましょう。
そして文字列が無くなった後で、そのカラムを数値型に変換します。(この画面でも、先ほどと同じ様に型変換できます)
スペースを除去する
このデータには年を表すカラムがあります。(名前がややこしいので「年次」にリネームします。リネームも上記と同じメニューからできます。)この年次データを見てみると、変なスペースが入ってるように見受けられます。このスペースも除去しましょう。
これも今までと同じメニューからできます。Clean→Trim Spaceから実行できます。
手動で直接除去する
スペースが除去できた…と思いきや、微妙に消されていないスペースがあります。原因は不明ですが、消されていないデータは少ないので、いっそのこと直接編集して消しましょう。
スペースが入っている項目を右クリックして「Edit」を選ぶと、値を直接いじることができます。これでスペースを除去しましょう。
行った処理の履歴
ちなみに、画面の左側には、行った処理が1つ1つ記録されているので、自分が何の処理をどれだけやったかは、この部分で確認することができます。(その処理の編集も可能です。)
ピボット処理
それでは、いよいよピボット処理に入ります。最初の時と同様、上部の処理フローの画面からプラスマークを選択し、「Add Pivot」を選びます。
すると、ピボット処理の画面になります。ここで、縦持ちにしたいカラムを選択し、Pivot1 Valueの部分にドラッグします。今回は各市区町村別に分かれているカラムを「市区町村」という1つのカラムにしたいので、市区町村のカラムを全部選択してドラッグします。
1つのカラムになりました。デフォルトでつけられる名前は分かりづらいので、この画面でカラム名を変えておきます。
最終調整(年次データの調整)
今回の前処理でやりたいことは大体終わりましたが、データを出力する前に、最後にキレイにできるところはしておきましょう。もう一つAdd Stepをして、Clean処理を追加します。
年次のデータですが、「昭和40年」と「平成元年」は年号が入っていますが、他の年は数値のみです。ちょっと分析しづらい感じになっているので、全てに年号を付与したいと思います。
こういったちょっとだけ複雑な処理は計算フィールドで定義することができます。例の逆三角メニューから「Created Calculated Field…」を選択すると、Tableauでもお馴染みの計算フィールドが出てきます。もちろんTableauと同じ関数が使用できるので、いつもの感じで処理したい式を記述しましょう。
IF INT([年次]) >= 30 THEN "昭和" + [年次] + '年' ELSEIF INT([年次]) < 30 THEN "平成" + [年次] + '年' ELSE [年次] END
あまりちゃんとした方法ではありませんが、今回はとりあえず、数値が30以上だったら昭和を付与し、30未満だったら平成を付与する式で凌ぎます。(この計算のため、冒頭で年次カラムを文字列に変換しています。じゃないと元々入っている年号が消えてしまい、nullが2つ発生し、どっちが昭和でどっちが平成かわからなくなるため)
上記を実行すると、計算フィールドで計算されたデータのカラムが新規作成されます。
NULLを除外する
面積データのカラムを見ると、NULLが少し存在します。年別の市区町村データということで、合併に伴う消滅とかなんとかで値が無かったり、そもそも入力されていなかったり、事情はそんなところでしょう。今回やりたい分析では、別に値の無いデータは不要なので、除外したいと思います。
NULL部分のデータを右クリック→Excludeで、そのデータを除外できます。
出力
前処理があらかた終わったところで、実際にデータを出力してみましょう。
上部のフロー画面から、またまたプラスマークを選択し、「Add output」を選択します。すると、データ出力の画面になります。
「ファイルとして保存」か「Tableau Serverにパブリッシュ」を選ぶことが出来ますが、今回はファイルとして保存します。せっかくなのでHyper形式で保存します。
データのプレビューも確認し、問題が無ければ左下の「Run Flow」を選択すると、ファイルが出力されます!
Tableauで読み込んでみる
では、前処理を済ませたデータを、さっそくTableauで読み込んでみましょう。
ちゃんと処理した通りになっていますね。先に処理を済ませているので、ここからはVizの作成に集中できます。
面積の比較がしたかったので、ツリーマップを作成してみました。上記画像は平成27年時点の、郡以外の市区町村の比較です。葛城市せま!
おわりに
今回は実際のデータでMaestroを使ってみました。エントリの最初でも述べてますが、決して今回は各機能を網羅していません。(むしろ使っている機能は少なめ)他にも各種集計や結合といったこともMaestroは可能です。
例えば、上記の面積Vizを眺めていると「十津川って広いけど絶対人口少ないよな…人口データもVizに乗せてみたい」的なことが思い浮かんだりします。そんな時は、今回作ったフローに、人口データを結合する処理を加えれば、簡単に実現することが可能です。その内容のエントリも書いてみたいですね。
現在、ベータ版は無料で試用できるので、よかったら試してみて下さい。
奈良からは以上です。
参考
- https://onlinehelp.tableau.com/v0.0/maestro/en-us/help.html
- Maestroのヘルプです。