【Streamlit】st.column_config.Columnの基本と使い方

Streamlit
この記事は約5分で読めます。

こんにちは、JS2IIUです。

Streamlitを使ってさまざまなデータを表示させたいときに、データフレーム(st.dataframest.data_editor)を使ってよりわかりやすく表示させるためのcolumn_configについて説明していきます。よろしくお願いします。

はじめに

st.column_config.Columnは、Streamlitアプリ内でデータフレームの列表示をカスタマイズするためのベースクラスです。このクラスを利用することで、列のラベルや幅、補足説明、必須設定などを細かく調整できます。この記事では、st.column_config.Columnの基本的な使い方や主要パラメータについて詳しく解説し、サンプルコードを交えて実際の動作を確認します。

Streamlitを使う基本的な内容についてはこちらの記事で解説していますので、参考にして下さい。

また、st.dataframeについてはこちらの記事を参考にして下さい。

st.column_config.Columnの概要

主なパラメータ

  • label:列のラベルを指定します。デフォルトでは列名がそのまま使われます。
  • width:列の幅を指定します(値はpx単位)。デフォルトでは自動調整されます。
  • help:マウスオーバー時に表示される補足説明を指定します。
  • disabled:列を非表示にするかどうかを指定します(Trueで非表示)。
  • required:値が必須かどうかを指定します(Trueで必須)。

これらのパラメータを適切に設定することで、データフレームを見やすく、直感的に操作可能にすることができます。

サンプルコード

以下の例では、st.column_config.Columnを使用して列の表示設定をカスタマイズしています。

import streamlit as st
import pandas as pd
from streamlit.column_config import Column

# データフレームを作成
data = {
    "名前": ["Alice", "Bob", "Charlie"],
    "年齢": [25, 30, 35],
    "メール": ["alice@example.com", "bob@example.com", "charlie@example.com"]
}
df = pd.DataFrame(data)

# カスタム列設定
column_config = {
    "名前": Column(
        label="氏名",
        width=150,
        help="ユーザーの名前を表示します。"
    ),
    "年齢": Column(
        label="年齢(歳)",
        width=100,
        help="ユーザーの年齢を表示します。",
        required=True
    ),
    "メール": Column(
        label="メールアドレス",
        width=200,
        help="連絡用メールアドレス",
        disabled=False
    )
}

# データフレームを表示
st.dataframe(df, column_config=column_config)

上の図では、氏名の部分にマウスオーバーしたときの状態を示しています。

サンプルコードの解説

  1. labelパラメータ
    • 列のラベルをカスタマイズします。デフォルトの列名(例: 名前)をより説明的なラベル(例: 氏名)に変更しました。
  2. widthパラメータ
    • 各列の幅をピクセル単位で指定します(例: 名前列は150px、年齢列は100px)。これにより、列幅が固定され、表示が整います。
  3. helpパラメータ
    • 列に関する補足情報をマウスオーバーで表示します。これにより、ユーザーが列の目的を理解しやすくなります。
  4. disabledパラメータ
    • 列を非表示にするかどうかを制御します(今回はすべて表示に設定)。
  5. requiredパラメータ
    • 年齢列を必須列として設定しました。この設定により、Noneなどの欠損値が許容されなくなります。

応用例:フォームデータの表示とカスタマイズ

以下の応用例では、フォームデータをカスタマイズした列設定で表示します。

import pandas as pd
import streamlit as st
from streamlit.column_config import Column

# 応用例データ
form_data = {
    "ユーザーID": [101, 102, 103],
    "登録日": ["2024-01-01", "2024-02-15", "2024-03-22"],
    "アクティブ": [True, False, True]
}
df_form = pd.DataFrame(form_data)

# 列設定
column_config_form = {
    "ユーザーID": Column(
        label="ID",
        width=100,
        help="システム内での一意の識別子"
    ),
    "登録日": Column(
        label="登録日",
        width=120,
        help="ユーザーがシステムに登録した日付"
    ),
    "アクティブ": Column(
        label="アクティブ状態",
        width=150,
        help="現在アクティブかどうか",
        required=True
    )
}

# データフレームを表示
st.dataframe(df_form, column_config=column_config_form)

注意点

  1. disabledパラメータの活用
    • 特定の列を一時的に非表示にしたい場合に便利です。
  2. requiredの使い方
    • 必須列に設定する場合は、データに欠損値がないことを確認してください。欠損値がある場合、エラーが発生する可能性があります。
  3. 幅の調整
    • 全体のレイアウトに応じて列幅(width)を調整することで、見やすさが向上します。

まとめ

st.column_config.Columnは、Streamlitのデータフレーム表示を柔軟にカスタマイズできる便利なツールです。基本パラメータを理解し、適切に活用することで、アプリケーションの使いやすさを向上させることができます。ぜひ、この記事を参考に、カスタマイズ可能なデータフレーム表示を試してみてください。

公式ドキュメントはこちら:st.column_config.Column

コメント

タイトルとURLをコピーしました