政府統計の総合窓口, 市町村の人口総数(Excel ファイルのダウンロード,SQLite 3 データベースの生成)

概要

このページでは,政府統計の総合窓口 (e-Stat) から Excel 形式の統計表をダウンロードし,Windows コマンドプロンプト上で CSV ファイルに変換し,SQLite 3 データベースを生成する手順を説明する.変換には csvkit(Python 製のコマンドラインツール群)を使う.

商用目的での利用を考えている場合は,使用条件を確認すること.データはオープンに提供されているが,出典の記載などの使用条件がある.

目次

関連する外部ページ

サイト内の関連情報

第1章 政府統計の総合窓口 (e-Stat) からの Excel ファイルのダウンロード

  1. 政府統計の総合窓口 (e-Stat) のページを開く.

    https://www.e-stat.go.jp/

  2. 使用条件を確認し,合意できる場合のみ続行する.
  3. 「統計でみる市区町村のすがた2022 / 基礎データ」のページから,Excel ファイルをダウンロードする.

    「2022」のところは,自分の欲しいデータに合わせること.

第2章 SQLite 3 データベースの生成(Windows 上)

SQLite 3 のインストール

SQLite 3は,リレーショナルデータベース管理システム.Windows 用のコマンドラインツール(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)

  1. csvkit のインストール

    csvkit は in2csv(Excel ファイルを CSV に変換するコマンド)や csvsql(CSV から SQL データベースを生成するコマンド)を含む.その他,CSV ファイルの処理を行う機能もある.csvkit は Python 製のため,pip でインストールする.

    pip install -U --no-user csvkit
  2. 作業用フォルダの作成

    作業に使う C:\tmp フォルダを作成する(すでにある場合はそのまま使う).

    if not exist C:\tmp mkdir C:\tmp
  3. 各列の属性名

    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
  4. 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
  5. 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 行が表示される(確認のため表示している).