[PYTHON] Utilisons l'API de la fenêtre générale des statistiques gouvernementales (e-Stat)

Avec e-Stat, vous pouvez utiliser une API pour acquérir diverses données statistiques fournies par le gouvernement en XML ou JSON.

Enregistrement de l'utilisation de l'API et test de fonctionnement

    1. Demandez l'utilisation de l'API à partir de l'URL ci-dessous. http://www.e-stat.go.jp/api/regist-login/
  1. Après avoir complété la demande d'inscription à l'API, vous pourrez vous connecter avec votre «adresse e-mail» et votre «mot de passe».

https://www.e-stat.go.jp/api/apiuser/php/index.php?action=login

    1. Après vous être connecté, si vous revenez à l'écran de connexion, un écran s'affiche dans lequel vous pouvez "modifier / supprimer les informations utilisateur" et "acquérir l'ID d'application".

https://www.e-stat.go.jp/api/apiuser/php/index.php?action=login

disp1.png

Dans la modification des informations utilisateur, vous pouvez modifier les données spécifiées au moment de l'enregistrement.

  1. Émettez un appID. Entrez le nom et l'URL sur l'écran «Obtenir l'ID de l'application» et appuyez sur le bouton «Publier» pour obtenir l'ID de l'application.

disp2.png

Si l'URL n'existe pas, entrez "http: // localhost /" etc. Vous pouvez émettre jusqu'à 3 appID.

  1. Testez chaque API à partir de l'écran d'assistance au développement. Sélectionnez «Informations sur l'assistance au développement» dans «Aperçu des fonctions».

disp3.png

Cela rend le "Formulaire de test de fonction API" et "Exemple" disponibles. disp4.png

Présentation de l'API

Vous pouvez vérifier la fonction de chaque API sur le formulaire de test de la fonction API. De plus, les spécifications de l'API peuvent être utilisées à partir de l'écran ci-dessous.

http://www.e-stat.go.jp/api/api-info/api-spec/

Il existe quatre types d'API pouvant être utilisés.

・ Acquisition d'informations de table statistique Obtenir les informations du tableau statistique fourni par le Compteur général des statistiques gouvernementales (e-Stat). Il est également possible d'acquérir des informations avec des conditions restreintes en spécifiant des paramètres de requête.

・ Acquisition de méta-informations Acquiert des méta-informations (éléments de table, éléments de classification, éléments régionaux, etc.) correspondant à l'ID de table statistique spécifié.

· L'acquisition des données Acquiert des données statistiques (données numériques) correspondant à l'ID de table statistique ou à l'ID d'ensemble de données spécifié. Il est également possible d'acquérir des informations avec des conditions restreintes en spécifiant des paramètres de requête. Ces données sont disponibles en XML et JSON.

・ Enregistrement de l'ensemble de données Enregistrez les conditions d'acquisition pour l'acquisition de données statistiques. Vous pouvez omettre les conditions d'acquisition en spécifiant les conditions de rétrécissement pour l'acquisition de données statistiques en tant qu '«ensemble de données».

・ Reportez-vous au jeu de données Reportez-vous aux conditions de filtrage de l'ensemble de données enregistré. Si l'ID de l'ensemble de données n'est pas spécifié, vous pouvez voir la liste des ensembles de données pouvant être utilisés par l'utilisateur.

L'utilisation de base est la suivante. Recherchez la table statistique avec «Obtenir des informations de table statistique», obtenez l'ID de la table statistique, obtenez les méta-informations avec «Obtenir des méta-informations», puis obtenez les données statistiques avec «Obtenir des données».

échantillon

Rechercher des informations de table statistique

Ce script obtient les informations de la table statistique. Exécutez en spécifiant API_KEY, le type de données de recherche et le mot clé de recherche. Les types de données de recherche sont les suivants. ・ 1: informations statistiques (valeur par défaut) ・ 2: Petite zone / maillage régional ・ 3: Système social / démographique (préfectures / communes)

Exemple de code:

getStatsListSample.py


#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib
import urllib2
from lxml import etree
import sys
import codecs
#Pour les fenêtres...
sys.stdout = codecs.getwriter('cp932')(sys.stdout)

def main(argvs, argc):
    if argc != 4:
        print ("Usage #python %s api_key search_kind key_word" % argvs[0])
        return 1
    api_key = argvs[1]
    search_kind = argvs[2]
    #Pour les fenêtres...
    key_word = argvs[3].decode('cp932')
    key_word = urllib.quote(key_word.encode('utf-8'))

    url = ('http://api.e-stat.go.jp/rest/1.0/app/getStatsList?appId=%s&lang=J&searchKind=%s&searchWord=%s' % (api_key, search_kind, key_word))
    req = urllib2.Request(url)
    opener = urllib2.build_opener()
    conn = opener.open(req)
    cont = conn.read()
    parser = etree.XMLParser(recover=True)
    root = etree.fromstring(cont, parser)
    result = root.find('RESULT')
    print ('RESULT==============')
    print (result.find('STATUS').text)
    print (result.find('ERROR_MSG').text)
    print (result.find('DATE').text)
    data_list = root.find('DATALIST_INF')
    list_infs = data_list.xpath('.//LIST_INF')
    for list_inf in list_infs:
        print '--------------'
        print (u'ID de la table statistique:%s' % (list_inf.get('id')))

        stat_name = list_inf.find('STAT_NAME')
        if stat_name is not None:
            print (u'Nom des statistiques gouvernementales:%s %s' % (stat_name.get('code'), stat_name.text))

        gov_org = list_inf.find('GOV_ORG')
        if gov_org is not None:
            print (u'Nom du créateur:%s %s' % (gov_org.get('code'), gov_org.text))

        statistics_name = list_inf.find('STATISTICS_NAME')
        if statistics_name is not None:
            print (u'Nom statistique fourni et nom de classification fourni:%s' % (statistics_name.text))

        title = list_inf.find('TITLE')
        if title is not None:
            print (u'Titre:%s %s' % (title.get('no'), title.text))

        cycle = list_inf.find('CYCLE')
        if cycle is not None:
            print (u'Cycle de l'offre:%s' % (cycle.text))

        survey_date = list_inf.find('SURVEY_DATE')
        if survey_date is not None:
            print (u'Date de l'enquête:%s' % (survey_date.text))

        open_date = list_inf.find('OPEN_DATE')
        if open_date is not None:
            print (u'date de sortie:%s' % (open_date.text))

        small_area = list_inf.find('SMALL_AREA')
        if small_area is not None:
            print (u'Attributs sous-régionaux:%s' % (small_area.text))


if __name__ == '__main__':
    argvs = sys.argv
    argc = len(argvs)
    sys.exit(main(argvs, argc))

Exemple d'utilisation:

python getStatsListSample.py API_Emploi CLÉ 1

Résultat de sortie:

ID de la table statistique:0003059047
Nom des statistiques gouvernementales:00550100 Enquête de base du Ministère de l'économie, du commerce et de l'industrie sur les activités des entreprises
Nom du créateur:00550 Ministère de l'économie, du commerce et de l'industrie
Nom statistique fourni et nom de classification fourni:Enquête de base du ministère de l'Économie, du Commerce et de l'Industrie sur les activités des entreprises Tableau statistique - Liste confirmée (données)
Rapport de confirmation de l'enquête de base sur l'activité des entreprises 2010 - Résultats 2009-
Titre:1-8 Tableau statistique (Volume 1) [Tableau concernant l'organisation de l'entreprise] Tableau 8: Par industrie, nombre d'entreprises, organisation de l'entreprise
Nombre d'employés différents
Cycle de l'offre:Annuel
Date de l'enquête:201001-201012
date de sortie:2012-03-31
Attributs sous-régionaux:0

L'ID de table statistique "0003059047" est l'ID qui peut être utilisé pour l'acquisition de données.

Affichage des méta-informations

Ce script obtient les méta-informations pour l'ID statistique spécifié. Les méta-informations sont acquises à l'aide de l'ID de table statistique qui était la recherche des informations de table statistique en tant que paramètre.

Exemple de code:

getMetaSample.py


#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib
import urllib2
from lxml import etree
import sys
import codecs
#Pour les fenêtres...
sys.stdout = codecs.getwriter('cp932')(sys.stdout)


def get_meta_data(api_key, stats_data_id):
    """
Obtenir des méta-informations
    """
    url = ('http://api.e-stat.go.jp/rest/1.0/app/getMetaInfo?appId=%s&lang=J&statsDataId=%s' % (api_key, stats_data_id))
    req = urllib2.Request(url)
    opener = urllib2.build_opener()
    conn = opener.open(req)
    cont = conn.read()
    parser = etree.XMLParser(recover=True)
    root = etree.fromstring(cont, parser)
    class_object_tags = root.xpath('//METADATA_INF/CLASS_INF/CLASS_OBJ')
    class_object = {}

    for class_object_tag in class_object_tags:
        class_object_id = class_object_tag.get('id')
        class_object_name = class_object_tag.get('name')
        class_object_item = {
            'id' : class_object_id,
            'name' : class_object_name,
            'objects' : {}
        }
        class_tags = class_object_tag.xpath('.//CLASS')
        for class_tag in class_tags:
            class_item = {
                'code' : class_tag.get('code'),
                'name' : class_tag.get('name'),
                'level' : class_tag.get('level'),
                'unit' : class_tag.get('unit')
            }
            class_object_item['objects'][class_item['code']] = class_item
        class_object[class_object_id] = class_object_item
    return class_object

def main(argvs, argc):
    if argc != 3:
        print ("Usage #python %s api_key stats_id" % argvs[0])
        return 1
    api_key = argvs[1]
    stats_id = argvs[2]
    ret = get_meta_data(api_key, stats_id)
    for key in ret:
        print ('======================')
        print (key)
        print ('name: %s' % ret[key]['name'])
        for obj_code, obj in ret[key]['objects'].items():
            print ('----------------------')
            print ('code: %s' % obj_code)
            print ('name: %s' % obj['name'])
            print ('unit: %s' % obj['unit'])
            print ('level: %s' % obj['level'])

if __name__ == '__main__':
    argvs = sys.argv
    argc = len(argvs)
    sys.exit(main(argvs, argc))

Exemple d'utilisation:

python getMetaSample.py API_KEY 0003059047

Exemple de sortie:

======================
cat01
name: 22_1-8 Nombre d'entreprises, nombre d'employés par organisation commerciale
----------------------
code: 0011000
name:Nombre de salariés permanents (hors salariés détachés) Siège / siège Direction fonctionnelle Siège Autres
unit: None
level: 1
----------------------
code: 0029000
name:Nombre de salariés permanents (y compris les salariés détachés) Salariés détachés auprès d'autres entreprises, etc.
unit: None
level: 1

Dans les méta-informations, la catégorie utilisée par le tableau statistique pertinent et les valeurs pouvant être prises par cette catégorie sont affichées.

Tableau statistique de sortie au format CSV

Cet exemple montre un échantillon qui génère un tableau statistique au format CSV. Si vous spécifiez l'ID de la table statistique et le chemin de sortie CSV, la table statistique spécifiée est sortie au format CSV.

Exemple de code:

export_csv.py


#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import urllib2
from lxml import etree
import csv

def export_statical_data(writer, api_key, stats_data_id, class_object, start_position):
    """
Statistiques d'exportation
    """
    url = ('http://api.e-stat.go.jp/rest/1.0/app/getStatsData?limit=10000&appId=%s&lang=J&statsDataId=%s&metaGetFlg=N&cntGetFlg=N' % (api_key, stats_data_id))
    if start_position > 0:
        url = url + ('&startPosition=%d' % start_position)

    req = urllib2.Request(url)
    opener = urllib2.build_opener()
    conn = opener.open(req)
    cont = conn.read()
    parser = etree.XMLParser(recover=True)
    root = etree.fromstring(cont, parser)

    row = []
    datas = {}
    value_tags = root.xpath('//STATISTICAL_DATA/DATA_INF/VALUE')
    for value_tag in value_tags:
        row = []
        for key in class_object:
            val = value_tag.get(key)
            if val in class_object[key]['objects']:
                level = '';
                if 'level' in class_object[key]['objects'][val]:
                    if class_object[key]['objects'][val]['level'].isdigit():
                        level = ' ' * (int(class_object[key]['objects'][val]['level']) - 1)
                text = ("%s%s" % (level , class_object[key]['objects'][val]['name']))
                row.append(text.encode('utf-8'))
            else:
                row.append(val.encode('utf-8'))
        row.append(value_tag.text)
        writer.writerow(row)
    
    next_tags = root.xpath('//STATISTICAL_DATA/TABLE_INF/NEXT_KEY')
    if next_tags:
        if next_tags[0].text:
            export_statical_data(writer, api_key, stats_data_id, class_object, int(next_tags[0].text))

def get_meta_data(api_key, stats_data_id):
    """
Obtenir des méta-informations
    """
    url = ('http://api.e-stat.go.jp/rest/1.0/app/getMetaInfo?appId=%s&lang=J&statsDataId=%s' % (api_key, stats_data_id))
    req = urllib2.Request(url)
    opener = urllib2.build_opener()
    conn = opener.open(req)
    cont = conn.read()
    parser = etree.XMLParser(recover=True)
    root = etree.fromstring(cont, parser)
    class_object_tags = root.xpath('//METADATA_INF/CLASS_INF/CLASS_OBJ')
    class_object = {}

    for class_object_tag in class_object_tags:
        class_object_id = class_object_tag.get('id')
        class_object_name = class_object_tag.get('name')
        class_object_item = {
            'id' : class_object_id,
            'name' : class_object_name,
            'objects' : {}
        }
        class_tags = class_object_tag.xpath('.//CLASS')
        for class_tag in class_tags:
            class_item = {
                'code' : class_tag.get('code'),
                'name' : class_tag.get('name'),
                'level' : class_tag.get('level'),
                'unit' : class_tag.get('unit')
            }
            class_object_item['objects'][class_item['code']] = class_item
        class_object[class_object_id] = class_object_item
    return class_object

def export_csv(api_key, stats_data_id, output_path):
    """
Exporter les statistiques spécifiées au format CSV.
    """
    writer = csv.writer(open(output_path, 'wb'),quoting=csv.QUOTE_ALL)

    class_object = get_meta_data(api_key, stats_data_id)
    row = []
    for key in class_object:
        title = class_object[key]['name']
        row.append(title.encode('utf-8'))
    row.append('VALUE')
    writer.writerow(row)

    export_statical_data(writer, api_key, stats_data_id, class_object, 1)

def main(argvs, argc):
    if argc != 4:
        print ("Usage #python %s api_key stats_data_id output_path" % argvs[0])
        return 1
    api_key = argvs[1]
    stats_data_id = argvs[2]
    output_path = argvs[3]
    export_csv(api_key, stats_data_id, output_path)

if __name__ == '__main__':
    argvs = sys.argv
    argc = len(argvs)
    sys.exit(main(argvs, argc))

Exemple d'utilisation:

python export_csv.py API_KEY 0003059047 output.csv

Exemple de sortie:

"22_1-8 Nombre d'entreprises, nombre d'employés par organisation commerciale","22_1-8 industries","VALUE"
"Nombre d'entreprises","2005","27677"
"Nombre d'entreprises","2006","27917"
"Nombre d'entreprises","2007","29080"
"Nombre d'entreprises","2008","29355"
"Nombre d'entreprises","2009","29096"
"Nombre d'entreprises","Total total","29096"
"Nombre d'entreprises","total","27871"
"Nombre d'entreprises","Exploitation minière, exploitation en carrière, récolte de gravier","36"
"Nombre d'entreprises","Industrie manufacturière","13105"
"Nombre d'entreprises","090 Industrie de la fabrication de produits alimentaires","1498"
"Nombre d'entreprises","091 Industrie de la fabrication d'aliments pour le bétail","285"
"Nombre d'entreprises","092 Industrie de la fabrication d'aliments pour la pêche","222"
"Nombre d'entreprises","093 Industrie de la meunerie et des céréales","37"

Statistiques mailles régionales de la population du recensement de 2010

Les statistiques de maillage de surface divisent la zone en zones de maillage sans espaces en fonction de la latitude et de la longitude, et organisent les données statistiques dans chaque zone. La figure ci-dessous est illustrée.

image_log10.png

Exemple de code:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import urllib
import urllib2
from lxml import etree
import csv
from collections import defaultdict
import json
from matplotlib import pyplot
import numpy as np
from math import *


def draw_heatmap(data):
    #dessiner
    fig, ax = pyplot.subplots()
    heatmap = ax.pcolor(data, cmap=pyplot.cm.Blues)

    ax.set_xticks(np.arange(data.shape[0]) + 0.5, minor=False)
    ax.set_yticks(np.arange(data.shape[1]) + 0.5, minor=False)

    ax.invert_yaxis()
    ax.xaxis.tick_top()

    pyplot.savefig('image.png')
    pyplot.show()

    return heatmap


def get_meta_data(api_key, stats_data_id):
    """
Obtenir des méta-informations
    """
    url = ('http://api.e-stat.go.jp/rest/1.0/app/getMetaInfo?appId=%s&lang=J&statsDataId=%s' % (api_key, stats_data_id))
    req = urllib2.Request(url)
    opener = urllib2.build_opener()
    conn = opener.open(req)
    cont = conn.read()
    parser = etree.XMLParser(recover=True)
    root = etree.fromstring(cont, parser)
    class_object_tags = root.xpath('//METADATA_INF/CLASS_INF/CLASS_OBJ')
    class_object = {}

    for class_object_tag in class_object_tags:
        class_object_id = class_object_tag.get('id')
        class_object_name = class_object_tag.get('name')
        class_object_item = {
            'id' : class_object_id,
            'name' : class_object_name,
            'objects' : {}
        }
        class_tags = class_object_tag.xpath('.//CLASS')
        for class_tag in class_tags:
            class_item = {
                'code' : class_tag.get('code'),
                'name' : class_tag.get('name'),
                'level' : class_tag.get('level'),
                'unit' : class_tag.get('unit')
            }
            class_object_item['objects'][class_item['code']] = class_item
        class_object[class_object_id] = class_object_item
    return class_object

def get_stats_list(api_key, search_kind, key_word):
    key_word = urllib.quote(key_word.encode('utf-8'))
    url = ('http://api.e-stat.go.jp/rest/1.0/app/getStatsList?appId=%s&lang=J&searchKind=%s&searchWord=%s' % (api_key, search_kind, key_word))
    req = urllib2.Request(url)
    opener = urllib2.build_opener()
    conn = opener.open(req)
    cont = conn.read()
    parser = etree.XMLParser(recover=True)
    root = etree.fromstring(cont, parser)
    ret = []
    data_list = root.find('DATALIST_INF')
    list_infs = data_list.xpath('.//LIST_INF')
    for list_inf in list_infs:
        item = {
             'id': list_inf.get('id')
        }
        stat_name = list_inf.find('STAT_NAME')
        if stat_name is not None:
            item['stat_name'] = stat_name.text
            item['stat_name_code'] = stat_name.get('code')

        gov_org = list_inf.find('GOV_ORG')
        if gov_org is not None:
            item['gov_org'] = gov_org.text
            item['gov_org_code'] = gov_org.get('code')

        statistics_name = list_inf.find('STATISTICS_NAME')
        if statistics_name is not None:
            item['statistics_name'] = statistics_name.text

        title = list_inf.find('TITLE')
        if title is not None:
            item['title'] = title.text

        cycle = list_inf.find('CYCLE')
        if cycle is not None:
            item['cycle'] = cycle.text

        survey_date = list_inf.find('SURVEY_DATE')
        if survey_date is not None:
            item['survey_date'] = survey_date.text

        open_date = list_inf.find('OPEN_DATE')
        if open_date is not None:
            item['open_date'] = open_date.text

        small_area = list_inf.find('SMALL_AREA')
        if small_area is not None:
            item['small_area'] = small_area.text

        ret.append(item)
    return ret


def _get_stats_id_value(api_key, stats_data_id, class_object, start_position, filter_str):
    """
Obtenez des statistiques
    """
    url = ('http://api.e-stat.go.jp/rest/1.0/app/getStatsData?limit=10000&appId=%s&lang=J&statsDataId=%s&metaGetFlg=N&cntGetFlg=N%s' % (api_key, stats_data_id, filter_str))
    if start_position > 0:
        url = url + ('&startPosition=%d' % start_position)
    req = urllib2.Request(url)
    opener = urllib2.build_opener()
    conn = opener.open(req)
    cont = conn.read()
    parser = etree.XMLParser(recover=True)
    root = etree.fromstring(cont, parser)
    ret = []
    row = {}
    datas = {}
    value_tags = root.xpath('//STATISTICAL_DATA/DATA_INF/VALUE')
    for value_tag in value_tags:
        row = {}
        for key in class_object:
            val = value_tag.get(key)
            if val in class_object[key]['objects']:
                text = class_object[key]['objects'][val]['name']
                row[key] = text.encode('utf-8')
            else:
                row[key] = val.encode('utf-8')
        row['value'] = value_tag.text
        ret.append(row)
    return ret

def get_stats_id_value(api_key, stats_data_id, filter_str):
    class_object = get_meta_data(api_key, stats_data_id)
    return _get_stats_id_value(api_key, stats_data_id, class_object, 1, filter_str), class_object

def get_stats_id_list_value(api_key, stats_data_ids, filter):
    filter_str = ''
    for key in filter:
        filter_str += ('&%s=%s' % (key, urllib.quote(filter[key].encode('utf-8'))))
    ret = []
    i = 0
    for stats_data_id in stats_data_ids:
        list, class_object = get_stats_id_value(api_key, stats_data_id, filter_str)
        ret.extend(list)
        i = i + 1
        if i > 5:
            break
    return ret


def get_mesh_id(mesh_id, kind):
    if kind == 1:
        return mesh_id[0:4] + '0000'
    elif kind == 2:
        return mesh_id[0:6] + '00'
    else:
        raise Exception(mesh_id)


def collect_mesh_value(api_key, stats_data_ids, filter, kind):
    filter_str = ''
    for key in filter:
        filter_str += ('&%s=%s' % (key, urllib.quote(filter[key].encode('utf-8'))))
    ret = defaultdict(float)
    i = 0
    for stats_data_id in stats_data_ids:
        list, class_object = get_stats_id_value(api_key, stats_data_id, filter_str)
        sum = 0
        for row in list:
            key = get_mesh_id(row['area'], kind)
            v = row['value']
            if v.isdigit():
                ret[key] += float(v)
        i = i + 1
        #if i > 5:
        #    break
    return ret


def parse_mesh_to_num(mesh_id):
    ret = {}
    if len(mesh_id) == 4:
        ret['p'] = float(mesh_id[0:2])
        ret['u'] = float(mesh_id[2:4])
        ret['q'] = 0.0
        ret['v'] = 0.0
        ret['r'] = 0.0
        ret['w'] = 0.0
        return ret
    elif len(mesh_id) == 8:
        ret['p'] = float(mesh_id[0:2])
        ret['u'] = float(mesh_id[2:4])
        ret['q'] = float(mesh_id[4])
        ret['v'] = float(mesh_id[5])
        ret['r'] = float(mesh_id[6])
        ret['w'] = float(mesh_id[7])
        return ret
    else:
        raise Exception(mesh_id)

def convert_mesh_to_num(mesh_id):
    d1 = parse_mesh_to_num(mesh_id)
    #La zone secondaire est 0-7, donc multipliez par 80
    x1 = (d1['u'] * 80) + (d1['v'] * 10) + d1['w'];
    y1 = (d1['p'] * 80) + (d1['q'] * 10) + d1['r'];
    return x1, y1

def main(argvs, argc):
    wd = u'Système national d'enquête sur le recensement mondial de 2010(Maille 1KM)20101001'
    # API_KEY
    api_key = 'API_KEY'
    search_kind = '2'
    stats_list = get_stats_list(api_key, search_kind, wd)
    stats_ids = []
    for stats in stats_list:
        stats_ids.append(stats['id'])
    #Filtrer par population totale
    values = collect_mesh_value(api_key, stats_ids, {'cdCat01':'T000608001'}, 2)
    ret = []
    max_x = 0
    min_x = 9999
    max_y = 0
    min_y = 9999
    for key in values.keys():
        x, y = convert_mesh_to_num(key)
        x = x
        y = y
        if min_x > x:
            min_x = x
        if max_x < x:
            max_x = x
        if min_y > y:
            min_y = y
        if max_y < y:
            max_y = y
    size_x = int(max_x - min_x) / 10 + 1
    size_y = int(max_y - min_y) / 10 + 1
    buff = [[0.0 for i in range(size_x)] for j in range(size_y)] 
    for key in values.keys():
        x, y = convert_mesh_to_num(key)
        x = int(x - min_x) / 10
        y = (size_y-1) - int(y - min_y) / 10
        #Si vous ne prenez pas de journal, la différence entre Tokyo et les autres régions sera si grande que vous ne pourrez pas cartographier le Japon.
        buff[y][x] = log10(float(values[key]))
        #print ('%s\t%s %d %d' % (key,values[key],x,y))
    draw_heatmap(np.array(buff))

if __name__ == '__main__':
    argvs = sys.argv
    argc = len(argvs)
    sys.exit(main(argvs, argc))

La description: Sur cette figure, la population est agrégée pour chaque seconde zone et son logarithme régulier est affiché sous forme de carte thermique.

La raison d'utiliser le logarithme régulier est que la différence de population entre la région de Kanto et les autres régions est trop grande pour faire une carte décente.

Tenter d'afficher la troisième zone (maillage standard) à l'échelle nationale consomme une énorme quantité de mémoire. La carte est trop grossière dans la première zone.

Dans cet exemple, il faut énormément de temps pour tout afficher. Dans le prochain article, nous allons essayer d'améliorer l'efficacité du traitement en sauvegardant temporairement les données dans spatialite.

** Comment afficher le maillage régional du Government Statistics Office (eStat) dans un navigateur Web ** http://qiita.com/mima_ita/items/38784095a146c87dcd23

référence

Caractéristiques et historique des statistiques régionales de maillage: http://www.stat.go.jp/data/mesh/pdf/gaiyo1.pdf

Carte thermique par Python + matplotlib http://qiita.com/ynakayama/items/7dc01f45caf6d87a981b

Recommended Posts

Utilisons l'API de la fenêtre générale des statistiques gouvernementales (e-Stat)
Utilisons la version Python du module API Confluence.
Utilisons les données ouvertes de "Mamebus" en Python
[Python] Utilisez l'API Face de Microsoft Cognitive Services
Utilisez l'API e-Stat de Python
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
Utilisons rapidement l'expression distribuée des mots avec fastText!
Comment afficher le maillage régional du Government Statistics Office (eStat) dans un navigateur Web
Utilisons usercustomize.py au lieu de sitecustomize.py
Utilisons tomotopy au lieu de gensim
Utilisez l'API Flickr de Python
Décidons le gagnant du bingo
De l'introduction de l'API GoogleCloudPlatform Natural Language à son utilisation
Obtenez les débats parlementaires via l'API
Examinons le mécanisme de la chinchirorine de Kaiji
Obtenez le nombre de tweets liés à un certain mot-clé à l'aide de l'API Twitter
Le format du message obtenu par Slack API est subtilement difficile à utiliser
Obtenons les informations Wiki en utilisant l'API MediaWiki
paramètres zsh qui facilitent l'utilisation de virtualenv
Jusqu'à ce que vous utilisiez l'API Kaggle avec Colab
Utilisez la dernière version de PyCharm sur Ubuntu
Comment utiliser l'API Google Cloud Translation
Jusqu'à ce que vous puissiez utiliser l'API Google Speech
Comment utiliser l'API du guide des programmes NHK
Utilisez l'API Kaggle dans un conteneur Docker
Utilisons différentes versions de SQLite3 de Python3!
[Statistiques] Expliquons en détail l'exécution de la régression logistique en stan (avec jeu de données Titanic)