Posted at

Python向けビジュアライズフレームワークを探す(RのShinyっぽいやつ)

インタラクティブなデータ分析環境が作れるPythonフレームワークをまとめます。


データ分析に適したフレームワークについて

近年ブームの機械学習と領域はかぶりつつも若干異なる「データ分析業務」で使いやすいフレームワークを探します。

主にデータの理解や可視化・簡易的な集計を行うダッシュボード作業に使えそうなもの、とイメージしていただければ。

R言語界隈でいうところのShinyみたいな感じです。


ちなみにShiny(R言語フレームワーク)はこんなの

R言語界隈ではダッシュボード作りやパラメータを色々変えながらの可視化するといった用途に使えるShinyというフレームワークがあります。

これがなかなかに便利なので、近年機械学習ライブラリの充実し、ユーザも多いPythonでもこのようなことがしたい!というのが今回調査している理由です。

下の図にあるようなもので、スライドバーやパラメータをグリグリ触るとそれに反応してリアルタイムに可視化や再集計がされる、というようなものが簡単に作れるフレームワークです。

参考


Pythonフレームワークをリストアップ

Shinyに類似するフレームワークとして以下を見つけました。

特に上2つのBokehとDashの2強といったイメージでした。

また、下記参考サイトで綺麗にまとまっているので一部抜粋させて頂き、比較して見ます。

Bokeh
Dash

メンテナンス者
Anaconda
Plotly

ライセンス
BSD 3-Clause
MIT

内部で利用
D3, Tornado
React, Plotly, Flask

JupyterNotebookサポート
あり
なし

参考


Dashを動かしてみる

公式ドキュメントに沿って動かします


インストール

pipで簡単インストール

pip install dash

pip install dash-daq


動かす

チュートリアルのサンプルコードを引用します。

以下のコードをapp.pyという名前で保存し、実行するだけです。


app.py

# -*- coding: utf-8 -*-

import dash
import dash_core_components as dcc
import dash_html_components as html

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

app.layout = html.Div(children=[
html.H1(children='Hello Dash'),

html.Div(children='''
Dash: A web application framework for Python.
'''
),

dcc.Graph(
id='example-graph',
figure={
'data': [
{'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
{'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
],
'layout': {
'title': 'Dash Data Visualization'
}
}
)
])

if __name__ == '__main__':
app.run_server(debug=True)


こちらを実行すると、閲覧できるURLが出てくるのでアクセスするとOKです。

デフォルトではhttp://127.0.0.1:8050です。


bokehを動かしてみる


インストール

こちらもpipで簡単インストール。楽でいいですね。

pip install bokeh


動かす

もっともシンプルなサンプルとして、グラフを描画してhtmlファイルとして出力して見ます。

こちらもInstallationの手順から引用。

from bokeh.plotting import figure, output_file, show

output_file("test.html")
p = figure()
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width=2)
show(p)

実行するとグラフが描画されたtest.htmlが出力されます。

ひとまず両フレームワークのインストールと動作確認まで実施しました。

Shinyに似ているかという点ですとDashの方が良さそうです。

次回はShinyと比較しつつDashのチュートリアルをやって見ようかなと思います。