最近になってstreamlitの勉強を開始。
自分の頭の整理と備忘を兼ねて、記事を書いてみます。
テーブルを表示
まずはシンプルにデータをテーブル形式で表示。
ちなみに表示のために使っているデータは、「ある期間内における中央競馬の平地競走・芝レースの人気別勝率」です。
import streamlit as st
import pandas as pd
df = pd.read_csv( ... )
st.dataframe( df )
表示幅を拡大
デフォルトのままでは縦横ともに表示幅が狭いので、表示幅を広げるために以下で対応。
1: 横方向
set_page_config()でlayoutにwideを指定。
st.set_page_config(
layout='wide'
)
2: 縦方向
dataframe()にheight指定を追加。
st.dataframe( df, height=665 )
全データがスクロールなしで表示できるようになりました。
セル内のデータの書式指定
dataframe()にcolmun_confing指定を追加。
column_config自体はディクショナリで、カラム毎に「"カラム名" : 設定内容」とする必要あり。
設定内容の詳細は
https://docs.streamlit.io/develop/api-reference/data/st.column_config
に記載の通り。
今回は全カラム、パーセント表記に変えてみます。
st.dataframe( df,
height=665,
column_config = {
col : st.column_config.NumberColumn( format="percent" ) for col in df.columns
}
)
セルの背景色変更
値の高低を一目で直観的にとらえられるよう、セルの背景色を変更してヒートマップっぽくしてみます。
DataFrameのstyle変更で対応。
background_gradient()を使って実現してみます。
st.dataframe( df.style.background_gradient( cmap='YlGn', axis=None ),
height=665,
column_config = {
col : st.column_config.NumberColumn( format="percent" ) for col in df.columns
}
)
cmapに対して指定可能な値は
https://matplotlib.org/stable/users/explain/colors/colormaps.html
を参照。
axisの指定により、考慮される値の範囲が変わります。
今回はaxis=Noneと指定。テーブル内の全データを考慮した上で色の濃淡が決まっています。