政府統計の総合窓口, 市町村の人口総数(Excel ファイルのダウンロード,SQLite 3 データベースの生成)
【概要】
このページでは,政府統計の総合窓口 (e-Stat) から Excel 形式の統計表をダウンロードし,Windows コマンドプロンプト上で CSV ファイルに変換し,SQLite 3 データベースを生成する手順を説明する.変換には csvkit(Python 製のコマンドラインツール群)を使う.
商用目的での利用を考えている場合は,使用条件を確認すること.データはオープンに提供されているが,出典の記載などの使用条件がある.
【目次】
【関連する外部ページ】
【サイト内の関連情報】
第1章 政府統計の総合窓口 (e-Stat) からの Excel ファイルのダウンロード
- 政府統計の総合窓口 (e-Stat) のページを開く.
- 使用条件を確認し,合意できる場合のみ続行する.
- 「統計でみる市区町村のすがた2022 / 基礎データ」のページから,Excel ファイルをダウンロードする.
「2022」のところは,自分の欲しいデータに合わせること.
第2章 SQLite 3 データベースの生成(Windows 上)
SQLite 3 のインストール
sqlite3.exe)は,SQLite 公式のダウンロードページ(https://sqlite.org/download.html)から入手できる.入手した sqlite3.exe は,環境変数 PATH の通ったフォルダに置くと,コマンドプロンプトから sqlite3 で実行できる.
あらかじめ決めておく事項
このページでは,Windows コマンドプロンプト上で SQLite 3 データベースの生成を行う.生成するSQLite 3 データベースのデータベース名を決めておくこと.
作業に使うフォルダ: C:\tmp(存在しない場合は作成する)
生成する CSV ファイル: C:\tmp\estat.csv
生成するSQLite3 データベース名: C:\tmp\estat.db
データベース名は自由に決めてよいが,半角文字(英字と英記号)を使い,スペースを含まないこと.
SQLite 3 データベースの生成
estat(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb,cc,dd,ee,ff,gg)
- csvkit のインストール
csvkit は in2csv(Excel ファイルを CSV に変換するコマンド)や csvsql(CSV から SQL データベースを生成するコマンド)を含む.その他,CSV ファイルの処理を行う機能もある.csvkit は Python 製のため,pip でインストールする.
pip install -U --no-user csvkit - 作業用フォルダの作成
作業に使う
C:\tmpフォルダを作成する(すでにある場合はそのまま使う).if not exist C:\tmp mkdir C:\tmp - 各列の属性名
a,b,c ... のように属性名をつけて,CSV ファイルの先頭行(ヘッダ行)を作る.
echo a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,bb,cc,dd,ee,ff,gg> C:\tmp\estat.csv
- Excel ファイルを CSV ファイルに変換(in2csv を使用)
- 処理する Excel ファイル名: C:\tmp\2022-a.xls
先頭行を属性名にしない(属性名は自動生成).
- 生成する CSV ファイル名: C:\tmp\estat.csv
「--skip-lines 23」により,先頭 23 行を読み飛ばして,24 行目から使用する.変換結果は,先に作ったヘッダ行を持つ C:\tmp\estat.csv に追記する.
in2csv --no-header-row --skip-lines 23 C:\tmp\2022-a.xls >> C:\tmp\estat.csv
- 処理する Excel ファイル名: C:\tmp\2022-a.xls
- CSV ファイルから SQLite 3 データベースの生成
- 処理する CSV ファイル名: C:\tmp\estat.csv
- 生成するSQLite3 データベース名: C:\tmp\estat.db
if exist C:\tmp\estat.db del C:\tmp\estat.db csvsql --db sqlite:///C:\tmp\estat.db --insert C:\tmp\estat.csv echo vacuum; | sqlite3 C:\tmp\estat.db echo select * from estat limit 20; | sqlite3 C:\tmp\estat.db次のように先頭 20 行が表示される(確認のため表示している).