Project Maestro(Beta)で奈良県の統計データを前処理してみた #tableau #Maestro

2018.04.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

ごきげんよう。大阪オフィス唯一の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のヘルプです。