PR

e-Stat市区町村データの検索の仕方とサンプルコーディンへの反映

国土数値情報行政区域TopoJSON
この記事は約15分で読めます。

e-Stat(政府統計の総合窓口)のなかで都道府県・市区町村に関するデータのサイトトップは下記になります。

2020年5月時点での収録データに関する内容を引用いたします。

・市区町村データ(基礎データ767項目、指標データ62項目)
・最終更新日:2020-05-13
市区町村データは、平成30年3月31日時点の市区町村で整備しています。

統計情報につきましては項目にもよりますが調査年1980年度以降の情報を表示させることができます。
ただし、市区町村の行政区域につきましては2018年3月31日時点を最新として、調査時に存在した行政地域コードでデータを保持しています。
つまり最新のコードで過去データが洗い替えされている訳ではありません。

なお市区町村・コードと行政地域コードは同じコードになると認識しています。

スポンサーリンク

市区町村データの抽出方法

都道府県と市区町村はトグルボタンでの選択になります。
市区町村を選択し、「データ表示」ボタンをクリックします。

現在の市区町村1916地域から地域候補を選びます。
地域候補は2500地域指定できますから一度にすべて選ぶことも可能です。

選んだら確定ボタンをクッリクします。

次に基礎データの表示項目を選択します。
項目候補は「絞り込み」にある「分野」をプルダウンメニューを選んで変更します。
分野ごとの項目数と項目定義サイトを下記の表にまとめました。

分野 項目数 先頭項目の調査年(項目によって違いがある) 項目定義サイト
A人口・世帯 131 1980年度から5年ごと、2015年度まで https://www.e-stat.go.jp/koumoku/koumoku_teigi/A
B自然環境 9 1981年度から毎年、2017年度まで https://www.e-stat.go.jp/koumoku/koumoku_teigi/B
C経済基盤 199 2009,2014年度 https://www.e-stat.go.jp/koumoku/koumoku_teigi/C
D行政基盤 85 2000年度から毎年、2017年度まで https://www.e-stat.go.jp/koumoku/koumoku_teigi/D
E教育 15 1980年度から毎年、2017年度まで https://www.e-stat.go.jp/koumoku/koumoku_teigi/E
F労働 65 1980年度から5年ごと、2015年度まで https://www.e-stat.go.jp/koumoku/koumoku_teigi/F
G文化・スポーツ 2 1995-1997,1999,2002,2005,2008,2011,2015年度 https://www.e-stat.go.jp/koumoku/koumoku_teigi/G
H居住 197 2003,2008,2013年度 https://www.e-stat.go.jp/koumoku/koumoku_teigi/H
I健康・医療 19 2010,2015年度 https://www.e-stat.go.jp/koumoku/koumoku_teigi/I
J福祉・社会保障 43 2000年度から毎年、2016年度まで https://www.e-stat.go.jp/koumoku/koumoku_teigi/J
K安全 2 1980年度から毎年、2009年度まで https://www.e-stat.go.jp/koumoku/koumoku_teigi/K
合計数 767

項目数の合計は冒頭に引用した「収録データの内容」と一致しています。

ただし残念なことに項目数767に対して一回に選択できるのは25項目までに限定されていますので注意が必要です。

また調査年につきまして分野のなかでの項目により異なっている場合がありますので考慮が必要です。

なお取得する際の項目選択でも注意点がありますので、それは次の章でご説明いたします。

最後に表示項目を選んで確定ボタンをクリックするとデータが表示されます。
なお調査年は最後の画面で指定することができますが、デフォルトでは最新年が表示されています。

調査年を変更するにはプルダウンメニューから該当年を選んで「再表示」ボタンをクリックします。

再表示ボタンの右隣の「凡例表示」につきましては次の章でご説明いたします。

表示されたデータをダウンロードするには右上の「ダウンロード」ボタンをクリックします。

すると左図「表ダウンロード」の画面が開くので、表示されている調査年だけで良ければ「ダウンロード範囲」を赤枠のトルグボタンをクリックします。

ファイル形式はセキュリティの問題が無ければ「XLSX形式」を選択し、最後のコード出力は「出力する」になっている事をご確認ください。

コード出力をしないと行政地域コードが出力されないので注意が必要です。

「注釈」のチェックは外した方が後での加工が楽です。

またカンマ区切りも付けない方が後での加工が楽です。

上図で「ダウンロード」ボタンをクリックすると、左図の画面が表示されてXLSXファイルが作られるので、再度「ダウンロード」ボタンをクリックすると左図ファイル名でデータがパソコンに保存されます。

実際に767項目のデータを検索した結果から

今回行政地域コード「01101」「北海道札幌市中央区」で検索した結果を下記のページに掲載していますので、よろしければご確認いただければ幸いです。

表示される数値以外の項目の凡例表示は最後のデータ表示の画面にリンクが出てくるのですが、気付き難いので下記に引用いたします。

***調査又は集計していないもの
データが得られないもの
X数値が秘匿されているもの

ここでご注意いただきたいのは、「***」と表示されるものの同時に選択する項目を変更することで結果が得られる場合がある点です。

なお「***」が表示された場合は次のような操作で再検索をします。

左図赤枠の項目が「***」になっています。

まずそれ以外の項目のデータをダウンロードして保存しておきます。

その上ので左図の指マークのカーソルの「表示項目設定」をクリックします。

すると表示項目選択の画面が表示されますので、「***」の項目は残して、それ以外の項目は削除します。

そこで「確定」ボタンをクッリクすると検索結果の画面が表示されます。

最終的に「北海道札幌市中央区」では「***」「X」はゼロ件でした。
なお「-」の件数は分野ごとに下記の表でまとめています。

分野「-」数/総数
A人口・世帯0/131
B自然環境2/9
C経済基盤4/199
D行政基盤85/85
E教育0/15
F労働0/65
G文化・スポーツ0/2
H居住2/197
I健康・医療0/19
J福祉・社会保障7/43
K安全0/2
北海道札幌市中央区2020年5月時点

複数項目同時に選択した際に「***」と表示されてしまう要因は推測にはなりますが、「恐らく複数のデータベースから読み込む際に、検索キー項目が選択された項目によって変わってくる」ことによるのではないか?と思います。

これに関して一つ推測されるのは「項目で調査年が異なる」場合です。
例えば、ある項目は2017年度があるのに、別項目では2016年度までしかないようなケースです。

なお「-」になる項目は別の行政区域では得られるものだと思います。
つまり「北海道札幌市中央区のデータはデータベースに登録されていなかった」という判断です。

都道府県ごとのデータをダウンロードした後の作業

ダウンロードしたデータをサンプルコーディングで読み込めるようにするには下記の2つの作業が必要になります。

  1. Excelデータを加工後、CSV UTF-8(コンマ区切り)(*.csv)ファイルで保存して、外部Javascriptファイルに変更する。
  2. データ項目の違いに併せてサンプルコーディングを修正する。

まずは1から順にご説明いたします。

Excelデータの加工と統計データの外部Javascriptファイル作成

ダウンロードしたXLSXファイルを開き列幅を調整すると左図のような形になります。

ヘッダー項目はあっても、無くてもどちらでも大丈夫なのですが、表形式にデータを加工します。

ヘッダー項目はデータ内容が解るように残しています。
左図ではA列とB列は「KEY」「KEYNAME」としていますが特に決まりはありませんので解り易い項目名を付けてください。

この後は「Microsoft無償テキストエディタVisual Studio Codeでのデータ加工方法」にてご説明いたしました形に加工していただくことになるのですが、分野が「A人口・世帯」の北海道に関しては1点追加での作業がございます。

それは「A人口・世帯」の項目定義に次のように記載されているためです。

国勢調査にいう人口とは,調査時に本邦内(歯舞群島,色丹島,国後島及び択捉島並びに島根県隠岐郡隠岐の島町にある竹島を除く。)に常住している者である。

つまりe-Statでは北方四島のデータが含まれていないのに対して、国土数値情報 行政区域データには北方四島の行政区域コードが含まれているので、このままではデータが欠損してしまいます。

e-Stat側の市区町村コードが多い場合は、残念ながらそのデータは分布図には反映されませんが地図情報を表示する上では問題がございません。

例えば北海道であればe-Statには「01100 札幌市」という行政区をまとめた市区町村コードがあるのですが、地図情報には行政区とかぶってしまうので設定がありません。

という事で左図赤枠の部分の市区町村コードを追加しています。(データ部分は情報が無いのでゼロとしています)

サンプルコーディングの修正

サンプルコーディングの項目設定と、今回ダウンロードしたデータ項目の比較は下記の表のようになります。

N03_007行政地域コード
N03_003郡・政令都市名
N03_004市区町村名
A1101総人口(人)
A161001未婚者割合(15歳以上人口)
サンプルコーディングの項目
KEY地域コード
KEYNAME地域
A1101総人口
A130115歳未満人口
A161001未婚者割合(15歳以上人口)
e-Statからダウンロードしたデータ

e-Statの地域の名称には「郡・政令都市名」は含まれていないのですが、そこの違いの解決方法は今回ご説明できていませんのでお含み置きいただければ幸いです。

なお修正箇所は下記のようになります。

  • 「郡・政令都市名」(2番目)と「市区町村名」(3番目)を合体して表示していましたが、「地域」(2番目)に変更
  • 属性情報表示での「総人口」表示を「総人口 - 15歳未満人口」= 「15歳以上総人口」に変更
  • ポップアップ表示に「15歳未満人口」を追加

サンプルコーディング

ポップアップ表示のコーディング
        var j1 = Number(g_arrdata[g_idx][4]);
        var j2 = Number(g_arrdata[g_idx][3]);
        return '<ul><li>'
            + g_arrdata[g_idx][1]
            + g_arrdata[g_idx][2]
            + '</li><li>未婚者割合:  ' + Math.round(j1) + '%'
            + '</li><li>総人口  :' + ('       ' + j2.toLocaleString()).slice(-7).replace(/ /g, ' ') + '人'
            + '</li></ul>';
属性情報表示のコーディング
    var j1 = Number(g_arrdata[g_idx][4]);
    var j2 = Number(g_arrdata[g_idx][3]);
    this._div.innerHTML = '<h4>  未婚者割合分布  </h4>' +
        (fp ? '<pre><b>'
            + g_arrdata[g_idx][1]
            + g_arrdata[g_idx][2]
            + '</b><br>未婚者割合:   <b>' + Math.round(j1) + '%'
            + '</b></b><br>総人口  :<b>' + ('      ' + j2.toLocaleString()).slice(-7) + '人</b>'
        : 'カーソル ON');

今回の修正

ポップアップ表示のコーディング
        var j1 = Number(g_arrdata[g_idx][4]);
        var j2 = Number(g_arrdata[g_idx][2]);
        var j3 = Number(g_arrdata[g_idx][3]);
        return '<ul><li>'
            + g_arrdata[g_idx][1]
            + '</li><li>未婚者割合  :  ' + Math.round(j1) + '%'
            + '</li><li>総人口    :' + ('       ' + j2.toLocaleString()).slice(-7).replace(/ /g, ' ') + '人'
            + '</li><li>15歳未満人口:' + ('       ' + j3.toLocaleString()).slice(-7).replace(/ /g, ' ') + '人'
            + '</li></ul>';
55行目二次元配列g_arrdata[…][2]を追加(総人口の列に該当)
56行目二次元配列g_arrdata[…][3]の内容が総人口から15歳未満人口の列に変更
61行目文字列に「15歳未満人口」表示のコーディングを追加
属性情報表示のコーディング
    var j1 = Number(g_arrdata[g_idx][4]);
    var j2 = Number(g_arrdata[g_idx][2]) - Number(g_arrdata[g_idx][3]);
    this._div.innerHTML = '<h4>  未婚者割合分布  </h4>' +
        (fp ? '<pre><b>'
            + g_arrdata[g_idx][1]
            + '</b><br>未婚者割合  :   <b>' + Math.round(j1) + '%'
            + '</b></b><br>15歳以上人口:<b>' + ('      ' + j2.toLocaleString()).slice(-7) + '人</b>'
        : 'カーソル ON');
69行目「総人口 - 15歳未満人口」= 「15歳以上総人口」に変更
74行目表記を「総人口」から「15歳以上総人口」に変更

最後に

今回はサンプルコーディングの修正による対応方法をご説明いたしましたが、Excelの表データをサンプルコーディングの表データとマージすることで対応できる場合もあることと存じます。

その場合のPower Queryを使用した対処方法につきまして、少しお時間をいただき、改めて別の機会にご説明いたします。

まだ「mapshaperの使い方」などご説明できていない部分もありますが、次回からは各都道府県行政区域TopoJSONデータのご紹介に入りたく存じます。

最後までご一読いただき誠にありがとうございました。