こんにちは、都道府県データは比較的データの扱いが簡単なのですが、市町村のデータしかないときに都道府県と紐づけたいといったことは案外大変です。
そんなこんなでいろいろ調べてみると
ここに、市町村名と都道府県がまとまっているデータが公開されているのを見つけました
これをうまく利用して、市町村名を入力にして、都道府県名を出力とするような関数を作ってみましょう
実装
このリンクからデータをダウンロードしてきて展開します。
中にzenkoku.csvが入っていると思います。
中身を見てみましょう
ちょっと読み込みが大変です
codecsをいじらないといけないみたいなので
https://monaledge.com/article/164
これと同じ手法を使って読み込みます
import codecs
import pandas as pd
# 市町村、都道府県データはここからダウンロードしてきた : http://jusyo.jp/csv/new.php
with codecs.open('./zenkoku.csv', "r", "Shift-JIS", "ignore") as file:
df = pd.read_table(file, delimiter=",")
def predict_logic(city):
return_obj = ''
hit_area = df[df['市区町村'].str.contains(city)]
# 同名の市町村がちょくちょくあるので2つ以上になることもある
city_candidates = hit_area['都道府県'].unique()
# 都道府県のインデックスを探す
return city_candidates
>>> predict_logic('旭川') array(['北海道'], dtype=object) >>> predict_logic('札幌') array(['北海道'], dtype=object) >>> predict_logic('つくば') array(['茨城県'], dtype=object) >>> predict_logic('神戸') array(['岐阜県', '兵庫県'], dtype=object)
いろいろ試した結果
神戸って「こうどちょう」ってところが岐阜にあるらしいですね