Streamlitでインタラクティブなデータ表示を実現!st.dataframeの使い方完全ガイド

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

こんにちは、JS2IIUです。

Streamlitのst.dataframeは、データをインタラクティブなテーブル形式で表示できる便利な関数です。本記事では、st.dataframeのすべてのパラメータを解説し、実際に使えるサンプルコードを提供します。今回もよろしくお願いします。

st.dataframeの概要

st.dataframeを使うと、DataFrameや類似のデータ構造を以下の特徴を持つテーブルとして表示できます。

  • 列のソート
  • 表示サイズの調整
  • インデックスの非表示
  • 列の順序やフォーマットの設定
  • 選択可能なインタラクション

公式のシグネチャは次の通りです:

st.dataframe(
    data=None,
    width=None,
    height=None,
    *,
    use_container_width=False,
    hide_index=None,
    column_order=None,
    column_config=None,
    key=None,
    on_select="ignore",
    selection_mode="multi-row"
)

各パラメータの詳細

1. data

  • 概要: 表示するデータ(必須)。
  • タイプ: Pandas DataFrame, NumPy 配列, Python リストなど。
  • 例:
import pandas as pd
df = pd.DataFrame({"名前": ["Alice", "Bob"], "得点": [85, 90]})
st.dataframe(df)

2. width

  • 概要: テーブルの幅(ピクセル指定)。
  • タイプ: int または None(デフォルト)。
  • 例:
st.dataframe(df, width=500)

3. height

  • 概要: テーブルの高さ(ピクセル指定)。
  • タイプ: int または None(デフォルト)。
  • 例:
st.dataframe(df, height=200)

4. use_container_width

  • 概要: テーブルを親コンテナの幅にフィットさせるか。
  • タイプ: bool(デフォルト: False)。
  • 例:
st.dataframe(df, use_container_width=True)

5. hide_index

  • 概要: インデックス列を表示しない設定。
  • タイプ: bool または None(デフォルト: None)。
  • 例:
st.dataframe(df, hide_index=True)

6. column_order

  • 概要: 表示する列の順序を指定。
  • タイプ: list または None。
  • 例:
st.dataframe(df, column_order=["得点", "名前"])

7. column_config

  • 概要: 列の名前やフォーマットを設定。
  • タイプ: dict または None。
  • 例:
st.dataframe(
    df,
    column_config={
        "得点": "スコア",
        "名前": {"name": "氏名", "type": "text"}
    }
)

8. key

  • 概要: セッション内で一意にするためのキー。
  • タイプ: str または None。
  • 例:
st.dataframe(df, key="unique_table")

9. on_select

  • 概要: ユーザーが選択したセルのデータを取得。
  • タイプ: “ignore” または関数。
  • 例:
def handle_select(selection):
    st.write(f"選択された行: {selection}")

st.dataframe(df, on_select=handle_select)

10. selection_mode

  • 概要: 行の選択モードを設定。
  • タイプ: “multi-row”, “single-row”, または “none”(デフォルト)。
  • 例:
st.dataframe(df, selection_mode="single-row")

実用例:サンプルコード集

例1: 基本的なDataFrameの表示

import pandas as pd
import streamlit as st

data = {"名前": ["Alice", "Bob", "Charlie"], "得点": [88, 92, 85]}
df = pd.DataFrame(data)

st.title("基本的なテーブル表示")
st.dataframe(df, use_container_width=True)

例2: 列の順序と名前を変更

import pandas as pd
import streamlit as st

data = {"名前": ["Alice", "Bob", "Charlie"], "得点": [88, 92, 85]}
df = pd.DataFrame(data)

st.title("列の順序と名前のカスタマイズ")
st.dataframe(
    df,
    column_order=["得点", "名前"],
    column_config={
        "名前": {"name": "氏名"},
        "得点": {"name": "スコア"}
    }
)

例3: 行選択を有効化

import pandas as pd
import streamlit as st

data = {"名前": ["Alice", "Bob", "Charlie"], "得点": [88, 92, 85]}
df = pd.DataFrame(data)

def on_select(selection):
    st.write(f"選択された行: {selection}")

st.title("行選択が可能なテーブル")
st.dataframe(df, selection_mode="single-row", on_select=on_select)

まとめ

st.dataframeは、データの視覚化やインタラクションを簡単に実現できる強力なツールです。本記事で解説した各パラメータを活用し、表示内容をカスタマイズしてみてください。

詳細な情報は、公式ドキュメントをご覧ください。

st.dataframe - Streamlit Docs
st.dataframe displays a dataframe as an interactive table.

この記事で提供したサンプルコードをベースに、自分のプロジェクトで試してみましょう!

最後まで読んでいただきありがとうございました。73

<PR> 更なるスキルアップを目指す方に<PR>

コメント

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