皆さんこんにちは。いし(@ishilog2)です。
今回はPythonを用いて、国土交通省が提供しているAPIから市区町村を取得したいと思います。
[st_toc]スポンサーリンク
導入
今回のコードではrequestsとpandasを使用します。
インストールしていない方はインストールして下さい。
pip install requests pip install pandas
環境によってはpip3 installのこともあります。
実践
実施すること
国土交通省が提供しているAPIを使用して市区村町一覧のデータフレームを作成します。
APIの使い方:https://www.land.mlit.go.jp/webland/api.html#todofukenlist
サンプルコード
import requests import pandas as pd def GetMunicipalities(AreaCode): url = "https://www.land.mlit.go.jp/webland/api/CitySearch?area=" + AreaCode r = requests.get(url) r = r.json() r = r['data'] df = pd.DataFrame(r) print(df) GetMunicipalities("13")
結果
id name 0 13101 千代田区 1 13102 中央区 2 13103 港区 3 13104 新宿区 4 13105 文京区 .. ... ... 57 13381 三宅村 58 13382 御蔵島村 59 13401 八丈町 60 13402 青ヶ島村 61 13421 小笠原村 [62 rows x 2 columns]
解説
① requestsを用いてHTMLを取得
url = "https://www.land.mlit.go.jp/webland/api/CitySearch?area=" + AreaCode r = requests.get(url)
requests.get(‘URL’)でHTML情報を習得します。
② JSON形式でリクエストをする
soup = BeautifulSoup(r.text, 'html.parser')
APIはJSON形式で提供されるため、JSON形式でリクエストをします。
[st-mybox title=”JSONとは” fontawesome=”fa-file-text-o” color=”#757575″ bordercolor=”” bgcolor=”#fafafa” borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]JSONとは「JavaScript Object Notation」の略で、テキストベースのデータフォーマットのことです。CSVに近いものとなります。
APIのデータ送受信はこのJSON形式がほとんどです。
[/st-mybox]
>>結果 {'status': 'OK', 'data': [{'id': '13101', 'name': '千代田区'}, {'id': '13102', 'name': '中央区'}, {'id': '13103', 'name': '港区'}, {'id': '13104', 'name': '新宿区'}, {'id': '13105', 'name': '文京区'}, {'id': '13106', 'name': '台東区'}, {'id': '13107', 'name': '墨田区'}, {'id': '13108', 'name': '江東区'}, {'id': '13109', 'name': '品川区'}, {'id': '13110', 'name': '目黒区'}, {'id': '13111', 'name': '大田区'}, {'id': '13112', 'name': '世田谷区'}, {'id': '13113', 'name': '渋谷区'}, {'id': '13114', 'name': '中野区'}, {'id': '13115', 'name': '杉並区'}, {'id': '13116', 'name': '豊島区'}, {'id': '13117', 'name': '北区'}, {'id': '13118', 'name': '荒川区'}, {'id': '13119', 'name': '板橋区'}, {'id': '13120', 'name': '練馬区'}, {'id': '13121', 'name': '足立区'}, {'id': '13122', 'name': '葛飾区'}, {'id': '13123', 'name': '江戸川区'}, {'id': '13201', 'name': '八王子市'}, {'id': '13202', 'name': '立川市'}, {'id': '13203', 'name': '武蔵野市'}, {'id': '13204', 'name': '三鷹市'}, {'id': '13205', 'name': '青梅市'}, {'id': '13206', 'name': '府中市'}, {'id': '13207', 'name': '昭島市'}, {'id': '13208', 'name': '調布市'}, {'id': '13209', 'name': '町田市'}, {'id': '13210', 'name': '小金井市'}, {'id': '13211', 'name': '小平市'}, {'id': '13212', 'name': '日野市'}, {'id': '13213', 'name': '東村山市'}, {'id': '13214', 'name': '国分寺市'}, {'id': '13215', 'name': '国立市'}, {'id': '13218', 'name': '福生市'}, {'id': '13219', 'name': '狛江市'}, {'id': '13220', 'name': '東大和市'}, {'id': '13221', 'name': '清瀬市'}, {'id': '13222', 'name': '東久留米市'}, {'id': '13223', 'name': '武蔵村山市'}, {'id': '13224', 'name': '多摩市'}, {'id': '13225', 'name': '稲城市'}, {'id': '13227', 'name': '羽村市'}, {'id': '13228', 'name': 'あきる野市'}, {'id': '13229', 'name': '西東京市'}, {'id': '13303', 'name': '瑞穂町'}, {'id': '13305', 'name': '日の出町'}, {'id': '13307', 'name': '檜原村'}, {'id': '13308', 'name': '奥多摩町'}, {'id': '13361', 'name': '大島町'}, {'id': '13362', 'name': '利島村'}, {'id': '13363', 'name': '新島村'}, {'id': '13364', 'name': '神津島村'}, {'id': '13381', 'name': '三宅村'}, {'id': '13382', 'name': '御蔵島村'}, {'id': '13401', 'name': '八丈町'}, {'id': '13402', 'name': '青ヶ島村'}, {'id': '13421', 'name': '小笠原村'}]}
このように辞書型でデータが取得されます。
③ ”Data”のキーのみ取得する
r = r['data']
今回の場合だと”Status”と”Data”の2つのキーが取得れます。r[‘Data’]で選択したキーのみにすることが出来ます。
>>結果 [{'id': '13101', 'name': '千代田区'}, {'id': '13102', 'name': '中央区'}, {'id': '13103', 'name': '港区'}, {'id': '13104', 'name': '新宿区'}, {'id': '13105', 'name': '文京区'}, {'id': '13106', 'name': '台東区'}, {'id': '13107', 'name': '墨田区'}, {'id': '13108', 'name': '江東区'}, {'id': '13109', 'name': '品川区'}, {'id': '13110', 'name': '目黒区'}, {'id': '13111', 'name': '大田区'}, {'id': '13112', 'name': '世田谷区'}, {'id': '13113', 'name': '渋谷区'}, {'id': '13114', 'name': '中野区'}, {'id': '13115', 'name': '杉並区'}, {'id': '13116', 'name': '豊島区'}, {'id': '13117', 'name': '北区'}, {'id': '13118', 'name': '荒川区'}, {'id': '13119', 'name': '板橋区'}, {'id': '13120', 'name': '練馬区'}, {'id': '13121', 'name': '足立区'}, {'id': '13122', 'name': '葛飾区'}, {'id': '13123', 'name': '江戸川区'}, {'id': '13201', 'name': '八王子市'}, {'id': '13202', 'name': '立川市'}, {'id': '13203', 'name': '武蔵野市'}, {'id': '13204', 'name': '三鷹市'}, {'id': '13205', 'name': '青梅市'}, {'id': '13206', 'name': '府中市'}, {'id': '13207', 'name': '昭島市'}, {'id': '13208', 'name': '調布市'}, {'id': '13209', 'name': '町田市'}, {'id': '13210', 'name': '小金井市'}, {'id': '13211', 'name': '小平市'}, {'id': '13212', 'name': '日野市'}, {'id': '13213', 'name': '東村山市'}, {'id': '13214', 'name': '国分寺市'}, {'id': '13215', 'name': '国立市'}, {'id': '13218', 'name': '福生市'}, {'id': '13219', 'name': '狛江市'}, {'id': '13220', 'name': '東大和市'}, {'id': '13221', 'name': '清瀬市'}, {'id': '13222', 'name': '東久留米市'}, {'id': '13223', 'name': '武蔵村山市'}, {'id': '13224', 'name': '多摩市'}, {'id': '13225', 'name': '稲城市'}, {'id': '13227', 'name': '羽村市'}, {'id': '13228', 'name': 'あきる野市'}, {'id': '13229', 'name': '西東京市'}, {'id': '13303', 'name': '瑞穂町'}, {'id': '13305', 'name': '日の出町'}, {'id': '13307', 'name': '檜原村'}, {'id': '13308', 'name': '奥多摩町'}, {'id': '13361', 'name': '大島町'}, {'id': '13362', 'name': '利島村'}, {'id': '13363', 'name': '新島村'}, {'id': '13364', 'name': '神津島村'}, {'id': '13381', 'name': '三宅村'}, {'id': '13382', 'name': '御蔵島村'}, {'id': '13401', 'name': '八丈町'}, {'id': '13402', 'name': '青ヶ島村'}, {'id': '13421', 'name': '小笠原村'}]
③ 辞書型からデータフレームに変換
df = pd.DataFrame(r)
pandasのpd.DataFrame()を使用して辞書型からデータフレームへ変換をします。
>>結果 id name 0 13101 千代田区 1 13102 中央区 2 13103 港区 3 13104 新宿区 4 13105 文京区 .. ... ... 57 13381 三宅村 58 13382 御蔵島村 59 13401 八丈町 60 13402 青ヶ島村 61 13421 小笠原村 [62 rows x 2 columns]
【おまけ】地域コード表
01 | 北海道 |
02 | 青森県 |
03 | 岩手県 |
04 | 宮城県 |
05 | 秋田県 |
06 | 山形県 |
07 | 福島県 |
08 | 茨城県 |
09 | 栃木県 |
10 | 群馬県 |
11 | 埼玉県 |
12 | 千葉県 |
13 | 東京都 |
14 | 神奈川県 |
15 | 新潟県 |
16 | 富山県 |
17 | 石川県 |
18 | 福井県 |
19 | 山梨県 |
20 | 長野県 |
21 | 岐阜県 |
22 | 静岡県 |
23 | 愛知県 |
24 | 三重県 |
25 | 滋賀県 |
26 | 京都府 |
27 | 大阪府 |
28 | 兵庫県 |
29 | 奈良県 |
30 | 和歌山県 |
31 | 鳥取県 |
32 | 島根県 |
33 | 岡山県 |
34 | 広島県 |
35 | 山口県 |
36 | 徳島県 |
37 | 香川県 |
38 | 愛媛県 |
39 | 高知県 |
40 | 福岡県 |
41 | 佐賀県 |
42 | 長崎県 |
43 | 熊本県 |
44 | 大分県 |
45 | 宮崎県 |
46 | 鹿児島県 |
47 | 沖縄県 |
ABOUT ME
スポンサーリンク
スポンサーリンク