Node.js v18.12.1 / Chart.js 3.9.1
総務省の公開データを使って、都道府県ごとに、自治体の歳入/歳出額を主要な科目ごとに表示する。人口データを利用し一人あたりの金額を表示する。金額の多い順に都道府県を並べ替える。
2020年度(令和4)都道府県別歳入
グラフの縦軸は、都道府県ごとに、科目ごとの金額を積み上げる。金額は「総額」と「一人当たりの金額」を切り替えることができる。都道府県の並びは、「総額」たたは「地方交付税」の多い順で並べ替えることができる。
![[image1.png]](image1.png)
2020年度(令和4)都道府県別歳出
表示内容は「歳入」と同じ。金額による並べ換えは「総額」他「議会・総務費」「民生費」「衛生費」等、全 9科目で可能である。
![[image2.png]](image2.png)
2020年度(令和4)都道府県別歳出・民生費
歳出については、主要な科目の歳出額の内訳を別グラフとして表示する。下の表は「民生費」の内訳を示したもので、内訳は「社会福祉費」「老人福祉費」等、全 5科目になる。
![[image3.png]](image3.png)
内訳を表示できる科目は、「民生費」「衛生費」「農林水産業費」「商工費」「土木費」である。
データの作成方法
2020年度(令和4)都道府県別歳入額
総務省トップ > 政策 > 統計情報 > 地方財政状況調査関係資料 > 地方財政統計年報 > 令和2年度地方財政統計年報
から 2-4-1表 都道府県歳入決算(xlsx)をダウンロードする
Excelシートの抜粋(クリックすると別ページに拡大された画像が開きます)
![[excel1.png]](excel1.png)
考慮点
この表は、同一表内に列の繰り返しグループを持っていて、RDBテーブルの第一正規化に反している。具体的には抜粋にも現れているが、二、地方譲与税の内訳の値として 1.地方揮発油譲与税、2.地方道路譲与税, … が並列している。表にはこのようなデータが非常に多く、グラフに表示するデータを抜粋するとき機械的な変換もできず、手作業に頼るので非常に面倒である。(これは何とかならないものだろうか)
2020年度(令和4)都道府県別歳出額
総務省トップ > 政策 > 統計情報 > 地方財政状況調査関係資料 > 地方財政統計年報 > 令和2年度地方財政統計年報
から 2-4-2表 都道府県目的別歳出決算(xlsx)をダウンロードする
Excelシートの抜粋(クリックすると別ページに拡大された画像が開きます)
![[excel2.png]](excel2.png)
表が正規化されていないのは歳入額と同じ
都道府県別人口
2-2 都道府県別人口と人口増減率(xlsx)ダウンロードする
Excelシートの抜粋(クリックすると別ページに拡大された画像が開きます)
![[excel3.png]](excel3.png)
データは3列目の「国税調査人口・令和2年」を使用する。
データの作成手順
Excelシートを csvファイルに変換し、必要な列を抜き出す
都道府県別歳入データ
000831557.xlsx → 000831557.csv
数値のカンマを消す。セルの書式設定で表示形式を「標準」または「数値」の桁区切りなしにする。値がないことを表す記号としてマイナス記号が使われているのでそれを削する。この csvファイルは、作業中に列の特定や合計値の検証など、オリジナルデータを参照したい場合に使う。
000831557.csv → income.csv
表から必要な列だけ残して残りは削除する。歳入で表示する科目は、全 17科目のうち、「地方税」「地方交付税」「国庫支出金」の主要 3科目として、残りは「その他」に合算する。ここでは、主要 3科目と「歳入総額」を抜き出す。「その他」の集計は後段の Node.jsの処理で行うのでここでは行わない。
見出し行を1行にする。最終行(合計額)は削除する。
都道府県別歳出データ
000831558.xlsx → 000831558.csv
歳入データと同じ編集をする。
000831558.csv → spending.csv
表から必要な列だけ残して残りは削除する。 歳出で表示する科目は、全 27科目のうち、10 科目として、残りは「その他」にまとめる。
必要な列は、「歳入総額」「議会・総務費※」「民生費」「衛生費」「農林水産業費」「商工費」「土木費」「警察費」「教育費」「災害復旧費」「特別区財政調整交付金(東都のみ)」とする
※ 議会・総務費は、議会費と総務費の2科目を合算する
また、歳出額のグラフでは、科目「民生費」「衛生費」「農林水産業費」「商工費」「土木費」については、その内訳を表示する別グラフを表示する。そのためにオリジナルの csvファイル(000831558.csv)から各科目ごとの内訳の金額を要素とした csvファイルを作成する。データ構造は他と同じである。
民生費の内訳:spending_minsei.csv
衛生費の内訳:spending_eisei.csv
農林水産業費の内訳:spending_norin.csv
商工費の内訳:spending_shoko.csv
土木費の内訳:spending_doboku.csv
都道府県別人口データ
n250200200.xlsx → population.csv
都道府県名(列1)、令和2年国税調人口(列3)の2列を抽出する列はとする。なお人口の単位は千人である。
グラフの入力データとなる JSONファイルを作成する
csvファイルから、グラフ(Chart.js)の入力となる JSON形式のデータを作成し、ファイルに出力する。
以下は歳入データの1件目、北海道のレコードである。歳出データの構造も同じである。
データの作成手順
Node.jsの JavaScriptコード・makeData.js を実行する。前記で作成した csvファイルを入力とし、都道府県ごとに オブジェクトを作成し、JSON形式のファイルに出力する。「その他」の計算はここで行う。
出力ファイル
歳入データ:income.json
歳出データ:spending.json
歳出データ(民生費の内訳):spending_minsei.json
歳出データ(衛生費の内訳):spending_eisei.json
歳出データ(農林水産業費の内訳):spending_norin.json
歳出データ(商工費の内訳):spending_shoko.json
歳出データ(土木費の内訳):spending_doboku.json
共通関数(ファイルの読み込み、グラフの作成):commonlib.js
グラフを表示する
HTML & JavaScript
歳入データ:graph_income.html
歳出データ:graph_spending.html
歳出データ(民生費の内訳):graph_spending_minsei.html
歳出データ(衛生費の内訳):graph_spending_eisei.html
歳出データ(農林水産業費の内訳):graph_spending_norin.html
歳出データ(商工費の内訳):graph_spending_shoko.html
歳出データ(商工費の内訳):graph_spending_shoko.html
歳出データ(土木費の内訳):graph_spending_doboku.html