2
1

More than 5 years have passed since last update.

e-Stat 小地域のデータの読み方

Posted at

総務省 e-Stat のデータ「平成22年国勢調査(小地域) 2010/10/01」の「年齢別(5歳階級、4区分)、男女別人口」で「千代田区(10KB)」のヘッダの意味を読み解いてみる。間違ってたらコメントいただけるとありがたい。

基本的には「定義書」に書かれているべきな気がするが、定義書も意味がよく分からないところが多々…。「連番」とか「階層」とか説明が必要が見当たらない。

データを眺めると、次のような MultiIndex のカラムになっているように読める。

0 1
KEY_CODE
HYOSYO
CITYNAME
NAME
HTKSYORI
HTKSAKI
GASSAN
T000573001 総数、年齢「不詳」含む
T000573002 総数0~4歳
T000573003 総数5~9歳
T000573004 総数10~14歳
T000573005 総数15~19歳
T000573006 総数20~24歳
T000573007 総数25~29歳
T000573008 総数30~34歳
T000573009 総数35~39歳
T000573010 総数40~44歳
T000573011 総数45~49歳
T000573012 総数50~54歳
T000573013 総数55~59歳
T000573014 総数60~64歳
T000573015 総数65~69歳
T000573016 総数70~74歳
T000573017 総数15歳未満
T000573018 総数15~64歳
T000573019 総数65歳以上
T000573020 総数75歳以上
T000573021 男の総数、年齢「不詳」含む
T000573022 男0~4歳
T000573023 男5~9歳
T000573024 男10~14歳
T000573025 男15~19歳
T000573026 男20~24歳
T000573027 男25~29歳
T000573028 男30~34歳
T000573029 男35~39歳
T000573030 男40~44歳
T000573031 男45~49歳
T000573032 男50~54歳
T000573033 男55~59歳
T000573034 男60~64歳
T000573035 男65~69歳
T000573036 男70~74歳
T000573037 男15歳未満
T000573038 男15~64歳
T000573039 男65歳以上
T000573040 男75歳以上
T000573041 女の総数、年齢「不詳」含む
T000573042 女0~4歳
T000573043 女5~9歳
T000573044 女10~14歳
T000573045 女15~19歳
T000573046 女20~24歳
T000573047 女25~29歳
T000573048 女30~34歳
T000573049 女35~39歳
T000573050 女40~44歳
T000573051 女45~49歳
T000573052 女50~54歳
T000573053 女55~59歳
T000573054 女60~64歳
T000573055 女65~69歳
T000573056 女70~74歳
T000573057 女15歳未満
T000573058 女15~64歳
T000573059 女65歳以上
T000573060 女75歳以上

KEY_CODE, HYOSYO, CITYNAME, NAME, HTKSYORI, HTKSAKI, GASSAN は先ほどの定義書に載っていない。
これらの意味が重要。

KEY_CODE

行政コード。桁数に応じて区画の大きさが変わる。桁数は 5, 9, 11 とあり、行政コードのコード体系から始めて組み立てられている。大きい区画と、それに含まれる小さい区画も両方行として存在している。並行して存在しているときは、大きい区画には合計値が入っている。

HYOSYO

KEY_CODE の組み立てられたコード体系の深さ?

CITYNAME

一番大きな単位での土地の名前

NAME

一番小さな単位での土地の名前

HTKSYORI

「秘匿処理」が行われているかどうか。「秘匿地域」と「合算地域あり」の二種類があり、これらは相互の関係にある。

HTKSAKI

HTKSYORI が「秘匿地域」になっている場合に値が入っている。
該当行の KEY_CODE 先頭 5 文字と連結して使う。

GASSAN

HtKSYORI が「合算地域あり」になっている場合に値が入っている。
該当行の KEY_CODE 先頭 5 文字と連結して使う。
複数の地域を合算している場合はセミコロンで複数が連結されている。

pandas

こんな感じ?

import pandas as pd

opts = dict(
    header=[0,1],
    converters={i:str for i in range(7)}
)
txt_ = pd.concat([pd.read_csv(open(f, encoding="CP932"), **opts) for f in glob.glob("tblT000573C27*.txt")])
txt_columns = txt_.columns
txt_.columns =  [c[0] if c[1].startswith("Unnamed:") else c[1] for c in txt_.columns]
txt = pd.concat([txt_[txt_.columns[:7]],
    txt_[txt_.columns[7:]].applymap(lambda s: 0 if s in ("-","X") else int(s))], axis=1)

for ri,r in txt.iterrows():
    for s in r["GASSAN"].split(";"):
        if not s:
            continue
        t = r["KEY_CODE"][:5]+s
        assert txt[txt["KEY_CODE"]==t].shape[0] == 1
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1