この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
データアナリティクス事業本部の鈴木です。
今回は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と併せて、場面に合わせて使い分けると良さそうですね。