FoliumでE-statの人口増地域をヒートマップ表示

やりたいこと

日頃、GoogleAnalyticsや会社独自のデータを取り扱う機会が多い。そうした情報を地図上にプロット。営業・広告戦略立案に役立てたい。ということで冒頭に乗ってる地図情報がサンプル。ヒートマップにて表示されていて「なんか凄いんじゃないか?」感がでていて非常によい。できれば、こういうもので会社の偉い人らを立て続けに殴打したい。

用意するもの

Jupyter notebook
Folium
pandas
json
requests
matplotlib
EstatのAPIアカウント
https://www.e-stat.go.jp/api/apiuser/provisional/

ライブラリ系は全てpipしておけばよいです。

Githubにて

https://github.com/kerion546/folium_estat
今回のコードはここからダウンロードできます。

考えながら作っていく

1. E-statからのデータ取得

会社データ使うわけにはいかないので、オープンデータ探していたら、あるらしい。Estatというらしい。

「政府統計の総合窓口(e-Stat)」は、各府省が公表する統計データを一つにまとめ、統計データの検索をはじめとした、さまざまな機能を備えた政府統計のポータルサイトです。各府省が公表している統計表をExcel・CSV・PDF形式でダウンロードすることが可能です。

とのことなので、ここを使うことにした。APIではアカウント登録をすることで、JSONやXMLでGETすることができて簡単に情報が収集できる。今回は練習を兼ねてJSONでの取得を行った。

2. E-statからのデータ整形

json_resでJupyter Notebookの場合取得データが表示される。非常に汚い。なんだこれはという感じ。paramidである程度情報を絞ってますが、全体像を見たい人は、パラメータ削除の上、データを見てね。ここからもう少しデータをわかりやすく整形していく。
※「こんくらいのデータなら、最初からエクセルで整形した方がいいだろ」と思われた方。正解だと思います。

ここでデータフレームの最初を確認すると・・・


とでてくる。データ確認!よかった(小保方感

3. データ整形-ロケーション情報をデータフレームに入れ込む

これで、都道府県と人口増減データがデータフレーム化できた。ただ、これにロケーションデータが紐づいていないと、ヒートマップ表示ができない。誰か、僕じゃない誰かが「都道府県と緯度経度のデータ」なんかをCSV化してくれてないかなと思ったが、見つけられなかった。仕方なく、色々なコピーなどを行ってCSVを自分で作成。

CSVデータはGithubに同じくあげてるので、なんかの機会あれば使ってください。

都道府県の人口増減数と緯度経度のデータがひもづきました。データ確認!よかった。

地図上に何かしらを表示してみる

まずJupyter用に%matplotlib inline宣言して、インライン表示できるように。foliumもインポート。さっきのデータフレーム上の緯度経度それぞれの平均値をfolium.Mapの引数に、zoom_startを5に設定してみます。

なんもない地図が表示されました。デザイン的にもこなれてていい感じ。

寄り道①県庁所在地にマーカーを表示

folium.Makerにcoordinatesっていう緯度経度のリストを渡して、add_toメソッドでtodohuken_mapへ渡してます。GoogleMapとはまた違う風合いのマーカー表示でできあがりました。

寄り道②県庁所在地をヒートマップ表示

もう少し寄り道するとして、マーカー表示でなくて、ヒートマップ表示ならどうなるのか?

ヒートマップの意味を考えると「?」ですが、情報が密(=県庁所在地同士が近い)な地域は赤くなってます。

人口増減を元にヒートマップ化

緯度、経度、人口増減をそれぞれリスト化。またその数値群をタプル化して、リストに入れてきます。FoliumのHeatMapクラスをインスタンス化する際の1つ目、2つ目を緯度・経度に、3つ目をヒートマップ色が紐づくデータにするようです。(自信ない、誤読してるかも)

最後に、ヒートマップ化。日本の政令指定都市がかろうじて赤いか?というような地図ができました。東京だけ真っ赤ですね。今回指定してないですが、[gradient(色のグラデーション)][min_opacity][max_val]などなどパラメータがあるようです。最後のデザイン気にする場合は指定するとよいかと思います。

できたヒートマップ

ZoomやChatworkでファイル共有している方へ

リモートワークが一般的になってきた今「誰が」「どこで」「何を」ファイル共有しているのかしっかりと把握する必要があります。easyDBを利用すればセキュリティ上で安全なファイル共有をクラウド上で行えるだけでなく、ファイルのバージョン管理等も簡単にできます。
ZoomやChatworkでファイル共有するならセキュリティ上で安全なeasyDB
>>>リモートワーク時代の安全なファイル共有「easyDB」はこちら

この記事に関連する記事