Python

Python基礎:住所データから都道府県を抽出する

スポンサーリンク


Pythonによる業務効率化の記事をこの他にも公開しています。

はじめに

今回は住所データから都道府県を抽出してみます。これまでに扱った、「正規表現」を使うことで、住所データから都道府県のみを抽出することができます。データは、オープンデータとして公開されている、日本全国の住所マスターデータを使ってみましょう。

サンプルデータ

Geolonia(ジオロニア)不動産テック協会が全国の町丁目レベル(189,540件)の住所データをオープンデータとして公開してくれています。これを使ってみましょう。以下のページの「ダウンロード」からデータを取得しましょう。

Geolonia 住所データ
全国の町丁目レベル(277,191件)の住所データのオープンデータ
# ライブラリのインポート
import pandas as pd

# ダウンロードしたデータの読み込み
address=pd.read_csv('C:/blog/address_list.csv')

# データの確認
address.sample(5)

データの確認では、address.head()でよいのですが、北海道のデータが並んでしまって面白くないので、ランダムに取り出しています。このデータでは、既に「都道府県」が抽出されているので、都道府県、市区町村、大字町丁目名をつなげましょう。(本末転倒ですが・・・)

つなげたデータを「住所」というカラムとしています。

# 住所データの作成
address_list=address[['都道府県コード','都道府県名','市区町村名','大字町丁目名']]
address_list['住所']=address_list['都道府県名']+address_list['市区町村名']+address_list['大字町丁目名']
address_list=address_list[['住所']]
address_list

このようなデータが与えられたとして、都道府県を抽出することを考えます。

都道府県を抽出する

Pytonで正規表現を扱うには、「re」ライブラリを使うのでしたね。まず、最初にインポートしておきましょう。正規表現のメタ文字と特殊シーケンスについては、こちらの記事を参考にしてください。

都道府県を抽出することを考える場合、「都」については「東京都」のみ、「道」については「北海道」のみ、「府」については「大阪府」と「京都府」があって、「県」については、複数の県があります。「県」の前に、2 or 3文字と決まっています。このように抽出したいデータの条件を整理していけば、あとは正規表現でどのようにかくかを考えるだけですね。

# ライブラリのインポート
import re

# 都道府県の抽出する正規表現パターンをつくる
pattern = '東京都|北海道|(京都|大阪)府|.{2,3}県'

# 都道府県を抽出する
address_list['都道府県']=address_list['住所'].apply(lambda x:re.match(pattern,x).group())
address_list

match()では、返り値はマッチオブジェクトとなることに注意してください。マッチした文字列が欲しいときには、group()メソッドで取り出します。無事、都道府県を抽出することができてそうですね。確かめてみましょう。

address_list['都道府県'].unique()

ちゃんとできてますね!

スポンサーリンク

まとめ

いかがでしたか?一見、難しそうでも、一つずつ整理していけば問題ないですね。文字列を取り出したくなったときには、是非思い出してください。

コメント

タイトルとURLをコピーしました