見出し画像

【KNIME】47都道府県のデータでMapViz_02_可視化への道

【JSONデータ処理で四苦八苦】

日本の都道府県別に可視化してみたいと思い立ち、今回は都道府県別にどれぐらいの人口比でCOVID-19陽性の方がいたかを概算しようとしています。

国の感染者数 オープンデータより

全国の感染者数をJSON形式でご利用いただけます。

https://opendata.corona.go.jp/api/Covid19JapanAll

とのことで

画像1

KNIMEでデータの読込は出来ました。

この後どうやって下図のようなTable形式に整形するかは、私はあまりよくわからなかったので四苦八苦したのち、KNIME日本コミュニティで教えていただき下記のworkflow(WF)で実装しました。

画像2

画像3

設定情報は以下の通りです。

画像4


画像5


上図のJSON Pathの設定の書き方がわからなかったので、戸惑いました。

今回ですと'area'の中に括られているので、先に['area']を入れてやる必要があります。スクリーンショットの例ですと、Json-cell previewの [宮崎県] のあたりをクリックすると表示が反転しますので、その状態でAdd collection queryボタンをクリックすればクルクルポンで設定できたりします。

とご助言いただきまして、自分でPathを書かなくても設定できると初めて知りました。

<参考>クルクルポンの記録

① 「Json-cell previewの [宮崎県] のあたりをクリックすると表示が反転」

画像6

② 「その状態でAdd collection queryボタンをクリックすればクルクルポン」

画像7

③ Output Column欄など整えて設定完了


【日本語データの入ったExcelあるある】

人口比を算出するには都道府県別の人口データが必要です。
今回は2019年の都道府県別データを下記サイトからExcel形式でいただいてきました。

<リンク先>
第2表 都道府県,男女別人口及び人口性比―総人口,日本人人口(2019年10月1日現在)(エクセル:20KB)

画像8

Excelで人間が見る限り、美しくて読みやすいです。貴重な情報をありがとうございます。

一方で、KNIMEなどのプログラムで読み込むとなると、いくつか設定に気を付けないといけないです。

画像9

Excelではしばしば人にとっての視認性を重視しますので、あえてデータの入ってない空白行で見た目を整えたり、セルの結合などして美しく項目名を表示したりします。
Excel ReaderはExcelのworksheetを単純な行列として読み込むため、読込結果が人間の意図とは異なっていることもありがちです。

今回はとりあえず読み込む領域を私の方で絞り込んで、比較的効率よく欲しいデータを取り込むように手動で設定しています。

設定:

画像10

結果:

画像11

カラム名がうまく取れなかったり、空白行もありますが欲しいデータは取れました。

【サーバー上のExcelからのデータ取得について】

また、敢えてネット上にあるファイルから直に取ってきています。
下記のリスクについて話したくなったからです。

よくある運用として、チームであるサーバーにExcelファイルを置き、共同編集して最新データを共有したりしませんか?
これ、もしKNIMEなどで自動データ読込とかしていると、運用に気を付けないといけないんですよね。誰かが編集しようと開きっぱなしにしたらエラーが出るとか、レイアウトを変えたら正しくデータが読み込めないとか、ファイル名を更新しちゃったとか。私の周りでも多くの哀しい出来事がありました。

そんなリスクを抱えたくない方は今回のExcelファイルをダウンロードして自分のPC上で読込設定されることをお勧めします。

もちろんそもそもExcelではなくて正規化されたデータを安定して得たい場合はAPIなりデータベースなりの活用を考えられるのではないかと思います。

【全角スペース】

実はこのデータ、さらに前処理が必要です。
ぱっと見た目では気付けなくてJoinerでのデータ統合ではまったのですが、岡山県と沖縄県は

「岡山県 」「沖縄県    」

と全角スペースが入っています。
そこで

画像12

画像13

特別に処理を加えました。これも日本語データが入っているExcelからのデータ抽出ではしばしばあるのではないかと思います。人名の姓と名の間の空白があったりなかったり、半角や全角など多様ですよね。正規表現についてそれほど詳しい方ではないですが、念のためリンクを下記に。

\s  垂直タブ以外のすべての空白文字  [ \t\f\r\n]

なるほど。


【データ統合して対人口比を算出】

最初に上記の2つのデータ群を都道府県名をキーに統合します。

画像14

画像15


そして総感染者数の対人口比を%で算出するため、Math Formulaで計算します。

画像16

画像17

結果:

画像18


【ポリゴンデータの読み込みとデータ統合】

続けて、ポリゴンデータを読み取ってきて統合します。
ポリゴンデータファイル群はWFの.knwfフォルダ内にdataフォルダを作ってフォルダ(prefectures)ごと格納しておきました。相対パスで指定しています。ご自身のPC内のknime-workspaceフォルダを探してください。

画像19

画像20


画像21


Joinerの設定は以下の通り。

画像22

画像23


【ポリゴン可視化設定】

色を決めて、世界地図上に配置します。
設定画面を下記に。

画像24


画像25

範囲を変えたいときは「+」「-」ボタンを使って地図の拡大縮小をすると設定しやすいです。

画像26

画像27

【ノーコードでの可視化結果】

画像28


画像29

概算比データの内容は言及しませんが、このように自分なりに各種統計データを集めてノーコードで可視化が体験できました。


おまけ:

【時代はノーコード、なのか!?】

より美麗な可視化をしたくなった場合は、やはりコーディングが必要になるとは思います。Generic JavaScript Viewという手があるそうなんです。紹介していただいたWFは本当に凄い仕上がりでした。KNIMEでここまでできると言う意味で一見の価値はあるかと思います。

内容としてはKNIME WFではあるものの、その実CSSとJavaScriptでのコーディングですよね。

実は先日下の娘が高校の情報の授業で出た課題について質問してきました。CSSとJavaScriptの基礎学習の様でしたが、わからないと答えると

「お父さん、プログラミングの仕事してるんじゃないの」「ち、ちがうよ(涙目)」「ふーん、XXXXX(自主規制)」「ひぃっ」というやり取りがありました。

JKはノーコードツールの存在を知らなかったようです。

僕の在るべき姿とはなんだ


この記事が参加している募集

X日間やってみた

記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。