オープンデータを取得してみよう:日本政府提供の『次世代統計利用システム』から「統計情報」を取得

Avatar
dstn

マーケティング企画部の渡辺です。

今回は、『次世代統計利用システム』からオープンデータ(統計情報)を取得する方法を紹介します。

『次世代統計利用システム』とは

『次世代統計利用システム』とは、総務省統計局による様々な統計データが REST API にて無料で公開されているサービスです。つまり日本政府によるオープンデータのサービスです。

※オープンデータとは何か、ついてはこちらの記事をご覧ください
http://dstn.appresso.com/blogdetail?id=2713

日本全体に関する統計、経済活動の実態や、どのような人がどこに住んでいるかなどが詳細にわかるデータが大量に提供されています。

なにしろ政府が作成したデータなので質・量ともに圧倒的なデータで、ビジネスにも大変に役立つ情報が大量にあります。なんとそれを無償で利用することができます。

利用者登録をする

執筆時点の現在で、提供されているサービスには「API機能」と「GIS機能」がありますが、今回は「API機能」の「統計情報」を取得して利用する手順を説明をします。

データの利用には、利用者登録が必要です。以下から登録を行いましょう。

利用登録(仮登録)
https://statdb.nstac.go.jp/apiuser/php/index.php?action=provisional

jisedaitoukeiSysten001

上記画面からメールアドレスを仮登録すると、本登録のメールが飛んできます。メールにあるURLをクリックすると、本登録が行えます。本登録を行ってログインすると、利用に必要な「アプリケーションID」を取得できます。

画面上の[アプリケーションIDの取得]をクリックし、[名称]( API機能を利用するアプリケーション名)と[URL](アプリケーションのURL) を入力し、[発行]ボタンを押すと、[appId]の部分に接続に必要な文字列(アプリケーションID)が表示されます。[appId]の文字列は以後の接続にて必要になりますので、メモしておいてください。
jisedaitoukeiSysten002

公開データ一覧取得

まずは、どんなデータがシステムに登録されているか、その一覧を取得しましょう。2014年6月末時点、三種類のデータが提供されています。

・統計情報
・小地域・地域メッシュ
・社会・人口統計体系(都道府県・市区町村のすがた)

今回はまず、「統計情報」を取得してみることにしましょう。データの一覧は以下のURLにアクセスすることでREST/XMLにて取得できます。ウェブブラウザで開いてみてください。

http://statdb.nstac.go.jp/api/1.0b/app/getStatsList?appId=[取得したアプリケーションID]

サイズの大きなXMLがダウンロードされたと思います。現時点ですでに大量のデータが提供されています。XMLですがおおよその意味は解ると思います、様々なデータが利用可能になっていることがわかります。

個別データを取得

では、個別のデータを読み込んでみることにしましょう。

『平成21年経済センサス』から「全国,都道府県,市区町村,14大都市圏」のそれぞれの集計区分ごとに、法人数や従業員数を集計したデータを取得することにしましょう。先ほどのXMLからデータを検索して、統計データのIDを探します。例では、<LIST_INF id=“0003032897”>の「0003032897」が必要な「ID」のデータです。

では、今度はデータ本体を読み込んでみましょう。同じくブラウザで開いてください。

http://statdb.nstac.go.jp/api/1.0b/app/getStatsData?appId=[取得したアプリケーションID]&statsDataId=0003032897

同じくXMLが表示されたと思います。ただ、見ただけではどういうデータなのか解らないと思います。

データの形式の説明

では次に、データ形式の説明をします。大事なのは以下の二つの部分です。

<CLASS_INF>:データについての説明
 <DATA_INF>で使われているデータ値についての説明。
<DATA_INF>:データ本体
 <VALUE>で一つのデータになっている。

データの読み方を説明しましょう。

<VALUE area="01209" cat01="000" cat02="000" cat04="000" tab="042" time="2009000000">422</VALUE>

とある部分は

・「area」が“01209”、「cat01」が“000”、「cat02」が“000”、「cat04」が“000”、「tab」が“042” 、「time」が“2009000000” であるデータの集計値が「422」

だと言っています。では「area」が“01209”とは何のことでしょうか。その説明は<CLASS_INF>に書かれていて、“01209 “とは「夕張市」のことだと解ります。同じようにして意味を読み取ると、

・「H21_地域(全国・都道府県・市区町村・14大都市圏)」が「夕張市」
・「H21_1-2経営組織3区分」が「総数」
・「H21_企業産業分類" が 「A~R全産業(S公務を除く)」
・「H21_12企業類型2区分」が「総数」
・「表章項目」が「法人数」
・ 集計年度が2009年
・そして、以上の条件での集計値が「422」

つまり「2009年の夕張市の法人数は422」というデータでした。

DataSpiderで読み込ませる(一覧データ)

手作業で読み込んで変換処理しても読めますが、大変ですので自動で読み込ませて自動で変換させてみましょう。

まず、データの一覧をXMLで自動取得してみましょう

●「ネットワーク→Web→巡回(ファイル/パラメータ)」 のアダプタを配置して、以下のようなアイコン一つのスクリプトを作成する。
jisedaitoukeiSysten003

●アダプタのプロパティを開き、[接続先]から「追加」を選び、グローバルリソースの作成画面を表示し、以下のように設定する。
→[プロトコル]:HTTP、[ホスト名]:statdb.nstac.go.jp、[ポート番号]:80
jisedaitoukeiSysten004

[接続テスト]をクリックして、接続が成功することを確認してください。
設定が終わったら[完了]をクリックしてグローバルリソースを作成してください。

●以下のように他のプロパティを設定する。
→[パス]:/api/1.0b/app/getStatsList、[エンコード]:UTF-8、[パラメータ]/[ヘッダ名][値]:appId と ユーザ登録で取得したアプリケーションID、[出力ファイル]:/data/openDataList.xml
jisedaitoukeiSysten005

以上にて、公開されているデータ一覧を読みこむ準備が出来ました。

●スクリプトを実行すると、[出力ファイル]で指定した先に、公開されているデータ一覧がxmlファイルで取得されます。

XMLの中身を表示すると、以下のようになっています。
jisedaitoukeiSysten006

DataSpiderで読み込ませる(統計データ)

次に、統計データ本体を読みこんでみましょう。

以下では、データの中から、『平成21年経済センサス-基礎調査 企業等に関する集計 - 経営組織(3区分),企業類型(2区分),企業産業(大分類)別法人数,企業数,事業所数及び男女別従業者数-全国,都道府県,市区町村,14大都市圏』を読みこんでみることにします。このデータのIDは、<LIST_INF id="0003032897">ですから、「0003032897」でデータを取得します。

●「ネットワーク→Web→巡回(ファイル/パラメータ)」 のアダプタを配置して、以下のようなアイコン一つのスクリプトを作成する。
jisedaitoukeiSysten007

●アダプタのプロパティを開き、以下のように設定をします。
→[接続先]:次世代統計利用システム、[パス]:/api/1.0b/app/getStatsData、[エンコード]:UTF-8、[パラメータ]/[ヘッダ名][値]:appId と ユーザ登録で取得したアプリケーションID、[パラメータ]/[ヘッダ名][値]:「statsDataId」と「0003032897」、[出力ファイル]:/data/openData.xml
jisedaitoukeiSysten008

●スクリプトを実行すると、指定したIDのデータを読みこむことが出来ます。

これで統計データが取得できました。

DataSpiderで読み込ませる(CSVに出力)

次に、取り扱いにくいXMLからCSVにデータ形式を変換してみましょう。

●以下のようなスクリプトを作成します。
jisedaitoukeiSysten009

●XML読み込みについて、以下のような設定を行います。
→[ファイル]:/data/openData.xml
jisedaitoukeiSysten010

●CSV書き込みについて、以下のような設定を行います。
→[ファイル]:/data/openData.csv、[列一覧]/[列名]:area, cat01, cat02, cat04, tab, time, value
jisedaitoukeiSysten011

●Mapperに以下のような設定をします
→入力データ側に下記スクリーンショットのように手動でスキーマを設定する。「area」から「time」までは属性で、それ以外は子要素の追加であることに注意
→「VALUE」から「row」に、[繰り返し]-[基本]-[単純な繰り返し]
→以下スクリーンショットのように線をつなぐ。
jisedaitoukeiSysten012

以上で設定は終わりです。実行すると以下のようなCSVが出来上がります。Excelなどでも利用しやすいデータ形式になりました。
jisedaitoukeiSysten013

DataSpiderで読み込ませる(データの内容を変換)

最後に、CSVの内容を人が読める形式に変換します。

まず、「area」を日本語に置き換える処理を作ってみることにしましょう。DataSpiderにはCSVファイルのデータで文字列置換をする機能があるので、これを使って文字列の置換をします。

・<CLASS_INF>以下から、「area」に関連する部分を読みこみ、CSVファイルで置換表(置き換え元のコードと、置き換え後の文字列がペアになったCSV)を出力する。
・既に作ってある<value>を読みこむ機能に、「area」を読みこんだ後、CSVでデータを置換する処理を追加する

●以下のようにスクリプトにアイコンを追加してください。
jisedaitoukeiSysten014

●次に、新しく配置したcsv書き込みアダプタのプロパティを以下のように設定してください。
→[ファイル]:/data/areaCode.csv、[列一覧]/[列名]:[area_code], [area_name]
jisedaitoukeiSysten015

●先ほどの読み込み処理と同じ要領で、Mapperを設定します。ただし今回は、「area」に関連した部分だけ読みこませるので、繰り返しアイコンで「条件による抽出」を用います。
これで、置き換え用のCSVファイルを作る処理ができあがります。
jisedaitoukeiSysten016

●先ほど作成した<VALUE>を読みこむためのMapperを開き、入力側の「area」と出力側の「area」の間に [文字列] - [変換] - [CSVファイルによる置換] のアイコンを配置し、以下のようにプロパティを設定します。
jisedaitoukeiSysten017
以上で設定は完了です。

スクリプトを実行すると、以下のようなCSVが出来ます。きちんと読んで意味が解る形になりました。
jisedaitoukeiSysten018

同じようにして、残りの項目の変換処理を作ると以下のようになります。
jisedaitoukeiSysten019
jisedaitoukeiSysten020
スクリプトを実行すると、以下のような結果が得られます。無事、読んで意味が解る形になりました。
jisedaitoukeiSysten021

Excelで読みこませると以下のようになります。
jisedaitoukeiSysten022

おわりに

変換後のデータを眺めてみると、いろいろなことが解ります。例えば、「O教育,学習支援業」の法人数を確認すると、日本のどこに塾がどれくらいあるのか解ってしまいます。

このように『次世代統計利用システム』では大量のデータが公開されており、データからは様々なことが読み取れます。ぜひDataSpiderを使って、オープンデータを活用していただければと思います。

コメント

ログインしてコメントを残してください。

Powered by Zendesk