Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dashでmyダッシュボードを作ろう ーpytrendsで見るコロナの感染拡大時期ー
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Hacarus Inc.
August 05, 2022
Programming
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dashでmyダッシュボードを作ろう ーpytrendsで見るコロナの感染拡大時期ー
TECH in 京都 #3(
https://hacarus.connpass.com/event/254480/)の資料です
。
Hacarus Inc.
August 05, 2022
More Decks by Hacarus Inc.
See All by Hacarus Inc.
GitLab CI/CD で C#/WPFアプリケーションのテストとインストーラーのビルド・デプロイを自動化する
hacarus
0
1.4k
QA4AIに則ったMLOpsツールの活用
hacarus
0
740
0から協働ロボット外観検査システムを3ヵ月で具現化した軌跡
hacarus
0
290
ワンちゃんの健康を願う皆様に送る 犬心電図AI解析プロダクト紹介_AWS DevDay2022
hacarus
0
220
犬の心電AI解析プロダクト開発奮闘記 _クラウドからハード開発までてんこ盛り
hacarus
0
2.2k
ExplainableAIの概要とAmazon SageMaker Clarifyでの実装例
hacarus
0
1.2k
AWS Step Functions を用いた非同期学習処理の例
hacarus
0
1.5k
Interpretable Machine Learning: モデル非依存な解釈手法の紹介
hacarus
0
1.2k
時系列データ予測手法の宇宙天気予報への応用
hacarus
0
1.5k
Other Decks in Programming
See All in Programming
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
650
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
210
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.2k
Agentic UI
manfredsteyer
PRO
0
130
OSもどきOS
arkw
0
480
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
670
The NotImplementedError Problem in Ruby
koic
1
700
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
490
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
180
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
2
520
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
450
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
The Curse of the Amulet
leimatthew05
1
13k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
4 Signs Your Business is Dying
shpigford
187
22k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Ethics towards AI in product and experience design
skipperchong
2
310
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
330
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
230
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
440
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
600
Transcript
1 Dashでmyダッシュボードを作ろう ーpytrendsで見るコロナの感染拡大時期ー 奥田 華代 株式会社HACARUS
2 所属:株式会社HACARUS 肩書:データサイエンティスト 実務経験: • 生物系・医療系のデータ分析 • 実験データを管理する社内システムの開発 趣味:カフェ巡り、ホテルステイ、ボルダリング 好きな食べ物:パフェ
自己紹介
3 • 何を作ることにしたか • なぜ作ることにしたか • どのように学習を進めたか ◦ Dash ◦
Pytrends • どのように作り進めたか • 作ってどうだったか ◦ 可視化したデータの考察 ◦ 苦労した点 今日話すこと
4 • Dashやpytrendsのチュートリアル的な話 ◦ インストール手順や起動手順 ◦ コンポーネントの使い方や入出力の方法などの基本技術 ◦ 理由:時間がないため •
データ分析の話 ◦ 可視化したデータを使って未来を予測するというような機械学習的な話 ◦ 理由:今回はデータの可視化に焦点を当てておりフォーカスから外れるため 話さないこと
5 • 誰かがDashを使うきっかけになれば ◦ 知っているけど使ったことのない人は多いはず • 他の人がどのようにアプリ開発の学習を進めているのか、どこで苦労したのかを共有して、話の ネタになれば 発表のモチベーション
6 何を作ることにしたか
7 検索トレンドを可視化する ダッシュボード ・Googleトレンドのデータを使用 ・コロナの感染拡大時期との関連を表示
8 なぜ作ることにしたか
9 • 業務で簡単な分析や図表の可視化ができる簡易ツールを作ることになり、以下の条件を満たす ツールを探していた ◦ 学習コストが小さい ◦ 短時間でそれなりのものができる ◦ Pythonライブラリ
• StreamlitとDashの2つが候補に挙がり、業務ではより簡便な Streamlitを使うことに 業務で簡易アプリを作るツールを探していた Dashは不要になったけど・・・
10 • 以前から検索キーワードのトレンドを自分で可視化してみたかった 例)プログラミング言語の人気ランキング Dashの使用感を確認しておきたい
11 • https://trends.google.co.jp/trends/?geo=JP • 検索トレンドを表示する • 指定期間に検索キーワードがどれくらい検索さ れたかの推移を可視化する Googleトレンドとは
12 • 検索キーワードのトレンド ◦ 人気度の動向 ◦ 地域別のインタレスト ◦ 関連キーワード ▪
注目(検索頻度の増加率が大きい) ▪ 人気(検索頻度が高い) • 最近の急上昇ワード • 年ごとの急上昇ワード Googleトレンドの機能
13 • 良かった点 ◦ 本家だけあって使いやすい ◦ 確認したいワードや比較ワードを登録しておける • あるといいなと思った機能 ◦
キーワードを5つ以上比較できる ◦ 人気度の動向で急激な変化を見せている時期に絞って関連キーワードを検索できる Googleトレンドを使ってみて 後者の機能をDashとpytrendsで実装してみよう
14 どのように学習を進めたか
15 • PHPでWebアプリを作ったことがある • RのshinyやVue.js、PythonのKivyでデスクトップアプリを作ったことがある • Pythonはずっと使っている • Dashは名前は知っていたが使ったことはない •
pytrendsも使ったことがない 作り始める前の知識・技術レベル つまり、Dashとpytrendsについては何も知らない
16 • https://plotly.com/dash/ • データを可視化するダッシュボードを作 るフレームワーク • インタラクティブに動作するグラフを簡 単に埋め込める •
商用版と無償版がある Dashとは
17 1. 公式チュートリアル a. インストール、起動方法、コンセプト等、基本事項を確認 b. チュートリアルに沿って実際に作って動かしてみる 2. 公式ギャラリー a.
どんなものが実装できるのかを知る 3. Qiitaのキーワード検索結果 a. 見出しに目を通しす b. LGTM数や投稿時期も確認しつつ参考になりそうな記事をピックアップしておく 4. 作り進めながら必要なタイミングで各種コンポーネントの APIドキュメント Dashの学習の流れ
18 1. 公式チュートリアル a. インストール、起動方法、コンセプト等、基本事項を確認 b. チュートリアルに沿って実際に作って動かしてみる 2. 公式ギャラリー a.
どんなものが実装できるのかを知る 3. Qiitaのキーワード検索結果 a. 見出しに目を通しす b. LGTM数や投稿時期も確認しつつ参考になりそうな記事をピックアップしておく 4. 作り進めながら必要なタイミングで各種コンポーネントの APIドキュメント Dashの学習の流れ 難易度が不明+自分の興味がどれくらい続く か分からないため、本は買わずにWebのリ ソースだけで進める APIドキュメントに目を通さなくても何ができそう か概ね把握できる。自分では考えつかなかった 見せ方を知れる 便利機能やつまづきポイントをまとめた記事を 先にみておくと、開発効率が格段にアップする
19 • Github • Googleトレンドからデータを取得する非公式 API • Googleトレンドのすべての機能が実装されている • 制約
◦ 公式APIではないため、頻繁にアクセスできない ▪ スリープを少し長めに取る(10秒程度) ◦ 最大5つのキーワードのデータしか同時取得できない(公式と同じ) • 学習の流れ ◦ 1、2本まとめ記事を読む→Google Colabで使用感の確認→Githubのドキュメント pytrendsとは
20 どのように作り進めたか
21 チュートリアルを試しながら起動 • レイアウト • Callbackの使い方 • インタラクティブなグラフの挿入方法 • なども合わせて確認
from dash import Dash, html, dcc import plotly.express as px import pandas as pd app = Dash(__name__) df = pd.DataFrame(...) fig = px.bar(df, ...) app.layout = html.Div([ html.H1(‘Hello Dash’), ... dcc.Graph( id=’example-graph’ figure=fig ) ]) If __name__ == ‘__main__’: app.run_server(debug=True)
22 • https://dash-bootstrap-components.opensource.faculty.ai/ • Bootstrapスタイルのコンポーネントライブラリ • まだスタイルは本格的に整えないが、見た目のきれいな方が創作意欲が沸くので • 色んなテーマがあるので気分に合わせて dash_bootstrap_componentsを導入
import dash_bootstrap_components as dbc app = Dash(__name__, external_stylesheets=[dbc.themes.VAPOR]) … dbc.コンポーネント名([]) これだけで使える!
23 dbc.Container( dbc.Row([ dbc.Card([md=4]), dbc.Card([md=8]) ]), html.Br(), dbc.Row([ dbc.Card([]), dbc.Card([]),
dbc.Card([]), dbc.Card([]), ]), html.Br(), dbc.Row([ dbc.Card([]), dbc.Card([]), dbc.Card([]), dbc.Card([]), ]), ) dbc.Cardを使って配置決め
24 dbc. 設定ボタンやグラフなど見た目の要素を追加 dbc.Input dcc.DatePicker Range dbc.Checklist dbc.Button dbc.Switch dcc.Graph(空のグラフを配置)
25 ブラウザからの入力を受け取る dbc.Input( id="keyword", # コンポーネントのID type='text', # テキストフォーム value='virus',
# 初期値 ) ……… @app.callback( Input(‘keyword’, ‘value’), ) def get_keyword_trend(kw): # トレンド取得のコードを書く dbc.Input ①入力を受け取るコン ポーネントのIDを指定 ②コンポーネントのどの値を受け取 るかパラメータ名で指定 ③どういう引数名で受 け取るか指定
26 入力を受けて処理した結果をブラウザに表示する dcc.Graph(id='keyword-trend-graph') ……… @app.callback( Output(‘keyword-trend-graph’, ‘figure’), Input(‘keyword’, ‘value’), )
def get_keyword_trend(kw): # トレンド取得のコードを書く # グラフを作成するコードを書く fig = px.line(...) return fig dcc.Graph ①結果を渡したいコン ポーネントのIDを指定 ②コンポーネントのどのパラ メータに渡すか指定 ③渡したい結果を returnする
27 検索トレンド from pytrends.request import TrendReq pytrends = TrendReq( hl=’jp-JP’,
# host language tz=-540, # timezone ) keywords = [‘virus’] timeframe = ‘2022-01-01 2022-08-01’ geo = ‘JP’ pytrends.build_payload( keywords, timeframe=timeframe, geo=geo) trend_df = pytrends.interest_over_time() 関連キーワード Googleトレンドのデータを取得する処理を追加 # build_payload()まで検索トレンドと同じ # ただし指定できるキーワードは 1つまで df_dict = pytrends.related_queries() # df_dict[‘top’] -> 人気ワード # df_dict[‘rising’] -> 注目ワード
28 スタイルを 調整して完成
29 可視化したデータを読む
30 • 対象地域:日本、アメリカ、イギリス、南アフリカ • 検索キーワード:virus • 対象期間 ◦ コロナが最初に流行し始めた時期から現在まで: 2019-08-05
- 2022-08-05(3年) ◦ 最近の動向:2021-08-05 - 2022-08-05(1年) • 何をみるか ◦ 対象期間の違いによるトレンドの違い ◦ 地域の違いによるトレンドの違い 対象地域、検索キーワード
31 • http://www.iph.pref.osaka.jp/infection/disease/corona.html • 大阪府の情報になるが、第1波〜第7波の時期を確認 ◦ 第1波:2020-01-29〜2020-06-13 ◦ 第2波:2020-06-14〜2020-10-09 ◦
第3波:2020-10-10〜2021-02-28 ◦ 第4波:2021-03-01〜2021-06-20 ◦ 第5波:2021-06-21〜2021-12-16 ◦ 第6波:2021-12-17〜2022-06-24 ◦ 第7波:2021-06-25以降 ◦ →検索トレンドのグラフに最初の 1ヶ月に相当する時期をハイライトで可視化 これまでのコロナ感染拡大時期
32 • 第1波の期間の検索頻度は他の時期の比ではない • 短い期間で見ると他国で先に検索頻度が高くなっていることが多い • 検索トレンドをみておけば次に流行りそうなウイルスを早めに知れるかもしれない 読みとったこと
33 作ってみて
34 • Loading中であることを示すSpinnerを最前面に配置する ◦ dash_loading_spinnersを使用(見た目も#でかわいい) • 間隔の調整 ◦ 追加のCSSを作りたくないので ◦
カード内の調整:html.Div([], style={'marginBottom': '1em'}) ◦ Row間の調整:html.Br() 苦労した点
35 • Dashは簡単 ◦ プログラミング経験のある人なら Dash初心者でも1日〜数日でできそう ◦ Jupyter上でも使えるので通常のデータ分析の中に組み込める • 公式の日本語ドキュメントはないが、アプリ開発をしたことのない人がコンポーネントや
callback の概念をさらっと知るのに良さそう ぜひ使ってみてください! 感想
36 ご静聴ありがとうございました!