PythonとGooglePlacesAPI 〜データサイエンティスト的うどん屋選び〜
TNCももち浜ストア うどんMAP
テレビ西日本で大人気放送中の帯の情報番組『ももち浜ストア』!
その中でも大人気のコーナーが『うどんMAP』!
ラーメンの印象が強い福岡県ですが、実はうどん店も非常に多く、うどんは福岡県民のソウルフードと言っても過言ではありません。そんな美味しいうどんを九州へ全国へと発信しようという企画です。
タレント岡澤アキラさんがうどん店を取材し、美味しいうどん屋さんを視聴者に紹介してくれるコーナーです。
いくつかルールがあり、
- うどん人(地元の人)から美味しいうどん店を聞き取り
- 大型チェーン店は含まない
- 過去紹介したお店はスキップ
- 聞き出したうどん店にアキラさん自ら取材交渉
などなど。
聞き込み調査でまだ訪れたことが無いお店の情報を手に入れるまで奮闘する姿に視聴者は夢中になります。ようやく訪れたうどん店でスープまできれいに飲み干す岡澤アキラさんに視聴者はいつもよだれを流して感動しています。
もしも岡澤アキラさんに会ったらどのお店を紹介しよう?
自宅近くに新しくうどん店が出来たので行ってみるとなかなか美味しい肉うどんで、アキラさんに取材されたらここを教えよう!と思っていました。
ところで、ここのうどん屋は『うどんMAP』にまだ出てないよな?という疑問を解決するためインターネットの渦へと飛び込みました。やがてたどり着いた『ももち浜ストア』のHP、ほどなくして私は叫びました。
「めっちゃデータ化されとるやん!」
過去紹介されたうどん店が全てアーカイブされ、1ページあたり10店舗ずつきれいに並んでいます。これはループすれば簡単にスクレイピング出来そうだなと思いました。
やったこと
スクレイピング
まずはスクレイピング。ももち浜ストアのHP上で公開されているうどん店を全て集めてきます。店名、住所、電話番号、営業時間、定休日、アキラさんが注文したメニューが取得出来ます。
Google Places APIの準備
レビュー情報取得
- Google Places APIを使って、スクレイピングで取得した店名・住所を検索し、GoogleMAP上でのプレイスIDを取得します。
- Google Places APIを使って、該当プレイスIDに紐づくレーティングやレビュー数、経緯度などの情報を取得します。
データ整形
スクレイピングで抽出したうどん店リストにGoogle Map上でのレーティングやレビュー数などの情報をマージしたデータフレームを作ります。
文字列操作で情報を項目ごとで切り分けキレイな行と列のデータへと加工します。
結果
streamlitでプチダッシュボーディング
データの中身を見ていると手直しの必要な箇所に気付きます。
- 道の駅内にある店に道の駅の情報が紐づいている
- PARCO内にある店舗はPARCO自体のレビューが結びついている
PlacesAPIで店名+住所を検索してTOPにきたものを結びつけていたのでこう言った現象が起こりました。これらは普通のうどん店に比べ明らかに多いレビュー数なので、レビュー数に関する閾値を設けて外すことができると考えました。
また、レビューがあまりに少ないお店も外すことで人気のお店を検索しようと考えました。
スライドバーで簡単に閾値を動かして、その結果得られるデータフレームをインタラクティブに可視化したい!そんなときにstreamlitは非常に便利です。エンジニアリング力よわよわな私でも短いコードで簡単にWEBアプリっぽい物が作れます!
- アキラさん福岡の端から端まで取材回っててすごい!
- レーティング3.7と4.2に壁がある!?
- とは言え全体的に高いレビュー!
- 福岡の人みんなうどん好き!
- しかし一番レーティング高いお店はお蕎麦屋さん!?
- 香川出身の私としては「讃岐うどん よろず屋」さんめっちゃ気になる!
絶対食べに行きたい!
まとめ
うどんMAPのルールによって良質なデータとなっている!
GoogleMapでうどん店を検索してもチェーン店やファミレスや、居酒屋などが多く表示され求めているものとのズレがありました。しかし今回のデータは、「うどんMAP」のルールによってうどん人(地元の人)が美味しいと思ううどん屋さんだけが集まったデータでありこれは貴重なものだと気付きました。人が手間ひまかけて作り上げた良いデータ、それをHPでオープンにしてくれているTNCさんももち浜ストアさんマジ神!
『うどんMAP』しか勝たん!
今回使ったコードはこちらです
PythonでさけのわAPIをたたく 〜データサイエンティスト的日本酒選び〜
さけのわデータプロジェクトについて
なんと日本酒アプリさけのわさんが保有する日本酒各銘柄のフレーバーを数値化したデータや地域、蔵元、ランキングなどのデータを公開してくれていてます!!
Pythonでサクッと分析してみます!!
データ取得
pyhtonからAPIを利用してデータを取得します。APIの仕様はさけのわデータプロジェクトのページに詳しく書かれています。
こんな感じのデータが取れてpandasで加工していきます。
大好きな佐賀のお酒と他県との比較
実は私は佐賀のお酒が大好きなのです。 鍋島、能古見、古伊万里 前、東一、蔵心、東鶴、天吹、天山、、、、どれも素晴らしいお酒ですばい。
佐賀のお酒は芳醇旨口と言われています。 フレーバーチャートの数値を使って佐賀のお酒と、淡麗辛口と言われている新潟のお酒とを比較してみます。
箱ヒゲ図を見ても納得の分布ですね。
各銘柄について、フレーバータグが与えられています。 佐賀と新潟それぞれの県でデータがある銘柄全てについてフレーバータグを使ってword cloudを作ります。
佐賀はフルーティ、新潟はスッキリ辛口というイメージに合った結果になりました。 なかなか面白いですね。
ど真ん中の酒を探す
ここで、良いことを思いつきました!
- クセの無い真ん中なお酒こそ美味いのでは?
- そう言えば平均化した顔が美人になるっていう記事を昔どこかで見たな
- そろそろ寒くなってきたしおでんと日本酒なんて良いじゃない
各フレーバーチャートのヒストグラムを見ると割ときれいな分布でした。
華やか、芳醇、重厚、穏やか、ドライ、軽快を表す6次元空間について考えます。 6項目それぞれの中央値で構成されるベクトルに一番近いベクトルを探します。 近さの決め方は、中央値で構成したベクトルと各銘柄のなす角の大きさ、つまりコサイン類似度です。
で、一番真ん中に近いお酒を探すと
中央値ベクトルとの類似度1位のお酒は埼玉県の天覧山でした!!
飲んでみる
天覧山を調べてみると、埼玉の五十嵐酒造でつくられているお酒でした。 天覧山の純米吟醸は全国燗酒コンテスト2020 プレミアム燗酒部門にて最高金賞を受賞しているそうです。 酒造のHPから直接購入でき発送も早くて良かったです!
レビュー
舌の上から喉に転がる際に感じるのは、程よく丸みを帯びた日本酒の持つ甘み・旨味・香り。口中に広がったこれら甘く柔らかな味も、酒が喉を通ると後口の辛さへと表情を変える。美味い、やっぱ熱燗はこうだよな、なんて思っているうちに余韻がきれいに消えていく。おでんをつまみ、そして天覧山をグイッ。やはり合う。おでん、天覧山、おでん、天覧山、、、エンドレスである。
おわりに
現代においては華やかでフルーティ、綺麗な飲みやすい純米吟醸ばかりが評価され地酒!地酒!とありがたがられていますが、それらは日本酒空間における一つのクラスターに過ぎないのかもしれないですね。知らない飲んだことない日本酒はまだまだ沢山あります。データ分析し、仮説・検証として日本酒を選んでみても色んな気付きがあって面白いかもしれません。
分析に仕様したjupyterのソースコードはこちらに置いてます。