LoginSignup
10
13

More than 5 years have passed since last update.

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

Posted at

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

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

近年ブームの機械学習と領域はかぶりつつも若干異なる「データ分析業務」で使いやすいフレームワークを探します。
主にデータの理解や可視化・簡易的な集計を行うダッシュボード作業に使えそうなもの、とイメージしていただければ。

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

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

R言語界隈ではダッシュボード作りやパラメータを色々変えながらの可視化するといった用途に使えるShinyというフレームワークがあります。
これがなかなかに便利なので、近年機械学習ライブラリの充実し、ユーザも多いPythonでもこのようなことがしたい!というのが今回調査している理由です。
下の図にあるようなもので、スライドバーやパラメータをグリグリ触るとそれに反応してリアルタイムに可視化や再集計がされる、というようなものが簡単に作れるフレームワークです。

参考

image.png

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のチュートリアルをやって見ようかなと思います。

10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13