0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

streamlitによるテーブル表示

Last updated at Posted at 2025-07-06

最近になってstreamlitの勉強を開始。
自分の頭の整理と備忘を兼ねて、記事を書いてみます。

テーブルを表示

まずはシンプルにデータをテーブル形式で表示。
ちなみに表示のために使っているデータは、「ある期間内における中央競馬の平地競走・芝レースの人気別勝率」です。

import streamlit as st
import pandas as pd

df = pd.read_csv( ... )
st.dataframe( df )

st1-1.png

表示幅を拡大

デフォルトのままでは縦横ともに表示幅が狭いので、表示幅を広げるために以下で対応。

1: 横方向
set_page_config()でlayoutにwideを指定。

st.set_page_config(
    layout='wide'
)

2: 縦方向
dataframe()にheight指定を追加。

st.dataframe( df, height=665 )

st1-2.png

全データがスクロールなしで表示できるようになりました。

セル内のデータの書式指定

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
    }
)

st1-3.png
全セルがパーセント表記になりました。

セルの背景色変更

値の高低を一目で直観的にとらえられるよう、セルの背景色を変更してヒートマップっぽくしてみます。

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
を参照。

st1-4.png

axisの指定により、考慮される値の範囲が変わります。
今回はaxis=Noneと指定。テーブル内の全データを考慮した上で色の濃淡が決まっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?