Versuchen Sie, Statistiken mit e-Stat abzurufen

Einführung

Zugang zu Regierungsstatistiken ab heute (31. Oktober 2014) Es scheint, dass die Web-API veröffentlicht wurde. http://www.e-stat.go.jp/api/

Eine Liste der verfügbaren Daten finden Sie unter der folgenden URL. Es gibt viel von der Volkszählung bis zur Arbeitsstatistik. http://www.e-stat.go.jp/api/api-info/api-data/

Es sieht interessant aus! Die Platte, die ich dafür verwendet habe.

Anmeldung

  1. Greifen Sie zuerst auf diese Seite zu und registrieren Sie sich als Benutzer. http://www.e-stat.go.jp/api/regist-login/ Geben Sie Ihre E-Mail-Adresse und Ihren Namen ein.

  2. Eine Benachrichtigung ist an Ihrer E-Mail-Adresse eingegangen. Klicken Sie darauf, um sie zu aktivieren.

  3. Melden Sie sich als Nächstes an. Holen Sie sich die Anwendungs-ID. Es scheint bis zu 3 IDs pro Person zu sein. Von nun an lautet die Anwendungs-ID xxx.

Datenerfassung und Plotten

Das Verfahren ist wie folgt.

  1. Greifen Sie auf getStatsList zu und rufen Sie die entsprechende ID ab.
  2. Greifen Sie auf getStatsData zu, um die Daten abzurufen.
  3. Extrahieren Sie den Kategorienamen und die VALUES-Daten.
  4. Abschließend Analyse. Diesmal zeichne ich die Alterspyramide.
#!/usr/bin/env python
#-*- coding: utf-8 -*-

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

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

#Erste Daten für den Regierungsstatistikcode 00200521
# (Volkszählung 1980)Holen Sie sich die Daten-ID von
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"]


#Extrahieren Sie die tatsächlichen Daten mit der Daten-ID als Schlüssel
print "getStatusData..."
cmd = "%s/getStatsData?appId=%s&statsDataId=%s"
response, content = h.request(cmd % (baseUrl, key, dataid))
xml = lxml.etree.fromstring(content)


#Extraktion des Kategorienamens
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"]


#Wert extrahieren
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')]


#Altersgruppe(cat03)Aggregation durch
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


#Handlung
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()

Klicken Sie hier für Ergebnisse

figure_1.png

Referenzinformationen

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

Schnittstelle zum Berühren der API des Webs http://www.e-stat.go.jp/api/sample/testform/

Recommended Posts

Versuchen Sie, Statistiken mit e-Stat abzurufen
[Statistik] [R] Versuchen Sie, die Teilungspunktregression zu verwenden.
Versuchen Sie, Nagios mit pynag zu konfigurieren
Versuchen Sie, die Fusionsbewegung mit AnyMotion zu erkennen
Versuchen Sie, Excel mit Python (Xlwings) zu betreiben.
Versuchen Sie es mit Tkinter
Versuchen Sie es mit Docker-Py
Versuchen Sie es mit einem Ausstecher
Versuchen Sie es mit PDFMiner
Versuchen Sie es mit Geopandas
Versuchen Sie es mit Selen
Versuchen Sie es mit scipy
Versuchen Sie, den Zustand der Straßenoberfläche mithilfe von Big Data des Straßenoberflächenmanagements zu ermitteln
Versuchen Sie es mit pandas.DataFrame
Versuchen Sie es mit Django-Swiftbrowser
Versuchen Sie es mit matplotlib
Versuchen Sie es mit tf.metrics
Versuchen Sie es mit PyODE
Versuchen Sie, mit django-import-export csv-Daten zu django hinzuzufügen
Versuchen Sie, Blueprint with Flask zu verwenden, um Controller zu trennen
So erhalten Sie Artikeldaten mithilfe der Qiita-API
Versuchen Sie, mit Node.js einen HTTP-Server zu erstellen
Versuchen Sie, mithilfe der Python-Anforderungsbibliothek eine Webseite und eine JSON-Datei abzurufen
[Rails] So erhalten Sie Standortinformationen mithilfe der Geolocation-API
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Jedes Mal, wenn ich versuche, eine CSV-Datei mit Pandas zu lesen, wird ein numpy-Fehler angezeigt.
Versuchen Sie es mit virtualenv (virtualenvwrapper)
Versuchen Sie, mit MVC eine RESTful-API mit Flask 1.0.2 zu erstellen
[Azure] Versuchen Sie, Azure-Funktionen zu verwenden
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
Versuchen Sie, Tweets mithilfe der Twitter-API in großen Mengen zu löschen
Versuchen Sie es mit W & B.
Versuchen Sie es mit Django templates.html
[Kaggle] Versuchen Sie es mit LGBM
Versuchen Sie es mit dem Feed-Parser von Python.
Versuchen Sie es mit Pythons Tkinter
Versuchen Sie, hochfrequente Wörter mit NLTK (Python) zu extrahieren.
[Maschinelles Lernen] Versuchen Sie, Objekte mithilfe der selektiven Suche zu erkennen
Versuchen Sie es mit Tweepy [Python2.7]
Versuchen Sie, Sudoku mit explosiver Geschwindigkeit mit Numpy zu lösen
Versuchen Sie es mit Pytorchs collate_fn
Ich erhalte eine Fehlermeldung, wenn ich versuche, Python mit pyenv in Catalina auf 3 Serien zu erhöhen
[Lösung] Wenn ich versuche, mit GAE eine Verbindung zu CloudSQL herzustellen, wird nur bei dev_appserver ein ImportError angezeigt.
Versuchen Sie es mit GUI, PyQt in Python
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Versuchen Sie, eine Excel-Datei mit Python (Pandas / XlsxWriter) zu betreiben
Versuchen Sie, eine Excel-Datei mit Python (Pandas / XlsxWriter) zu betreiben
Ich habe versucht, die Informationen des Webs mit "Requests" und "lxml" abzurufen.
Versuchen Sie, Lebensmittelfotos mithilfe der Google Cloud Vision-API zu beurteilen
Ermöglichen Sie die schnelle Ausführung von Python-Skripten in Cloud Run mithilfe des Responders
Versuchen Sie, Daten zu erfassen, während Sie mit anaconda eine Portweiterleitung an RDS durchführen.
Versuchen Sie, eine multimodale Verteilung mithilfe des EM-Algorithmus zu modellieren
So erhalten Sie die Temperatur vom SwitchBot-Thermo-Hygrometer mit Himbeer-Pi
Versuchen Sie, eine lineare Regression mit Pytorch mit Google Colaboratory zu implementieren
Ich habe versucht, mit pypyodbc schnell Daten von AS / 400 abzurufen
Versuchen Sie, den Boden durch Rekursion herauszufordern
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Versuchen Sie es mit Jupyters Docker-Image
Versuchen Sie es mit Scikit-Learn (1) - K-Clustering nach Durchschnittsmethode