DataRobot DataPrep Paxataで都道府県を抽出する方法

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

DataRobot DataPrep Paxataで都道府県を抽出する方法

データを扱っていて、住所データがそのまま入っているときに都道府県だけ抽出したくなることはありませんか?

分析の観点ではそのままの住所だと値がほぼユニークになることから利用できない形になってしまうため、サマライズした特徴量として都道府県を抽出して使用することはよくあります。DataRobotではLocation AIに対応しているので緯度経度に変換して処理するという手法もありますが、家賃など単純な座標でなく都道府県が影響していることもあるので合わせて都道府県を入れることはよくあります。(緯度経度上はほとんど隣り合っていても県が違うので家賃に大きな差が出るケースは多い。ほかにもビジネス予算が県ごとに決まっていたりすると隣接する店舗売上なども施策の予算の違いから影響が出るケースがある)

前段はこれくらいにとりあえず住所データをPaxataを使って抽出してみる方法を紹介します。

使うデータは以下のようなダミーデータ。

Miogawa_6-1612834395284.png

Paxataには特定の列を分割する機能があります。一致や長さ以外に正規表現も使えるので、webアプリのログ分割や型番の先頭x文字抜くとかだと簡単にできます。

Miogawa_7-1612834394999.pngMiogawa_8-1612834395243.png

無邪気に「県」で分割してみると失敗です。都道府県の「都道府」にやられました。ここから長さでの分割を駆使してもいいのですが、手間がかかるのでPaxata関数を利用します。ちなみに正規表現で一発でいけるかなと考えたのですが、「京都」が曲者で諦めました。

PaxataにはExcelライクな関数を使える機能があるので、Excelマスターならこの後の解説は結果の関数だけ見れば瞬殺かと思います。まずは左のメニューバーから計算ボタンを選択します。そうすると関数をかけるウィンドウが表示されます。「コンテキストに対応したヘルプの表示」にチェックを入れておくと書いた関数のヘルプなどが動的にでるのでうろ覚えの関数を使うときに便利です。画像の例だとIF関数を使っているのですが、IF(CONDITION, TRUE_VALUE, FALSE_VALUE)と通常のExcelのIF文と似ていることがわかります。Paxataの癖としては列名を選択する場合には、列名を「@」で囲む必要があります。※下の列名を直接クリックでも@に囲まれた列名が自動入力されます。

Miogawa_9-1612834395294.pngMiogawa_10-1612834395000.png

ここまでくれば、Excelマスターなら楽勝だと思いますが、IFとMIDとLEFT関数を駆使するだけです。
取る道は都道府県のなかで特殊な、「東京都」「北海道」「大阪府」「京都府」の4つを先に処理するか、県として4文字の神奈川県、和歌山県、鹿児島県にアプローチするかの二択。前者のルートは3文字目判定を「都」と「道」と「府」ですれば良さそうですが、その後の県の分割も少しめんどくさいので後者のアプローチのほうがスムーズそうです。

4文字県(神奈川県、和歌山県、鹿児島県)を狙うために、MID関数で4文字目が県かを判定(3文字県に「県」で始まる市があるとアウト、、、多分ないはず)。県であれば4文字県確定なので、4文字抜き出し。県でなければ3文字県or都道府のどれか(いずれも3文字)なので結局3文字をLEFT関数で抜けば完了です。

 

 

 

 

IF(MID(@元住所列名@,4,1) = "県", LEFT(@元住所列名@,4),LEFT(@元住所列名@,3))

 

 

 

 

Miogawa_11-1612834395002.png

ちゃんと正しく抽出できているかはインタラクティブに確認できますので、Excelのように関数を作って、全行に反映させてエラーを探すという処理ステップも高速に回せます。

ラベル(2)
バージョン履歴
最終更新:
‎02-09-2021 10:40 AM
更新者:
寄稿者: