ロード・オブ・ザ・ホワイトハッカー

ホワイトハッカーはじめました

データの可視化

Pythonのデータ可視化

データの可視化のためのライブラリがたくさんある。

www.anaconda.com

 

Matplotlibが昔から有名で、そのラッパーライブラリがSeabornらしい。

使い方を眺めてみても、どうも使いづらい。

pandasのDataFrameのメソッドにplot()があり,こちらもMatplotlibをラッパーしているらしい。

 

#Seaborn
sns.jointplot(x='xdata', y='ydata', data=df)

 

#pandasのplot
df.plot.scatter(x='xdata', y='ydata')

直感的に後者の方が分かりやすいと思いつつ、パラメーターが増えたり、複雑なグラフはエクセルに逃げていたりしました。。。

 

Plotlyの登場

Plotyと呼ばれるデータ可視化ツールが最近の流行らしい。

plotly.com

PlotlyのラッパーがPlotly Expressと呼ばれている。

seabornとほぼ同等の機能を有していて、かつインタラクティブな操作ができるのが特徴らしい。

 

例えば、seabornで箱ひげ図を表示してみる。

f:id:chikuwamaruX:20211002165008p:plain

 

コードは以下の通り。

import seaborn as sns
import matplotlib.pyplot as plt
#アヤメデータの読み込み
iris = sns.load_dataset('iris')
%matplotlib inline

fig, ax = plt.subplots(figsize=(8,3))
sns.boxplot(x='sepal_length', y='species', data=iris, order=('setosa', 'versicolor', 'virginica'), ax=ax)
ax.set_title('品種毎のがく片の長さの箱ひげ図(cm)')
plt.show()

これでも、十分に簡潔なコードで記述できている。

 

Plotly Expressでは、こんな感じ。

f:id:chikuwamaruX:20211002165915p:plain

見た目もキレイなのですが、マウスを近づけると詳細データが表示されたり、表示範囲を変更できます。

 

f:id:chikuwamaruX:20211002170043p:plain

実際のコードはというと、seabornとそれほど変わらない。

#データのロード

import seaborn as sns
iris = sns.load_dataset('iris')

 

import plotly.express as px
fig = px.box(iris, y='species', x='sepal_length', color='species', orientation='h',
       category_orders={'species': ['setosa', 'versicolor', 'virginica']}, 
       title='品種毎のがく片の長さの箱ひげ図(cm)', width=600, height=400)
fig.show()

 

こんな本もあり、Dashというフレームワークを使えば、Webアプリも作れるようです。

 

もう少しPlotly Expressの使い方を調べて、ログなどの閲覧・分析に使えるようにしてみたいと思います。

つ・づ・く