Slide 1

Slide 1 text

PyData.Fukuoka Meetup #5 - KDD2019参加報告 & LT 2019/9/18 TableauとPythonとMySQLで オープンデータの可視化 熱中症データ編(福岡市)

Slide 2

Slide 2 text

•野口 千樹(のぐち せんじゅ) @ngc111snj •所属 – データテクノロジーラボ 今日が初めてのLTです だれですか?

Slide 3

Slide 3 text

今年の夏も暑かったですね 甲子園も熱かった ホークスと言えば熱男

Slide 4

Slide 4 text

ということで

Slide 5

Slide 5 text

福岡市オープンデータを使って、 熱中症搬送者数を 可視化 なにしたの?

Slide 6

Slide 6 text

•Tableau Desktop 2019.2.2 – データの可視化 •Python 3.7 – データの加工 •MySQL 8.0.15 – データの管理 なに使ったの?

Slide 7

Slide 7 text

•熱中症救急搬送者データ(CKAN) – 発生日、性別、年齢区分 •気象情報データ(気象庁) – 気温、湿度、風速等 •カレンダーデータ – 日付 なに使ったの?

Slide 8

Slide 8 text

1. オープンデータ取得 2. Pythonでデータを加工 3. MySQLデータベースに格納 4. Tableauでデータの可視化 5. Tableau PublicにViz投稿 構成

Slide 9

Slide 9 text

•取得したいデータを指定し、データフレーム へ格納 1.サイトからデータ取得 #取り込みたいURLパス URL = "https://ckan.open-governmentdata.org/dataset/660c3736-1065-4d79-9eca- 3093d09aad6e/resource/703fc06f-df9b-46f0-8a99- 38791e75be1a/download/netyu2019.csv" r = requests.get(URL) df = pd.read_csv(io.BytesIO(r.content),encoding="cp932",sep=",")

Slide 10

Slide 10 text

•データがTableau向きでない •関数を作成し、置換した(めっちゃ簡単) 2.Pythonでデータを加工 #置換する関数 def rep(col,before,after): df[col] = df[col].replace(before,after) list_sex=['性別(1:男,2:女)','男性','女性'] for i in range(1,3): rep(list_sex[0], i, list_sex[i]) list_age=['年齢区分(2:乳幼児,3:少年,4:成人,5:高齢者)','乳幼児','子ども','成人','高齢者'] for i in range(1,5): rep(list_age[0], i+1, list_age[i]) 番号 覚知日付 性別(1:男,2:女) 年齢区分(2:乳幼児,3:少年,4:成人,5:高齢者) 0 5010526000 2019-05-26 1 3 1 5010511000 2019-05-11 1 4 2 5010512000 2019-05-12 2 5 3 5010524000 2019-05-24 1 5 4 5010530000 2019-05-30 2 3

Slide 11

Slide 11 text

•置換前後 – カラムも変更 番号 覚知日付 性別 年齢区分 0 5010526000 2019-05-26 男性 子ども 1 5010511000 2019-05-11 男性 成人 2 5010512000 2019-05-12 女性 高齢者 3 5010524000 2019-05-24 男性 高齢者 4 5010530000 2019-05-30 女性 子ども 番号 覚知日付 性別(1:男,2:女) 年齢区分(2:乳幼児,3:少年,4:成人,5:高齢者) 0 5010526000 2019-05-26 1 3 1 5010511000 2019-05-11 1 4 2 5010512000 2019-05-12 2 5 3 5010524000 2019-05-24 1 5 4 5010530000 2019-05-30 2 3 2.Pythonでデータを加工

Slide 12

Slide 12 text

•エンコードをutf-8とcp932に指定し、それ ぞれcsvに保存 •一応、データが変じゃないか確認 2.Pythonでデータを加工 df.to_csv("all_utf8.csv",encoding="utf-8",index=None) df.to_csv("all_cp932.csv",encoding="cp932",index=None)

Slide 13

Slide 13 text

•熱中症搬送データをインポート •ここは手動。。。 – (本当は自動化したかった) 3.MySQLデータベースに格納

Slide 14

Slide 14 text

•気象データとカレンダーデータもインポート 3.MySQLデータベースに格納

Slide 15

Slide 15 text

•Tableauからデータベースに接続 4.Tableauでデータの可視化

Slide 16

Slide 16 text

•ツリーマップを作ってみた 4.Tableauでデータの可視化

Slide 17

Slide 17 text

•プルダウンでViewが切り替わる 4.Tableauでデータの可視化 demo

Slide 18

Slide 18 text

•新機能パラメータアクションを設定してみた 4.Tableauでデータの可視化 demo マークのクリックで、Vizを直接操作してパラメーター値を変更することが できる。リファレンスライン、計算、フィルター、SQLクエリでパラメー ターアクションを使用し、ビジュアライゼーションでのデータの表示方法 をカスタマイズできる機能。

Slide 19

Slide 19 text

•体感温度(ミスナール改)ってのが熱中症と 関係あるらしい •必要な変数はそろっているので、計算フィー ルドで新たな変数を作る 4.Tableauでデータの可視化

Slide 20

Slide 20 text

4.Tableauでデータの可視化 demo •体感温度と搬送者の関係

Slide 21

Slide 21 text

•最終版はTableau Publicで公開しました 記念すべき 初Viz を投稿 •https://public.tableau.com/profile/ngcsnj#!/ 5.Tableau PublicにViz投稿

Slide 22

Slide 22 text

Thanks!