私がいつも何かの初学者にオススメしているのがMOOCなどのオンライン学習です。
こちらの投稿にもあるように私は普段からUdemyやCourseraといったオンライン学習を結構取り入れています。
何冊かの本を読んでしっかりと理解している分野であればそれほど必要はないかもしれませんが(それでも得るものがある場合はもちろんあると思います)、これからその分野の勉強を始めようという方にはオンライン学習が非常に効率的です。
ということで今回は、インタラクティブなデータの可視化をしたいと思い勉強に使ったUdemyの講座『Interactive Python Dashboards with Plotly and Dash』を紹介したいと思います。
『Interactive Python Dashboards with Plotly and Dash』講座の詳細はこちら
インタラクティブな可視化とは
インタラクティブな可視化(グラフ)というのは、例えばこちらの記事で書いたようなものです。
グラフを描画したあとに、必要な点を選択するとその点の詳細が表示されたり、もしくはその点に関する別のグラフが表示されたり、必要な範囲の拡大ができたり、といったことができるグラフです。
データ分析をする人にとってはデータの可視化は非常に重要ですが、なぜ、インタラクティブな可視化が必要なのかについてまず説明したいと思います(講座の内容だけ知りたい!という方は「内容」から読み始めていただいて大丈夫です)。
インタラクティブな可視化の必要性
データ分析をする上で、統計量を計算してそれを見たり、モデルの精度を確認したりするというのはもちろん重要なことです。
しかしながら、それ以上に重要なのは「まずはデータしっかりとを見る」ということです。
データ分析をするのであれば、統計量や精度ももちろん大切ですが、例えば、その精度であればどういったところが間違っていて、それはデータの分布がどうだからなのか?、どんな外れ値などがあるのか?なども一緒に調べる必要があります。
そういったものを私は“分析マインド”と読んでいますが、その“分析マインド”を発揮する方法が「実際の生データを見てみる」ことと「データをグラフにして見てみる」という方法です。
この部分について、じっくり時間を掛けて観察するのと、しないのでは結果が全然違ってきます。
単に統計量はこうです、精度はこうです、という情報にプラスして、「データの分布はこのようになっており、こういったことが原因で精度が悪化する傾向にあるようです」という説明を追加したり、「一見精度はあまり良くないように見えますが、それはこういった点が原因であり、それを除いてみるとこのような結果が得られます」という違った結論を導くことが可能です。
それにより、聞いている方も納得感が出て、いい分析だ、となることも多いです。
そこで、インタラクティブな可視化は後者の「データをグラフにして見てみる」という部分に非常に強力なツールです。
PythonであればMatplotlibやSeabornでもきれいなグラフを描画することが可能ですが、インタラクティブな描画であれば、表示された図をみて気になったところがあれば、選んだ点の詳細をテキストとして表示したり、特定の範囲を拡大したりすることが可能になりますので、データ分析の効率が高くなります。
特に、図をみて、プログラムをいじって、また気になったらプログラムをいじってとしていると、結構時間がかかるため、まぁそこはやめておこうとなることもあります。
そういったときにPloltlyを使ったインタラクティブなグラフであれば、その部分を確認することが簡単になるので、分析のクオリティも向上します。
ちなみに、私はPython PlotlyやDashは多少使ったことがありましたが、その場その場で調べて、とにかく使うという感じだったので、体系的に学習したいと思い受講しました。そういった使い方も可能だと思います。
前置きが長くなりましたが、以下でこの講座の内容についてご紹介していきたいと思います。
この講座を受講すれば、もうPython PlotlyやDashの基礎については十分なので、後は実際の分析で描画したいグラフやダッシュボードに応じてわからないことは適宜調べていくだけで大丈夫です。
内容
詳細は公式ホームページをご覧ください。
構成
まず、注意点としてはこの講座は英語です。
ただ、英語が苦手な人は理解ができないか?と言われるとそうでもないと思います。
だいたいプログラムを見ていればわかりますし、グラフを表示するのでそれを見れば何をやっているかはすぐにわかると思います。
この講座のは構成は以下です。
- Course Introduction
- Introduction to Data Basics
NumPyやPandasといったPythonのデータ操作用パッケージの学習。 - Plotly Basics
Python Plotlyを使った描画方法の学習。Scatter PlotやLine Chart、Box Plotなど。 - Dash Basics
HTML形式のダッシュボードを作成ための、Dashの基本を学習。 - DashBoard Exercise
ダッシュボード作成の練習。 - DashBoard Components
HTMLコンポーネントやCoreコンポーネントというDashで使うパーツを学習。 - Interactive Conponents
ユーザーのインプットに応じて、グラフや表示を変更する方法を学習。 - Callbacks with State
インプットの状態に応じて、グラフや表示を変更する方法を学習。 - Interacting with Visualizations
ユーザーががクリックやデータを選択するなどのアクションを起こした場合に、グラフや表示を変更する方法を学習。 - Code Along Milestone Project
実際にプロジェクトとして株価の推移を表示するダッシュボードを作成。 - Live Updating
ライブでレイアウトなどを更新していく方法を学習。 - Deployment
Herokuにデプロイする方法を学習。 - Bonus Section
内容
はじめはNumPyやPandasといったPlotlyを使う上で必要な知識について教えてもらえます。
ここは知っている人にとっては必要ではありませんので、飛ばしていただいても大丈夫です。
そのあと、Python Plotlyを使った描画方法の解説になります。
Python Plotlyはダッシュボードを作るものではなく、Jupyter Notebookなどを使ってデータ分析を行う際に非常に強力なツールです。
個人的には散布図を使って分析する際に、非常に便利だと感じており、散布図を作成する際はMatplotlibやSeabornよりもPlotlyを使うことがほとんどです。
例えば、外れ値や大きくずれている点について確認がしやすかったり、外れている点を除いて点が集まっている部分だけを拡大し、そういった範囲でも相関があるか?などを見ていくのがやりやすくなります。
この講義では、実際に散布図や棒グラフ、ボックスプロット、バブルチャートなどを手を動かしながら作成していきます。
説明方法も毎回最後にはプログラムのおさらいをしてくれるのですごく理解しやすくなっています。
続いて、Dashによるダッシュボード作成です。
Plotlyの講義を理解していれば、Dashによるグラフ作成は簡単にできます。
またDashにはグラフ以外にも色々なコンポーネントがあり、例えば以下のようなRangeSliderというコンポーネントを使うと、一定の範囲を指定することができ、その指定された範囲でグラフを描画する、などが簡単に実現できます。
そして、ダッシュボードの重要な機能ですが、ユーザーが選択したリストの値や上記のような指定された範囲に従って、グラフの表示を行う、インタラクティブなダッシュボードを作成することを学びます。
「ある点を選ぶと、こういった写真を表示させる」などの制御を行い、学んでいきます。
シンプルな例ですが、以下のように2つのインプットをもとに、表示させる画像を変えるというようなものです。
そして、プロジェクトとして実際に自分で手を動かしていきます。
座学で学んだら、あとは手を動かしてながら、繰り返し自分で作ることが重要です。
講座では以下のような株価のダッシュボードを作成していきます。
こんなものが簡単に作れてしまいます。
他にも、“Flightradar24”というサイトを表示し、そのサイトからリアルタイムでデータを取得します。
そして、現在どれだけの飛行機が飛んでいるかを下に表示します。
最終的にはそれをHerokuにデプロイするところまで行うことが可能ですので、ダッシュボードの作成から実際にアプリケーションとして動かすところまで一通り理解することが可能です。
まとめ
今回は、インタラクティブな可視化を簡単に実現することができるPlotlyとダッシュボードを作成するDashに関するUdemyの講座『Interactive Python Dashboards with Plotly and Dash』についてご紹介しました。
PlotlyやDashについては、体系的にまとまった本などがあまりないと思いますので、ネットで情報収集するのももちろん良いとは思いますが、この講座を受けて理解するのは非常に効率的だと思います。
もちろんタダではないのですが、時間や独学による苦労を考えると個人的にはこちらの方がオススメです。
すぐに知りたいという方は難しいかもしれませんが、割引セールのときを狙って購入することで数千円で購入することが可能です。
月1ぐらいでセールがありますので、是非ともそのタイミングを狙っていただきたいと思います。
また、受講してみて「これは違った!」「思ってたのと違う!」となった場合は返金も可能になっていますので(条件があります)、興味がある講座が見つかれば受講してみるのもいいと思います。
『Interactive Python Dashboards with Plotly and Dash』講座の詳細はこちら
また、本サイトでもplotlyの解説記事を掲載していますので、ご参考にしてみてください。