python data-visualization package status

24
Python skiyuki da@twitter Computing, Discuss Data Model ML PyPi Cytoscape : : HW PC6 CUDA or Edison? PyDataTokyo#6-LT2015/10/23 · · · ·

Upload: skiyuki

Post on 25-Jan-2017

1.307 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Python Data-Visualization Package Status

Python可視化パッケージの現状 奥田 幸男(フリー) 

skiyuki da@twitter

「楽しくComputing, Discuss」

nData Model

l原因の推定l MLが有効か?

nデータ可視化l PyPi分析l Cytoscape

: :

nHWいじりl 自作PC6台

l 次:CUDAor Edison?

PyDataTokyo#6-LT2015/10/23 ·

··

·

Page 2: Python Data-Visualization Package Status

略歴

2

n40年間プログラミング@AV機器メーカーl70年代:社内SE

â IBM-360  Fortran, PL/I, RPG

l80年代:LSI設計CAD開発â DEC-VAX, Daisy Bliss, C X11, GKS

l95年~:半導体データ分析â Sun, PC C++, Octave, Tcl

t分析法:”Feature Engineering” +物理モデル 

t可視化:CERN-Root, Gnuplot, PSTricks(TEX), LATEX

l2013~:オープン・データâ自宅Xeon Python, JavaScript

Pandas, Scikit-learn, Matplotlib, D3.js+ Flask

·

··

·

はじめに

PyDataTokyo#6-LT

Page 3: Python Data-Visualization Package Status

データ分析vs可視化

3

n Python可視化パッケージの現状と将来Scikit-learn, StatModels ..

Pandas

SciPy

Numpy

400パッケージGraphviz

Ggplot

WebSeaborn

サービスMatplotlib

Bokhe

(PyQt, PyGTK ..)

???

·

··

·

はじめに

PyDataTokyo#6-LT

Page 4: Python Data-Visualization Package Status

何をどう評価する

4

n “Index of Packages”@PyPi-HP á スクレーピングl検索: ”plot” or ”visualization”

実用性

名 重要度 解説—— —

UP日付

月間ダウンロード数

術語ネット分析

+by Cytoscape

対象パッケージ 汎用性

評価ポイント 技術動向·

··

·

PyPi分析

PyDataTokyo#6-LT

Page 5: Python Data-Visualization Package Status

ダウンロード分布

5

n重要度 ≥ 2 áダウンロード数の偏り (Log)

���

��������" ����

���

�������

0 10 100 103 104 105 106

����$#�!������

��

��

��

��

��

" ����

�����������

��$#�!��

+ by Matplotlib “バー・チャート”+ ”注釈”+ ”ヒストグラム”·

··

·

PyPi分析

PyDataTokyo#6-LT

Page 6: Python Data-Visualization Package Status

実用パッケージ

6

nMatplotlibだんとつのダウンロード á何故?l 汎用 , グラフ : 評価対象 特殊用途 : 評価対象外

,- ��������� ��" ��"���1;: ���������� �%�!� �#�&1;: ���������� �!� �#�&1;: ���� �%��",-�+( ���������� �����!����'* ���������� ��""�!�2.93 ��������� ���"�%,-���� ���������� �%���,- ��������� �� ��"0;.8<56 ���������� !�$�!�� �

�����

������

������

������

������

4/>=.7)����������

+ by Matplotlib “テーブル”+ “バー・チャート”

·

··

·

PyPi分析

PyDataTokyo#6-LT

Page 7: Python Data-Visualization Package Status

ネット分析概要

7

術語ネット

plotdevice-tensorlib

qt-graph-helpers

pyNmonAnalyzer

django-tota11y

collective.jqueryflot

tw2.jqplugins.jqplot

collective.googlevisualization

gviz_data_table

django-teagarden

django-gcharts

django-collectd-rest

django-google-charts

matplotlib_iterm2

matplotlib-venn

daynight2geojson

pandas_confusion

larVolumeToObj

call_seq_browser

pandas-highcharts

sphinxcontrib.nvd3

matplotlib-subsets

matplotlib

●エッジ幅、ノード高∝

ダウンロード数

66術語

12技術分類

技術分類ネット

C:Matplotlib

plotexplorer_gui

pandas_confusion

matplotlib_iterm2

call_seq_browser

C:グラフィックス

plotdevice-tensorlib

matplotlib-venn

GeoBasesPypy

collective.jqueryflot

django-teagarden

gviz_data_table

collective.googlevisualization

django-collectd-rest

matplotlib

daynight2geojson

sphinxcontrib.nvd3

django-google-charts

tw2.jqplugins.jqplot

django-gcharts

pandas-highcharts

ccsgp_get_started

eea.app.visualization

pyprof2calltree

graphistrytest

qt-graph-helpers

matplotlib-subsetsipython-cypher

pyNmonAnalyzer

Orange-Network

パッケージ

術語

技術分類

リンク+by Cytoscape

リンク・ネット

J:1

J:8

J:6

C:Matplotlib

J:0

J:5

J:2

J:4

C:グラフィックス

J:7

J:3

●エッジ幅、ノード高∝

リンク数パッケージ

リンク·

··

·

PyPi分析

PyDataTokyo#6-LT

Page 8: Python Data-Visualization Package Status

調査状況

8

Python

他の技法その他

Matplotlib デモ切断 デモ切断 論文

NetworkX ー ↑ 3種類

Graphviz

Cytoscape 有 有 ー

Pandas ー ー マトリックス

Seaborn ー ー 統計プロット

MPLD3 デモ切断 ー ー

D3.js デモ切断 デモ切断 デモ: http://54.64.132.31/   □■⇒ デモ切断 1点  

Bokeh 予定 予定 予定

·

··

·

同一データで表示の比較

PyDataTokyo#6-LT

Page 9: Python Data-Visualization Package Status

Matplotlib

n Python可視化基本パッケージ:lスタート: IPythonパッチ, JPL, V0.1@2003

l OS: Linux, Windows, OSXl I/F:PS, EPS, PDF, SVG, PNG, JPEG, BMP, TIFF, py-

cairo, PyQt4, PyQt5,PySide, wxPython, PyGTK, Tor-nado

n多機能:古典的プロット+グラッフィックスAPI

nドキュメント貧弱l Rel 1.4.3=2656頁!?初心者向け+詳細API

l中、上級者向けガイドがない [1]

nデータ構造: f (x), f (x, y), f (x, y, z)

■V1.4.3(2015/02/17) ■モジュール構成■インタラクティブ ■matplotlibrc  

·

··

·PyDataTokyo#6-LT

Page 10: Python Data-Visualization Package Status

インタラクティブQt4

10

Pyplotモード PyQt4モード

create_draw (ax)fig.canvas.mpl_connect(

’pick_event’, on_pic)plt.show( )

from PyQt4 import QtGui, QtCoreapp = QtGui.QApplication(sys.argv)aw = Top( ); aw.show( ); app.exec( )

class Top(QtGui.QMainWindow):create_draw (ax)fig.canvas.mpl_connect(

’pick_event’, on_pic)

def create_draw (ax):: : :

def on_pic (event):: : :

デモ切断 デモ切断

·

··

·

Matplotlib

PyDataTokyo#6-LT

Page 11: Python Data-Visualization Package Status

グラフ・データ

11

n NetworkXパッケージlグラフの作成/演算/入出力/レイアウト/表示

âレイアウト: 独自/graphviz â表示: Matplotlib

l3種類の表示方法 áインタラクティブ不可能

tお任せ方式 デモ切断

1 None = draw_spring( ), ...draw_graphviz( )

tレイアウトし、表示 デモ切断

node_pos = spring_ layout(G,制御パラメーター)

2 None = draw_networkx(G, pos=node_pos, ....)

3 mpl.Path = draw_networkx_nodes(G, pos=node_pos, ....)

●自分で描く(node_pos) áインタラクティブ可能 デモ切断

·

··

·

Matplotlib

PyDataTokyo#6-LT

Page 12: Python Data-Visualization Package Status

スタイル(1/2)

12

n同一プログラムで異なる描画l matplotlibrcを複数用意

講演用   論文用

��� ������ ��� ��� ��� ������������������������

��� � ����

��������������

��� ��� ��� ��� ��� ��� ������

���

���

���

���

���

���

��� � ����

��������������

1.背景: 色 2.軸:色 3.軸:文字サイズ 4.軸:目盛方向5.用例:マーク数 6.用例:文字サイズ 7.用例:枠の有無8.図面:背景色 9.図面:マークサイズ 10.図面:文字サイズ

·

··

·

Matplotlib

PyDataTokyo#6-LT

Page 13: Python Data-Visualization Package Status

Pandasn Matplotlib作図コマンドの延長

mpl. Axes. method(~X,~Y )⇒

DataFrame. plot ( kind=’method ’ )

n独自作図コマンドnスタイル変更強制無し

nデータ確認/デバッグ用

■V0.16.2(2015/06/13)

·

··

·PyDataTokyo#6-LT

Page 14: Python Data-Visualization Package Status

作図例

14

1 df.plot(subplot=True) 2 df.plot(secondary_y=[..]

���������������������������

���������

������������������������

��

��

� �� ���

���

���

���������������

��

�� �����������

� � ��� �� ���

����

���

����

���

���

����� ������������� ����

! $#�"�����������������������

���

��

���

��

3 scatter_matrix(df) 4 Seaborn pairplot( )

���������������������

�������

����������������

���

������������������ ���

�������

������������

��

����

����

����

����

� ���

��

���

���

���

��

·

··

·

MatplotlibーPandas

PyDataTokyo#6-LT

Page 15: Python Data-Visualization Package Status

SeabornnPandas DataFrameの可視化

l統計処理と可視化の統合nスタイルの拡張

lテーマ: 背景色、グリッド、カラー・マップ

n Matplotlibとの混在は注意n規定パラメータ以外での修正不可能

■V0.60(2015/06/29)■Panda組み込み可視化と比較

·

··

·PyDataTokyo#6-LT

Page 16: Python Data-Visualization Package Status

Pandasの可視化

16

n1コマンドで、複数統計処理と可視化

���� ���� ���� ���� ���� ����

�� �

���

���

���

���

���

���

���

���

���

����������

� ��������������������� ���

df = pd.DataFrame({u’日付’: ds...})

jointplot(data=df, x=u’日付’,y=u’ダウンロード  log’ )

1X散布図 +2X分布図

n私見:表示お任せlデータ確認/デバッグ用 ●VUpに期待

·

··

·

MatplotlibーSeaborn

PyDataTokyo#6-LT

Page 17: Python Data-Visualization Package Status

Bokehnインタラクティブ可視化パッケージ

l Continuum社開発OSS

lウエブ・ブラウザーCanvas使用â D3.js SVG使用

n Bokeh(Python) + Bokehjs(JavaScript)

l Json経由での専用プロトコール

nどこまで、お任せに出来るか?n足りない、必要機能有り?

■V0.9.2(2015/07/23)

·

··

·PyDataTokyo#6-LT

Page 18: Python Data-Visualization Package Status

D3.js

n可視化プログラミング・ツール・キットl D3: Data Driven Documents

lウエブ・ブラウザーでの可視化n JavaScriptライブラリ[2][3]

l標準の利用:HTML, DOM, SVG

l沢山のプログラミング便利機能

n面倒:高自由度、要詳細コーデングn公開/特殊形状/ダイナミック可視化

■V3.5.6(2015/08)

·

··

·PyDataTokyo#6-LT

Page 19: Python Data-Visualization Package Status

要詳細コーデング

19

■ Matplotlib 1行plt.plot(x, y, m, c=d.c)

■自動生成:

X/Y軸,目盛パン/ズーム/出力

デモ切断

■ D3.js 11行var scale x = d3.scale.linear().domain([0, 1]).range([10, 240]);

var scale y = d3.scale.linear().domain([1, 0]).range([10, 140]);

svg.selectAll(”.dot”)

.data([DOT]).enter()

.append(”circle”)

.style(”stroke-width”, 2)

.attr(”r”, 13)

.attr(’cx’, function (d) return scale x(d.x);)

.attr(’cy’, function (d) return scale y(d.y);)

.attr(’stroke’, function (d) return d.color;)

.attr(’fill’, function (d) return d.color;);

■要追加コード:X/Y軸,目盛パン/ズーム

デモ切断

·

··

·

ブラウザーD3.js

PyDataTokyo#6-LT

Page 20: Python Data-Visualization Package Status

デモ

20

デモ切断

n Force Layout[4]lダイナミック表示

t JSでシミュレーションし表示

デモ:   □■⇒

n地図アプリ[5]l Google-map +東京メトロ路線+駅+電車l SVGパフォーマンス:

t路線: 線分

t駅: サークル

t電車: 線分X台= 線分

t電車移動:SVG-SMIL(アニメーション)

·

··

·

ブラウザーD3.js

PyDataTokyo#6-LT

Page 21: Python Data-Visualization Package Status

Cytoscape

n遺伝子ネット・ワークの分析/表示[6]l開発:OSS(Javaベース),加州大サンディエゴ校+α ,米国政府補助

lインタラクティブ機能:カスタマイズ、編集、作成、....

l Import (ノード、エッジ)CSV:手操作, 2種類のファイルREST:プログラムから( Python, R)[7][8]

l Export: CSV, PNG, HTML

■V3.2.1(Java1.8) デモ切断 注:Cytoscape立ち上済

PyDataTokyo#6-LT ·

··

·

Page 22: Python Data-Visualization Package Status

5可視化

22

作業工程元データ確認 分析 公開可視化

旧来 1可視化 2 Python+可視化 3 清書 4 作図

出力 n担当者使用+使いやすさ

論文 講演n第三者使用

+美しさ

新方法 5 インタラクティブ可視化●ブラウザー ●ウエブ ●サービス

Firefox Matplotlib

デバッグPSTricks

意思Matplotlib

Cytoscapeデバッグ意思

·

··

·

visualise = to form mental images or pictures

PyDataTokyo#6-LT

Page 23: Python Data-Visualization Package Status

まとめ

23

n Pythonパッケージ・スタック

データ確認 統計 Local Browser

Pandas Seaborn MPLD3

Matplotlib

Web Browser

Bokeh

n今後の調査:Web,BrowserとJavaScript, Pythonの関係l高度インタラクティブ: Browser + JavaScript

lサービス: クラウド, Web

lBrowser高速化: JavaScript just-in-time (JIT) compiler

t Python on JIT, NumpyのFortranがネックか?lグラフィックスAPI: D3.js, Bokeh.js, ...?

·

··

·PyDataTokyo#6-LT

Page 24: Python Data-Visualization Package Status

参考文献

[1] J. Hunter and M. Droettboom, “The architecture of open source

applications: Matplotlib,”開発責任者の解説.   □■⇒

[2] S. Murray, “Interactive data visualization for the web: free

online,” Oreilly, 2013, 解説を読みながら、動かすことが出来る(フリー).   □■⇒

[3] S. Murray and長尾高弘(訳), “インタラクティブ・データビジュアライゼーション―d3.jsによるデータの可視化,”オライリー・ジャパン, 2014,日本語翻訳本.

[4] M. Bostock, “Force-directed graph with

drag/zoom/pan/center/resize/labels/shapes/filter/highlight.”

  □■⇒

[5] 奥田 幸男, “投稿アプリケーション tokyo metro watcher,” 東京メトロオープンデータ活用コンテスト応募アプリ, 2014.   □■⇒

[6] “Cytescapehp,” University of California, San Diego.   □■⇒

[7] K. Ono, “Py2cytoscape: Gihub,” University of California, San

Diego.   □■⇒

[8] ——, “Basic workflow 2: Networkx and cytoscape,” University

of California, San Diego.   □■⇒

·

··

·PyDataTokyo#6-LT