今回はQGISを使った演習として、国勢調査2020年の小地域データをもとに、人口構造…具体的には高齢化率を可視化する方法を解説します。
人口データはまちづくりや交通など様々な場面で使われますが、今回は「総人口」「高齢者人口」「高齢化率」という3つの指標に絞って扱います。単純な人口だけでなく、構成比(割合)を見ることがポイントです。
特に高齢化率は、医療・福祉需要の把握や公共交通の維持判断、商圏分析など、実務でもよく使われる指標です。
本記事では、
データ取得・加工 → QGIS取り込み・結合 → 指標作成 → 可視化
という一連の流れで進めていきます。
お題(今回やること)
今回の課題は以下の通りです。
- 国勢調査の「小地域・年齢(5歳階級、4区分)別男女別人口」を加工しQGISで使える形にする
- QGIS上で各地域の「人口総数」「65歳以上人口」を可視化する
- QGIS上で高齢化率(65歳以上人口 ÷ 総人口)を算出する
- QGIS上で高齢化率を可視化する
データ取得~加工
まずは国勢調査のデータを取得します。小地域での統計データは「統計情報のデータ」と「地域の形状データ」に分かれており、また前者についてはダウンロードしたCSV(拡張子はtxt)を開くと、少し癖のある形式になっているため、取得後に加工まで行う必要があります。
国勢調査人口データのダウンロード
政府統計の総合窓口(e-stat)から人口統計データをダウンロードします。ダウンロードサイトは下記の通りです。

今回は「国勢調査>2020年>小地域(町丁・字等)>年齢(5歳階級、4区分)別、男女別人口」からデータをダウンロードします。

可視化したい都道府県を指定してください(今回は広島県を例に作業するため、広島県を選択)。

ダウンロードしたCSV(拡張子はtxt)を開くと、冒頭2行にヘッダー情報が入っています。
- 1行目:項目ID(アルファベットや数値)
- 2行目:日本語の項目名
項目(列名)が複数行にまたがるデータは、QGISをはじめとしたデータ分析の場面では扱いにくいため、通常は1行に整理して扱います。そのため今回は、以下のようにヘッダーを整理します。
- Tから始まる連番より前:1行目を採用
- Tから始まる連番以降:2行目を採用
この作業をしておくと、後の結合や可視化がかなり楽になります。

境界データのダウンロード
次に、地図として表示するための境界データを用意します。ダウンロードサイトは下記の通りです。

「国勢調査>2020年>小地域(町丁・字等(JGD2011)」を選択します。

形式は「世界測地系緯度経度・Shapefile」で問題ありません。

先ほど統計データをダウンロードした地域の中で、可視化したい都道府県及び市区町村等を指定してください(今回は広島県全域を指定します)。

QGIS取り込み・結合
上で取得・加工した2つのデータをQGISに取り込み、1データに結合します。
データの取り込み
Shapefileはそのままドラッグ&ドロップで読み込み可能です。統計データは下記の通り「レイヤ>レイヤを追加>CSVテキストレイヤを追加」から読み込みます。

最上段のファイル欄で先ほど加工したtxtファイルを指定します。その他の設定ポイントは以下の通りです。
- 文字コード:Shift-JIS(またはsjis)
- レコードとフィールドのオプション:破棄するヘッダ行数0、最初の行は属性名は☑
- ジオメトリ定義:ジオメトリなし
また、人口データはデフォルトで「文字列(String)」として読み込まれることがあります。このままだと集計や色分けがしづらいため、サンプルデータ欄で使用する列は整数(64bit)に変更しておくことをおすすめします(今回の場合は「総人口(総数、年齢「不詳」含む)」と「65歳以上人口(総数65歳以上)」)。
以上の確認をしたうえで「追加」を選択。

データの結合(統計データ+境界データ)
次に、境界データと統計データを結合します。まず、境界データを右クリックし「プロパティ」画面を起動します。
レイヤプロパティのポップアップの中で、左メニューバーから「テーブル結合」を選択し、下部の「+」を選択して「ベクタ結合を追加」のポップアップを起動し、以下を設定します。
- 結合するレイヤ:統計データ(例:tblT001082C34)
- 結合基準の属性・ターゲット属性:ともにKEY_CODE
- 結合属性:統計データのうち、可視化に必要な属性(今回は「総人口(総数、年齢「不詳」含む)」と「65歳以上人口(総数65歳以上)」)
設定が終わり次第「OK」を複数回選択し、レイヤプロパティのポップアップを閉じます。

一見、見た目は変わりませんが、属性テーブルを開くと、境界データの属性末尾に人口データが追加されていることが確認できます。

この状態で人口データをもとに境界データを塗分けると以下のようになります。

色の塗分け方法は下記サイトの「色の設定」以降をご覧いただければと思います。
高齢化率の算出
ここからがポイントです。今回は単に国勢調査データに含まれる指標を可視化するだけでなく、含まれるデータをもとに新しい指標を作ります。具体的には「人口総数」と「65歳以上人口」をもとに高齢化率を算出したいと思います。
フィールド計算機を使用
QGIS画面上部から「フィールド計算機」のアイコンを選択します。すると「フィールド計算機」のウィンドウが表示されるので、次の設定を行います。
- 新規フィールドを作成」:☑を選択
- 出力する属性の名前:自由に設定可能(今回は「高齢化率」とします)
- フィールド型:小数点付き数値(real)
また、以下の計算式を設定します。
"65歳以上人口" / "人口総数"
※フィールド名は取り込むデータによって異なるため、右側の検索窓や候補一覧(「フィールドと値」の中に候補が出てきます)から確認しながら指定してください。なお、本記事執筆者の手元データでは、"tblT001082C34_総数65歳以上" / "tblT001082C34_総数、年齢「不詳」含む"となっていました。

OKを選択後、画面上部の「鉛筆アイコン」をクリックしてください。レイヤ一覧にも鉛筆マークが表示されていますが、このアイコンを押すとマークが消えます。これは、編集内容(フィールド計算の結果)が保存された状態を意味します。この状態になれば、作成した項目を可視化に使用できます。

高齢化率の可視化
最後に、高齢化率を地図上で可視化します。
レイヤを右クリックし「プロパティ」を選択、プロパティ画面が開いたら「シンボロジ」タブへ移動します。表示方法は「連続値による定義」を選択し、値に「高齢化率」を指定します。
モードは用途に応じて設定します(下図では等間隔分類を使用)。分類数は5〜10程度が見やすくおすすめです。

モードと分類数を設定後、「分類」をクリックし、「OK」を選択すると、設定した色分けが地図に反映されます。

まとめ
今回は、国勢調査の小地域データをもとに、QGIS上で人口構造を可視化しました。
データ取得・加工 → QGIS取り込み・結合 → 指標作成 → 可視化
と、一見すると手順は多いですが、この一連の流れは人口データに限らず、
- 商圏分析
- 医療・福祉分野の分析
- 交通やまちづくりの検討
など、さまざまな場面でそのまま応用できます。
特に今回のように、既存データをそのまま使うのではなく、「高齢化率」など既存データから指標を作ることもデータ利活用にあたっては重要です。
QGISは単なるデータ可視化ツールではなく分析ツールとしての機能も充実しているため、次回以降は分析に関する演習を進めたいと思います。

