Python

【Python】hvPlotの使い方・やり方を解説

Python

どうも、月見(@Suzuka14144156)です。

この記事では、hvPlotの使い方・やり方を解説します。

このようなお悩みをお持ちの方におすすめの記事です。

  • PandasのDataFrameからスムーズに可視化したい
  • DataFrame.plot()以外の方法が知りたい
  • インタラクティブなグラフが描きたい

本記事のゴール

  • pandasのDataFrameから数行のコードで以下を表示する

hvPlotとは?

  • pandasなどのデータからHoloViewというラッパーを介してグラフを可視化するライブラリ

参考:hvPlot

hvPlotの便利な点

  • 数行のコードでpandasのDataFrameを可視化できる
  • legends(凡例)も自動でつけてくれる
  • 従来の方法だとplot()を使用する方が多いと思うが、グラフがインタラクティブでないので、分析しながら使うのは、使いにくい
  • そこで、hvPlotはbokehを介して出力できるので、インタラクティブなグラフが出力できる

hvPlotのインストール

Anacondaを使用する場合

conda install -c pyviz hvplot

PyPLの場合

pip install hvplot
  • 未確認ですが、matplotlib、bokehやplotlyのインストールが必要かもです
  • Holoviewは、matplot、bokehやplotlyなど好きな可視化ライブラリから大きなコード変更せずに出力可能なラッパーなので、自身の使いたい可視化ライブラリに応じてインストールが必要かもです

holoviewsは以下のコマンドでインストールできます。

pip install holoviews

hvPlotの例

今回は、米国の経済指標であるCPIと政策金利とビットコインの3つの価格を取得し、可視化する例で示します。

データを取得するのに、pandas_datareaderを使います。

インストール方法は以下です。

pip install pandas_datareader

では、本題のコードへ。

import pandas as pd  
from pandas_datareader import data as pdr 
import datetime

#チャートの取得
tickers = ['CBBTCUSD','CPIAUCNS','FEDFUNDS']

#取得開始日を入力
start = "2021-01-02"

#取得終了日を入力
end = datetime.date.today()

#経済指標を取得
data = pdr.DataReader(tickers, 'fred', start, end)

#月足に変換
data_m = data.resample("M").mean()

#規格化(グラフを見やすくするため)
data_m_norm = (data_m - data_m.min()) / (data_m.max() - data_m.min())

これでデータ取得できます。

この三つのデータをhvPlotを使って可視化します。

import hvplot.pandas
g = data_m_norm.hvplot.line()
g

出力結果は、以下です。

hvPlotの出力方法の変更

  • hvPlotを使うことで、matplotlib、bokeh、plotlyから容易に出力方法を選択できる

bokeh

import hvplot.pandas
g = data_m_norm.hvplot.line()
g

出力結果は、上記で示した通り。

matplotlib

import hvplot.pandas
hv.extension('matplotlib')
g = data_m_norm.hvplot.line()
g

x軸の文字がつぶれて醜いです。

少々調整が必要そうです。

今回は、面倒なので対応しませんが、このことから、bokehを使う方が良さそう。

plotly

import hvplot.pandas
hv.extension('plotly')
g = data_m_norm.hvplot.line()
g

データ近傍にマウスのポインタを近づけると、データが表示されるのがbokehと違うところ。

私は、よくplotlyを使います。

hvPlotの出力の保存

保存は、以下のコードでHTML形式で保存できます。

  • HTML形式にすることで、他人に共有するときにグリグリと動かせるインタラクティブなデータを渡せます
renderer = hv.renderer('bokeh')
renderer.save(g, 'graph')

本記事の関連の参考書や講座

基本的なPythonのコード知識を学ぶには、以下の書物がオススメです。

Udemyのオンライン講座は、以下がオススメです。

Udemyは買い切りなので、一度購入してしまえば、何度でも閲覧できるのでオススメです。

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です!

hvPlotに関する一般的な使い方の詳細は、以下の記事でも解説しています。

参考:【Python】hvPlotの使い方・やり方を解説

まとめ

この記事では、hvPlotの使い方・やり方を解説について解説しました。

hvPlotの便利な点をまとめると以下です。

  • 数行のコードでpandasのDataFrameを可視化できる
  • legends(凡例)も自動でつけてくれる
  • 従来の方法だとplot()を使用する方が多いと思うが、グラフがインタラクティブでないので、分析しながら使うのは、使いにくい
  • そこで、hvPlotはbokehを介して出力できるので、インタラクティブなグラフが出力できる

コメント

タイトルとURLをコピーしました