私が作ったデータ取得システム(大げさ)について
統計ダッシュボードの紹介は前回やりましたが、
「統計ダッシュボード」おススメします
続きを見る
今回は統計ダッシュボードのAPI機能を使ってデータを取得し、
取得したデータをグラフ化してブログに張り付ける、私がやっている手法を紹介したいと思います。
(一部コードも公開します。つたないですけどね。ま、スクリプトなんで洗練されてなくてもいいよね?動けばいいんですよ、動けば)
全体の構図としてはこんな感じ
手順を追って見ていくと・・・
step
1統計ダッシュボードのAPIをPythonスクリプトで叩き、データを取得する
ここでは前もって、データを取得したい統計コードをダッシュボードのHPで調べておく必要があります
詳しくはこちら → 統計ダッシュボードAPI概要
統計コード一覧表をエクセルでダウンロードできます(直リンクはしませんので上のリンクからどうぞ)
pythonコードは公開します。(ショボいですけどw)
step
2取得したデータをGoogle spreadsheetに転記する
APIを利用して取得したデータはCSVなどのファイルでそのまま吐き出してもいいんですけど、
運用性、加工性、利便性を考えて私はGoogle spreadsheetに転記することにしました。
Google spreadsheetなら、転記したデータで直接グラフを描くこともできますし、便利ですよ
ただ、これにはGoogleドライブのAPIを利用するための設定が必要になりますが・・・その方法は後で記述します
step
3ブログにグラフを張り付ける
Google spreadsheet上に作成したグラフはそのまんまブログに張り付けて掲載することができます。
しかも、このグラフ、「インタラクティブ」で張り付ければ、spreadsheetで更新した内容が、リアルタイムで
ブログに張り付けたグラフにも反映されるというスグレモノであります。
まあ、前準備というか、やること、手順は結構多いのですが、一個作ってしまえばあとはコピーしてコードを修正していけば、データを追加して行けるんで楽です。
また、統計データが更新された場合でも、作っておいたPythonスクリプトを再度走らせるだけで、Google spreadsheetのデータが更新され、ブログ上のグラフにも自動反映されるので、かなり便利です。
使いこなせば、マイデータベースもできちゃいますよね。
Pythonコードを書く前に事前準備
さてさっそく、Pythonコードを・・・と行きたいことろなんですけど、今回構築するシステムでは二種類のAPIを使っています。
- 統計ダッシュボードのAPI
- GoogleドライブのAPI
というわけなので、上記二つのAPIを利用できるようにしなければなりません。
統計ダッシュボードAPIの仕様
まずは、統計ダッシュボードのAPI仕様についてなのですが・・・
ま、詳しくはこれを見て → 統計ダッシュボードAPI概要
って、ことなんですけど、それだけじゃ味気ないので、
とりあえずAPI実感してみましょうか。
試しに以下のURLを叩いてみてください。(変な詐欺サイトじゃないのでご安心を)
変な数字が呪文のようにずらっと表示されたと思うんですけど、これがAPIでデータを取得したという状態です。(ブラウザ上で表示している状態)
ただ、これ人間が見ても何が何やらサッパリ分からないので、Pythonなどのプログラムで人間が理解できるようなデータ体系に処理するわけですね。
このURLを分解すると
コード | 説明 |
https://dashboard.e-stat.go.jp/api/1.0/JsonStat/getData? | ダッシュボードAPIのベースURL |
IndicatorCode=0301010000010010010 | 系列コード このコードは労働力調査の就業者数(男女計)を表す |
MetaGetFlg=Y | メタ情報を入れるかどうか Yだと入れる まあ、別になくてもいい(デフォルトはN) |
Cycle=1 | データ周期(01:月、02:四半期、03:年、04:年度) |
IsSeasonalAdjustment=1 | 原数値か季節調整値か(01:原数値、02:季調値) |
RegionalRank=2 | 地域階級(01:国、02:全国(日本)、03:都道府県、04:市区町村) |
つまりダッシュボードのAPIはベースURL以降のパラメータ値を変えることで、自分の取得したいデータを取得できるという事です。
上記のURLだと労働力調査、就業者数(男女計)の原数値、月次データを取得ということになります。
他にも設定できるパラメータはありますが、詳細については統計ダッシュボードのAPI仕様を参照ください。
まあ、あと使うとすれば「TimeFrom」かなと。これは取得するデータの時間軸の開始年月を指定するというもの。あんまり、大昔のデータをだらっと吐き出されても困りますので、あらかじめ指定しておいた方が、あとで処理しやすいと思います。
"20000100" ←これで2000年の1月からのデータになります。
四半期だと 20001Q00
結構ややこしいですけど、こればかりは慣れるしかないっすね
GoogleドライブのAPIを使えるようにする
次はGoogleドライブの方ですね。
GoogleドライブでAPIを利用して、スプレッドシートを更新するにはサービスアカウントキー(JSONファイル)を取得しなければいけません。
あ、当然ですけど、事前にGoogleのアカウントを取得しておく必要がありますので、アカウントを持っていない方はアカウントを作ってください。
step
1Google APIsにアクセス
こちらのURLにアクセス
https://console.developers.google.com/cloud-resource-manager?pli=1
プロジェクトを作成をクリック
step
2プロジェクト登録
プロジェクト名はお好みで。場所はデフォルト(組織なし)でOKだと思います。
step
3利用するAPIを追加
ダッシュボードで APIとサービスを有効化をクリック
Google Drive APIを検索しクリック
Google Drive APIを有効化する。
step
4Google Sheets APIを有効化
もう一回ダッシュボードに戻って「sheet」で検索
Google Sheets APIを先ほどのDriveと同様に有効化
step
5サービスアカウントキーを作成
左下の認証情報をクリック
サービスアカウントを管理をクリック
サービスアカウントを作成をクリック
必要事項を記入して、作成をクリック
ロールはprojectの編集者でOKだと思います。
続行をクリック。
必要なのはキーなので、キーを作成をクリック
JSONをチェックし、作成をクリックします。
作成されたJSONファイル(秘密鍵)をダウンロードし、保存してください。
このキーはPythonのスクリプトでGoogle spreadsheetにアクセスするために必要です。
とりあえず今回はここまで、お疲れさまでした。次回は実際にPythonコードの記述に突入します。(かなり自分仕様のコードですけどね!)
あと、キーは無くさないようにしてくださいね。誰かに奪われると、スプレッドシートを勝手にいじられちゃうかもしれません。
また、Googleのサイトデザインは頻繁に変更になりますので、しばらくたったら、この通りの流れでできなくなるかもしれません。その時はなんとか工夫して対処願います。
次のエントリー
統計ダッシュボードAPIでデータ取得 その2~スプレッドシートに書き込んでみる~
続きを見る