• Skip to main content
  • Skip to primary sidebar

学習記録

HoloViews

BokenのTabular data(カラムナデータ)

2018年5月27日 by 河副 太智 Leave a Comment

アメリカの州別の病気発生件数を可視化(百日咳と麻疹)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
import pandas as pd
import holoviews as hv
import codecs
hv.extension('bokeh', 'matplotlib')
import holoviews as hv
 
 
diseases = pd.read_csv('holoviews-master/examples/assets/diseases.csv.gz')
 
vdims = [('measles', 'Measles Incidence'), ('pertussis', 'Pertussis Incidence')]
ds = hv.Dataset(diseases, ["State","Year"], vdims)
 
ds = ds.aggregate(function=np.mean)
 
%opts Curve [width=600 height=250] {+framewise}
 
(ds.to(hv.Curve, 'Year', 'measles') + ds.to(hv.Curve, 'Year', 'pertussis')).cols(1)

 

 

Filed Under: Bokeh, HoloViews

BokehとHoloViewsを学ぶ

2018年5月10日 by 河副 太智 Leave a Comment

HoloViews.orgにて学んだ内容をまとめていきます。

HoloViewsとはオープンソースpythonライブラリーで
データ分析、ビジュアライゼーションを簡単に素早く行う事が可能

HoloViewsサンプル

HoloViews.orgに掲載されているサンプル
コードは驚くほどシンプルな構造

更にGalleryページにはBoken,Matplotlib,Plotlyを使用した
サンプルグラフがある

各グラフのコードのサンプルもHoloViews.orgにて紹介している




 

 

Holoviewのインストール

condaがお勧め

1
conda install -c ioam holoviews bokeh

 

上記で紹介したサンプルのグラフも含まれている

1
2
holoviews --install-examples
cd holoviews-examples

 

 

NY地下鉄の駅名情報を可視化

pandas,numpyを使用する
hv.extension(“bokeh”)でBokehのエクステンションをロードし
Bokehを使った可視化ができるようになる

他のプロットライブラリーも組み合わせ可能(matplotlib等)

1
2
3
4
import pandas as pd
import numpy as np
import holoviews as hv
hv.extension('bokeh')

 

次にニューヨークの地下鉄の駅名やその他情報を
含むデータセットを読み込む
csvファイルはこちら

1
2
station_info = pd.read_csv('/station_info.csv')
station_info.head()

 

 

可視化の為のオブジェクト

スキャッタープロット

hv.Scatterオブジェクトを使用して
駅の数と利用者数(百万単位)の2つをスキャッタープロット表示

1
2
scatter = hv.Scatter(station_info, 'services', 'ridership')
scatter

 

※画像のリンク先でグラフをドラッグで動かせる

 

csvのデータ(station_info)をhv.Scatterに渡し、scatterオブジェクトを作成
これ以外のエレメントはReference Galleryにて紹介

ヒストグラム

hv.Histogramオブジェクトを使用して地下鉄の駅開設日を
ヒストグラムにする

1
2
layout = hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened'])
layout

 

 

 

+を使用して複数のグラフ表示

スキャッタープロットとヒストグラムなど複数のオブジェクトを
使用したグラフを横並びに表示する

1
2
layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened'])
layout

 

 

以下ここまでのコードまとめ

1
2
3
4
5
6
7
8
9
10
import pandas as pd
import numpy as np
import holoviews as hv
hv.extension('bokeh')
 
station_info = pd.read_csv('holoviews-master/examples/assets/station_info.csv')
scatter = hv.Scatter(station_info, 'services', 'ridership')
 
layout = scatter + hv.Histogram(np.histogram(station_info['opened'], bins=24), kdims=['opened'])
layout

 

神経スパイク列を可視化

脳のニューロン発火現象を記録したデータセットを用いて
発火時間(milliseconds)
神経細胞が発火する頻度をヘルツ(Hertz)
の2つのデータセットを可視化

csvファイル(spike_train.csv.gz)はこちら

 

pandasとholoviewsをインポートし、spike_trainにcsvを読み込ませる

1
2
3
import pandas as pd
import holoviews as hv
spike_train = pd.read_csv('/spike_train.csv.gz')

データフレームを表示

1
spike_train

 

hv.Curveでグラフ作成

可視化のオブジェクトにhv.Curveを使用
先ほど使用したhv.Scatter やhv.Histogramの仲間

hv.Curveの引数を左からcsv格納変数、インデックス名2つ、group=でグラフタイトル

1
curve = hv.Curve(spike_train, 'milliseconds', 'Hertz', group='Firing Rate')

bokehとmatplotlibをロード

1
2
hv.extension('bokeh', 'matplotlib')
curve

hv.Spikesでグラフ作成

1
2
spikes = hv.Spikes(spike_train.sample(300), kdims='milliseconds', vdims=[], group='Spike Train')
spikes

2つのグラフを並べる

1
curve + spikes

 

更にカスタマイズして見やすいグラフ作成
グラフ上にカーソルを合わせると各データをインタラクティブに表示

1
2
3
4
5
6
7
8
9
10
11
%%output size=150
 
%%opts Curve  [height=100 width=600 xaxis=None tools=['hover']]
 
%%opts Curve (color='red' line_width=1.5)
 
%%opts Spikes [height=100 width=600 yaxis=None] (color='grey' line_width=0.25)
 
curve  = hv.Curve( spike_train, 'milliseconds', 'Hertz')
spikes = hv.Spikes(spike_train, 'milliseconds', [])
(curve + spikes).cols(1)

%%output size=150で全体のサイズ
%%opts Curve でcurveグラフ個別の詳細設定

以下のグラフは画像ですのでインタラクティブ操作できません
実際に動かすにはこちらのグラフをご覧ください。

Filed Under: Bokeh, HoloViews, グラフ

Primary Sidebar

カテゴリー

  • AWS
  • Bootstrap
  • Dash
  • Django
  • flask
  • GIT(sourcetree)
  • Plotly/Dash
  • VPS
  • その他tool
  • ブログ
  • プログラミング
    • Bokeh
    • css
    • HoloViews
    • Jupyter
    • Numpy
    • Pandas
    • PosgreSQL
    • Python 基本
    • python3
      • webアプリ
    • python3解説
    • scikit-learn
    • scipy
    • vps
    • Wordpress
    • グラフ
    • コマンド
    • スクレイピング
    • チートシート
    • データクレンジング
    • ブロックチェーン
    • 作成実績
    • 時系列分析
    • 機械学習
      • 分析手法
      • 教師有り
    • 異常値検知
    • 自然言語処理
  • 一太郎
  • 数学
    • sympy
      • 対数関数(log)
      • 累乗根(n乗根)
    • 暗号学

Copyright © 2025 · Genesis Sample on Genesis Framework · WordPress · Log in