Essayez d'obtenir des statistiques en utilisant e-Stat

introduction

Accès aux statistiques gouvernementales à partir d'aujourd'hui (31 octobre 2014) Il semble que l'API Web a été publiée. http://www.e-stat.go.jp/api/

Une liste des données disponibles se trouve à l'URL ci-dessous. Il y a beaucoup de recensement aux statistiques du travail. http://www.e-stat.go.jp/api/api-info/api-data/

Ça a l'air intéressant! Le disque que j'ai utilisé pour ça.

enregistrement

  1. Tout d'abord, accédez à cette page et enregistrez-vous en tant qu'utilisateur. http://www.e-stat.go.jp/api/regist-login/ Entrez votre adresse e-mail et votre nom.

  2. Une notification est arrivée à votre adresse e-mail, alors cliquez dessus pour l'activer.

  3. Ensuite, connectez-vous. Obtenez l'ID de l'application. Il semble y avoir jusqu'à 3 pièces d'identité par personne. À partir de maintenant, l'ID de l'application sera xxx.

Acquisition de données et traçage

La procédure est la suivante.

  1. Accédez à getStatsList et récupérez l'ID approprié.
  2. Accédez à getStatsData pour récupérer les données.
  3. Extrayez le nom de la catégorie et les données VALUES.
  4. Enfin l'analyse. Cette fois, je trace la pyramide des âges.
#!/usr/bin/env python
#-*- coding: utf-8 -*-

import httplib2
import lxml.etree
import pylab
import matplotlib.font_manager as fm

#Réglage initial
h = httplib2.Http('.cache')
key = "xxx"
baseUrl = "http://api.e-stat.go.jp/rest/1.0/app"
statsCode = "00200521"

#Premières données pour le code des statistiques gouvernementales 00200521
# (Recensement de 1980)Récupérez l'ID de données de
print "getStatusList..."
cmd = "%s/getStatsList?appId=%s&statsCode=%s"
response, content = h.request(cmd % (baseUrl, key, statsCode))
xml = lxml.etree.fromstring(content)
dataid = xml.xpath('//LIST_INF')[0].attrib["id"]


#Extraire les données réelles en utilisant l'ID de données comme clé
print "getStatusData..."
cmd = "%s/getStatsData?appId=%s&statsDataId=%s"
response, content = h.request(cmd % (baseUrl, key, dataid))
xml = lxml.etree.fromstring(content)


#Extraction du nom de la catégorie
categories = {}
for c in xml.xpath("//CLASS_OBJ"):
    categories[c.attrib["id"]] = {"name": c.attrib["name"],
                                  "labels": {}}
    print c.attrib["id"]
    for label in c.xpath("CLASS"):
        print label.attrib["name"], label.attrib["code"]
        categories[c.attrib["id"]]["labels"][label.attrib["code"]] = label.attrib["name"]


#Extraire la valeur
values = [{"cat01": v.attrib["cat01"],
           "cat02": v.attrib["cat02"],
           "cat03": v.attrib["cat03"],
           "area": v.attrib["area"],
           "value": int(v.text)}
          for v in xml.xpath('//VALUE')]


#Tranche d'âge(cat03)Agrégation par
c = categories["cat03"]
data   = []
labels = []
for code in sorted(c["labels"].keys())[1:]:
    labels.append(c["labels"][code])
    data.append(sum([v["value"] for v in values if v["cat03"] == code]))
print data


#terrain
width = 0.5
x = pylab.arange(len(data))
prop = fm.FontProperties(fname='/Library/Fonts/Osaka.ttf') # for mac
pylab.barh(x, data, width)
pylab.yticks(x + width / 2, labels)
pylab.show()

Cliquez ici pour les résultats

figure_1.png

Informations de référence

Manuel officiel http://www.e-stat.go.jp/api/wp/wp-content/uploads/2014/10/API-spec.pdf

Interface pour toucher l'API du web http://www.e-stat.go.jp/api/sample/testform/

Recommended Posts

Essayez d'obtenir des statistiques en utilisant e-Stat
[Statistiques] [R] Essayez d'utiliser la régression par points de division.
Essayez d'utiliser pynag pour configurer Nagios
Essayez de détecter les mouvements de fusion en utilisant AnyMotion
Essayez d'utiliser Excel en utilisant Python (Xlwings)
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Essayez d'utiliser des géopandas
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Essayez d'obtenir l'état de la surface de la route en utilisant de grandes données de gestion de la surface de la route
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Essayez d'utiliser django-import-export pour ajouter des données csv à django
Essayez d'utiliser Blueprint avec Flask pour séparer les contrôleurs
Comment obtenir des données d'article à l'aide de l'API Qiita
Essayez de créer un serveur HTTP en utilisant Node.js
Essayez d'obtenir une page Web et un fichier JSON en utilisant la bibliothèque Requests de Python
[Rails] Comment obtenir des informations de localisation à l'aide de l'API de géolocalisation
(Python) Essayez de développer une application Web en utilisant Django
Chaque fois que j'essaye de lire un fichier csv en utilisant des pandas, j'obtiens une erreur numpy.
Essayez d'utiliser virtualenv (virtualenvwrapper)
Essayez de créer une API RESTful avec MVC à l'aide de Flask 1.0.2
[Azure] Essayez d'utiliser Azure Functions
Essayez d'obtenir le contenu de Word avec Golang
Essayez de supprimer des tweets en masse à l'aide de l'API de Twitter
Essayez d'utiliser W & B
Essayez d'utiliser Django templates.html
[Kaggle] Essayez d'utiliser LGBM
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser Tkinter de Python
Essayez d'extraire des mots à haute fréquence en utilisant NLTK (python)
[Apprentissage automatique] Essayez de détecter des objets à l'aide de la recherche sélective
Essayez d'utiliser Tweepy [Python2.7]
Essayez de résoudre le Sudoku à une vitesse explosive en utilisant Numpy
Essayez d'utiliser collate_fn de Pytorch
J'obtiens une erreur lorsque j'essaie d'élever Python à la série 3 en utilisant pyenv dans Catalina
[Solution] Lorsque j'essaye de me connecter à CloudSQL avec GAE, j'obtiens une ImportError uniquement lorsque dev_appserver.
Essayez de le faire avec GUI, PyQt en Python
Essayez d'obtenir la liste des fonctions du paquet Python> os
Essayez d'exploiter un fichier Excel en utilisant Python (Pandas / XlsxWriter) ①
Essayez d'exploiter un fichier Excel en utilisant Python (Pandas / XlsxWriter) ②
J'ai essayé d'obtenir les informations du Web en utilisant "Requests" et "lxml"
Essayez de juger des photos de plats à l'aide de l'API Google Cloud Vision
Autoriser l'exécution rapide des scripts Python dans Cloud Run à l'aide du répondeur
Essayez d'acquérir des données lors de la redirection de port vers RDS avec anaconda.
Essayez de modéliser une distribution multimodale à l'aide de l'algorithme EM
Comment obtenir la température du thermo-hygromètre SwitchBot à l'aide de Raspberry Pi
Essayez d'implémenter la régression linéaire à l'aide de Pytorch avec Google Colaboratory
J'ai essayé d'obtenir rapidement des données d'AS / 400 en utilisant pypyodbc
Essayez de défier le sol par récursif
Essayez d'utiliser PythonTex avec Texpad.
Essayez d'utiliser l'image Docker de Jupyter
Essayez d'utiliser scikit-learn (1) - Clustering K par méthode moyenne