gyosu
業務スーパー全都道府県出店記念な店舗の可視化
https://gyazo.com/7cb433e59c19f1fb7f2233bcfc218435
自己紹介
はんなりPythonというオンライン勉強会 オーガナイザ
2019 PyConJP / PyCon China Beijing スピーカー
2020 PyCon mini Hiroshima スピーカー / PyConJP チュートリアル
プログラマーではない。パッケージを使う人。
最近モニターを23インチから32インチに!!良い!
最近重い腰をあげ、クラウドを学習中
AWSから
これ使ってる人は凄いビジネス感覚を持つ人になりそうだなと今更ながら感動中
クラウドネイティブな人材の潜在的な価値はすごそう
とはいえ、おじさんには結構難関
色々試してみる
モチベーション
全都道府県出店とはめでたい
全店舗のデータを取って可視化したり、気象データを取ってみたりしよう!!!
https://gyazo.com/a5cb539b960f84691f6f475aadc7f893
作業段階
住所集め
ジオコーディング
可視化
持ってる気象データを活用して・・・
まずは住所データ収集
1-47でループすれば店舗の住所が取れる
ついでに店舗名も取っておく 感じだと読めない可能性 --> カタカナ
しっかりとしたページ作りなので簡単に取れる
案外初心者の人とか作っているっぽいサイトは取るのが難しい
例 京都府のサイト
注 jupyterを使うとできない
データ分析の仕事、結構データとってとか作っていう仕事があったりする。下の2つが使えるとはかどる。それを並列化したりいろいろできる
requests_html
次に緯度経度情報を取得
住所データの変換をGeocodingと呼ぶらしい
pythonに geocoderというライブラリがあるが、使ってみたが普通の住所への反応が悪かった アプリケーションのIDを取得して使う
JSONと書かれているがxmlしかない
xmlって聞くとちょっとやる気なくなる
apiを叩くのはrequestsを使う
問題: 住所はたくさんあってたまに位置情報がない
どうする?
適切な解決策があればご指摘ください
とりあえずここでは位置情報が得られるまで1文字ずつ住所を削った
どうやって?再帰関数を使う。
code: requests.py
def req_latlng(shop_address: str) -> str:
'''
apiの返り値が無効であれば
住所から一文字削除してもう一度試す
再帰関数
shop_address str: 住所の文字列
'''
req_url = base_url + f'?appid={appid}&query={shop_address}'
r = requests.get(req_url)
root = ET.fromstring(r.content)
time.sleep(2)
try:
print(shop_address)
return latlng
except IndexError:
return req_latlng(shop_address:-1) こうして先ほど作った住所のcsvに位置情報を追加する
https://gyazo.com/8a4dba09f8886c0ec76f64a3190843ed
可視化
folium はapi_keyなく地図が表示できるのが良いところ
↑ pydeck / plotly なんかはきれいな地図を出すのにmapboxのapiを利用する
天気のデータを比較する
最近天気のデータを入手したので
1時間に1回更新され、10時間先までの予測を持つデータ
データ wgrib2 形式というファイル形式
それをNOAAが作るwgrib2 というプログラムでnetcdf4 ファイルに変換 Xarray
xarrayを使うとマルチ次元なラベルデータが扱える
pandas は Panel クラスがなくなって・・・
NUMFOCUS なパッケージだけあって xarray <==> pandas という動きが容易
とりあえず今回は気温を可視化する
何をやったら面白いかなぁ?
まとめ
データ集めんの楽しいよ
可視化も楽しいよ
気象データをxarrayで扱う楽しいよ
経済センサス
AUの店舗
google map api:
Marker クラスター
玄関の場所で住所を決めている
入口で経度緯度