PlotlyのPython用ライブラリでデータをテーブルで表示してみた
データアナリティクス事業本部の鈴木です。
今回はPlotlyのPython用ライブラリでデータをテーブルで表示する方法を試してみたのでご紹介します。
データをテーブルで表示する際にはPandasを使っている方も多いのではと思いますが、Plotlyでもテーブルで表示することができます。
本記事では、テーブルの表示方法と、表示する際の色や枠の設定方法について記載しました。
なお、内容は以下の公式ドキュメントを参考にしています。
Plotly Python Open Source Graphing Library Basic Charts - Table
検証した環境
- コンテナ:jupyter/datascience-notebook
- plotly:5.6.0
- scikit-learn:1.0
データの準備
今回は、scikit-learnのdatasetsにある、wine datasetを利用しました。
多クラス分類を目的としたデータセットで、178サンプルが格納されています。targetにはclass_0・class_1・class_2の3種類があります。
以下のようにして、PandasのDataFrameに変換しておきます。
from sklearn.datasets import load_wine data = load_wine() X = pd.DataFrame(data["data"], columns=data["feature_names"]) # 後でテーブルで見る際に横に長くなって紹介しにくいので、今回はカラムを減らしておきます。 features = ['alcohol', 'alcalinity_of_ash', 'total_phenols', 'nonflavanoid_phenols', 'od280/od315_of_diluted_wines', 'proline'] X = X.loc[:, features] X.head()
使ってみる
1.基本の作り方を確認する
plotly.graph_objects.Figureにplotly.graph_objects.Tableを渡してテーブルを表示するという流れになります。
Tableインスタンスはheader
とcells
に値を渡して作成します。header
はヘッダーに表示する値のリスト、cells
はセルに表示する列の値のリストのリストです。
# https://plotly.com/python/table/ # を2022/02/14に引用しました。 import plotly.graph_objects as go fig = go.Figure( data=[ go.Table( # ヘッダーをリストで渡す。 header=dict(values=['A Scores', 'B Scores']), # 列の値をリストのリストで渡す。 cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]]) ) ] ) fig.show()
実行してみると、以下のようなテーブルが表示されます。
ドラック&ドロップで列を入れ替えることができます。列同士の値を比較したいときに便利ですね。
2. Pandas Dataframeから作成する
多くのケースで、テーブルを表示したいときはPandasのDataframeを使うと思うので、Dataframeからの作成方法も確認します。
PandasのDataframeであっても、header
とcells
に値を渡してTableインスタンスを作成することとなります。
fig = go.Figure( data=[ go.Table( # ヘッダーとしてDataframeのcolumnsを渡す。 header=dict(values=X.columns), # 全て表示するときは、valuesで取得して転置した方がシンプルかも。 cells=dict(values=X.values.T)) ] ) fig.show()
実行してみると、以下のようなテーブルができました。
体裁は調整することができます。例えば、今回はヘッダーの一部が見切れているので、改行するようにします。
header
に渡す値のうち、該当の値に改行要素を入れます。
features_fixed = ['alcohol', 'alcalinity_of_ash', 'total_phenols', 'nonflavanoid<br>phenols', 'od280/od315_of<br>diluted_wines', 'proline']
再度表示すると、今度は事象が解消されたことが分かります。
header
とcells
はセルの枠線・塗り・文字の配置など設定を行うことができます。
# https://plotly.com/python/table/ # のChanging Row and Column Sizeを2022/02/14に参考にしました。 fig = go.Figure( data=[ go.Table( # ヘッダーとしてDataframeのcolumnsを渡す。 header=dict( values=features_fixed, # セルの枠線の設定 line_color='darkslategray', # セルの塗りの設定 fill_color='royalblue', # 文字の配置の設定 align=['center'], # フォントの設定 font=dict(color='white', size=12), # セルの高さの設定 height=60 ), cells=dict( values=X.values.T, line_color='darkslategray', fill=dict(color=['paleturquoise', 'white']), align=['center'] ) ) ] ) fig.show()
特にalign
やcolor
などを全列で指定しなかった場合は、渡したリストの一番最後の値が適用されるようでした。
最後に
今回はPlotlyのPython用ライブラリでデータをテーブルで表示する方法を紹介しました。 PandasのDataFrameと併せて、場面に合わせて使い分けると良さそうですね。