[PYTHON] Comment lire les données de la sous-région e-Stat

En-tête de «Chiyoda Ward (10KB)» dans «Âge (classe de 5 ans, 4 catégories), Population spécifique au sexe» des données du «Recensement national de 2010 (petite région) 2010/10/01» du ministère de l'Intérieur et des Communications e-Stat Essayez de comprendre la signification de. Si vous faites une erreur, je vous serais reconnaissant de bien vouloir commenter.

Fondamentalement, j'estime qu'il devrait être écrit dans le «document de définition», mais il y a de nombreux endroits où le sens du document de définition n'est pas bien compris. Je ne trouve pas le besoin d'expliquer «numéro de série» ou «hiérarchie».

En regardant les données, elles peuvent être lues comme s'il s'agissait d'une colonne de MultiIndex comme indiqué ci-dessous.

0 1
KEY_CODE
HYOSYO
CITYNAME
NAME
HTKSYORI
HTKSAKI
GASSAN
T000573001 Nombre total, y compris l'âge "inconnu"
T000573002 Nombre total de 0 à 4 ans
T000573003 5-9 ans au total
T000573004 10-14 ans au total
T000573005 15-19 ans au total
T000573006 20-24 ans au total
T000573007 25-29 ans au total
T000573008 30-34 ans au total
T000573009 35-39 ans au total
T000573010 40-44 ans au total
T000573011 45-49 ans au total
T000573012 50-54 ans au total
T000573013 55-59 ans au total
T000573014 Total 60-64 ans
T000573015 65-69 ans au total
T000573016 70-74 ans au total
T000573017 Moins de 15 ans
T000573018 15-64 ans au total
T000573019 65 ans ou plus
T000573020 75 ans ou plus
T000573021 Nombre total d'hommes, y compris l'âge «inconnu»
T000573022 Homme de 0 à 4 ans
T000573023 Homme de 5 à 9 ans
T000573024 Homme 10-14 ans
T000573025 Homme 15-19 ans
T000573026 Homme 20-24 ans
T000573027 Homme 25-29 ans
T000573028 Homme 30-34 ans
T000573029 Homme de 35 à 39 ans
T000573030 Homme 40-44 ans
T000573031 Homme de 45 à 49 ans
T000573032 Homme de 50 à 54 ans
T000573033 Homme de 55 à 59 ans
T000573034 Homme de 60 à 64 ans
T000573035 Homme de 65 à 69 ans
T000573036 Homme 70-74 ans
T000573037 Homme de moins de 15 ans
T000573038 Homme 15-64 ans
T000573039 Homme de plus de 65 ans
T000573040 Homme de plus de 75 ans
T000573041 Nombre total de femmes, y compris l'âge «inconnu»
T000573042 Femme de 0 à 4 ans
T000573043 Femme 5-9 ans
T000573044 Femme 10-14 ans
T000573045 Femme 15-19 ans
T000573046 Femme 20-24 ans
T000573047 Femme de 25 à 29 ans
T000573048 Femme de 30 à 34 ans
T000573049 Femme de 35 à 39 ans
T000573050 Femme 40-44 ans
T000573051 Femme de 45 à 49 ans
T000573052 Femme de 50 à 54 ans
T000573053 Femme 55-59 ans
T000573054 Femme de 60 à 64 ans
T000573055 Femme de 65 à 69 ans
T000573056 Femme de 70 à 74 ans
T000573057 Femme de moins de 15 ans
T000573058 Femme de 15 à 64 ans
T000573059 Femme de plus de 65 ans
T000573060 Femme de plus de 75 ans

KEY_CODE, HYOSYO, CITYNAME, NAME, HTKSYORI, HTKSAKI, GASSAN ne sont pas répertoriés dans la définition précédente. Ces significations sont importantes.

KEY_CODE

Code administratif. La taille du compartiment change en fonction du nombre de chiffres. Le nombre de chiffres est 5, 9, 11, et il est construit à partir du système de code du code administratif. Le grand compartiment et les petits compartiments qu'il contient existent également sous forme de rangées. Lorsqu'elles sont présentes en parallèle, les plus grandes parcelles contiennent la valeur totale.

HYOSYO

La profondeur du système de code assemblé de KEY_CODE?

CITYNAME

Nom du terrain dans l'unité la plus grande

NAME

Nom du terrain dans la plus petite unité

HTKSYORI

Si un "traitement confidentiel" est effectué. Il existe deux types, "zone secrète" et "surface totale", et ils sont dans une relation mutuelle.

HTKSAKI

Une valeur est entrée lorsque «HTKSYORI» est une «zone secrète». À utiliser en concaténation avec les 5 premiers caractères de KEY_CODE sur la ligne correspondante.

GASSAN

Une valeur est entrée lorsque HtKSYORI est défini sur" Il y a une superficie totale ". À utiliser en concaténation avec les 5 premiers caractères de KEY_CODE sur la ligne correspondante. Lorsque plusieurs régions sont combinées, plusieurs régions sont concaténées avec un point-virgule.

pandas

Comme ça?

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

Recommended Posts

Comment lire les données de la sous-région e-Stat
Comment lire les données de problème avec Paiza
Comment lire PyPI
Comment lire JSON
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Comment lire les données de séries chronologiques dans PyTorch
Comment gérer les trames de données
[Python] Comment FFT des données mp3
Comment gérer les données déséquilibrées
Comment lire l'ensemble de données SNLI
Comment augmenter les données avec PyTorch
Comment collecter des données d'apprentissage automatique
Comment lire pydoc sur l'interpréteur python
Comment utiliser "deque" pour les données Python
Comment gérer les données de séries chronologiques (mise en œuvre)
Comment lire des fichiers CSV avec Pandas
Livres sur la science des données à lire en 2020
lecture de données pandas
[SQL Alchemy] Lire les données
Données SIG e-Stat
[python] Lecture de données
Comment créer des exemples de données CSV avec hypothèse
Comment lire un fichier CSV avec Python 2/3
[Python] Comment lire des fichiers Excel avec des pandas
[Django] Comment obtenir des données en spécifiant SQL.
Comment récupérer des données de courses de chevaux avec Beautiful Soup
Comment utiliser les outils d'analyse de données pour les débutants
[Introduction à Python] Comment gérer les données au format JSON
Comment lire un tableau avec ConfigParser de Python
Comment obtenir des données d'article à l'aide de l'API Qiita
Comment créer des données à mettre dans CNN (Chainer)
J'ai lu "Comment créer un laboratoire de piratage"
Comment rechercher des données HTML à l'aide de Beautiful Soup
Tensorufuro, Tensafuro Après tout, lequel (Comment lire Tensorflow)
Nettoyage des données Comment gérer les valeurs manquantes et aberrantes
Comment lire des fichiers dans différents répertoires
Résumé de la lecture des données numériques avec python [CSV, NetCDF, Fortran binary]
Lire la source Python-Markdown: Comment créer un analyseur
Comment utiliser xml.etree.ElementTree
Comment utiliser virtualenv
Grattage 2 Comment gratter
Comment utiliser Seaboan
Comment appliquer des marqueurs uniquement à des données spécifiques avec matplotlib
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment installer Python
Comment utiliser Pandas 2
[Pour les débutants] Comment étudier le test d'analyse de données Python3
Comment récupérer des données d'image de Flickr avec Python
Comment installer pip
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment mettre à jour easy_install
Comment installer Archlinux
Comment récupérer des données de courses de chevaux à l'aide de pandas read_html
Comment créer rapidement des exemples de données pour un tableau pendant le codage
Comment utiliser pytest_report_header
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Comment redémarrer gunicorn
Comment installer python