初心者エンジニアの理論と実践メモ

本や授業のスライドをかみ砕いたメモ。機械学習メインで。

東京公共交通オープンデータ API返り値をデータフレームに入れるまで

下準備

import json
import urllib
import urllib.request
import pandas as pd

API_KEY = 'xxxxxx'
endpoint = 'https://api-tokyochallenge.odpt.org/api/v4/'

APIを叩く

request_url = endpoint + 'odpt:Train' + '?' + 'acl:consumerKey=' + API_KEY
response = urllib.request.urlopen(request_url)
response.read()
>>> b'[{"@id":"urn:ucode:_00001C000000000000010000030FCB14","@type":"odpt:Train","dc:date":"2018-02-11T13:06:19+09:00","@context":"http://vocab.odpt.org/context_odpt.jsonld

byteをutf-8に変換

response.read().decode()

>>>'[{"@id":"urn:ucode:_00001C000000000000010000031018B0","@type":"odpt:Train","dc:date":"2018-02-11T13:11:54+09:00","@context":"http://vocab.odpt.org/context_odpt.jsonld

utf-8の文字列をjsonライクな辞書のリストに変換

text = response.read().decode()
json.loads(text)

>>>  [{'@context': 'http://vocab.odpt.org/context_odpt.jsonld',
  '@id': 'urn:ucode:_00001C000000000000010000031018B0',
  '@type': 'odpt:Train',
  'dc:date': '2018-02-11T13:11:54+09:00',
  'dct:valid': '2018-02-11T13:12:24+09:00',
  'odpt:delay': 0,
  'odpt:frequency': 30,

辞書からdataframeに変換

pd.DataFrame.from_records(json.loads(text))

f:id:satoumemo:20180211141222p:plain