こんにちは、JS2IIUです。StreamlitでDataFrameを表示する際に日付選択の機能を使えます。日付に関する機能を提供するst.column_config.DateColumnについて紹介します。今回もよろしくお願いします。

はじめに
データフレームで日付データを操作する際、st.column_config.DateColumnを利用することで、日付の表示や管理を効率化できます。このクラスを使用すると、データのフォーマットや入力範囲を簡単に設定でき、アプリケーションの操作性が向上します。本記事では、DateColumnの基本的な設定方法と、実際のサンプルコードを基にした使い方を丁寧に解説します。
st.column_config.DateColumnとは
st.column_config.DateColumnは、Streamlitアプリケーションのデータフレーム内で日付データを表示・編集するためのカスタマイズ可能な列設定クラスです。このクラスを利用することで、以下のような機能を簡単に実現できます。
主な用途
- 日付の表示:特定のフォーマットで日付を表示。
- 入力制限:入力可能な日付範囲を設定。
- 直感的な操作:カレンダー形式で日付を選択可能。
主なオプション
label:列の表示名を指定。help:列に関する説明をツールチップとして表示。format:日付の表示フォーマットを指定。Moment.jsのフォーマットに合わせて下さい。min_valueとmax_value:入力可能な最小値と最大値を設定。step:選択可能なステップ幅(例: 1日単位)。
基本例:プロジェクトの締切日を管理
この例では、プロジェクトの締切日を管理するデータフレームを作成し、DateColumnを使用して日付列をカスタマイズします。
サンプルコード
from datetime import datetime
import streamlit as st
import pandas as pd
from streamlit.column_config import DateColumn
# データフレームを作成
data = {
"Project": ["Project A", "Project B", "Project C"],
"Deadline": ["2024-11-30", "2024-12-15", "2025-01-10"]
}
df = pd.DataFrame(data)
# 日付列のデータ型を変換
df["Deadline"] = pd.to_datetime(df["Deadline"])
# DateColumnで列をカスタマイズ
column_config = {
"Deadline": DateColumn(
label="締切日",
help="プロジェクトの締切日を確認してください",
format="MMM Do, YYYY", # 日付フォーマット
min_value=datetime(2024, 11, 22), # 入力可能な最小日付
max_value=datetime(2025, 12, 31), # 入力可能な最大日付
step=1 # 1日単位で選択可能
)
}
# カスタム列設定でデータフレームを表示
st.data_editor(df, column_config=column_config)
解説
- データフレームの作成
- プロジェクト名と締切日を持つデータフレームを作成。
- 締切日は文字列形式なので、
pd.to_datetimeで日付型に変換しています。DateColumnを利用するためには日付型が必要です。
- DateColumnの設定
label: 列名を「締切日」として表示。help: ユーザーに締切日の用途を説明するツールチップを追加。format: 日付をMoment.jsのフォーマットに合わせて下さい。min_valueとmax_value: ユーザーが選択できる日付を2024年11月1日~2025年12月31日に制限。step: 1日単位で日付を変更可能。
- カスタマイズした列の表示
st.data_editorを使用し、column_configで設定したカスタマイズを適用してデータフレームを表示します。- ユーザーはカレンダー形式で日付を編集できます。
応用例:新規行のデフォルト値を設定
この応用例では、新しい行を追加する際に自動入力されるデフォルトの日付を設定します。
サンプルコード
from datetime import datetime
import streamlit as st
import pandas as pd
from streamlit.column_config import DateColumn
# データフレームを作成
data = {
"Project": ["Project A", "Project B", "Project C"],
"Deadline": ["2024-11-30", "2024-12-15", "2025-01-10"]
}
df = pd.DataFrame(data)
# 日付列のデータ型を変換
df["Deadline"] = pd.to_datetime(df["Deadline"])
# DateColumnで列をカスタマイズ
column_config = {
"Deadline": DateColumn(
label="締切日",
help="プロジェクトの締切日を入力してください",
default=datetime(2025, 1, 1), # 新しい行に自動入力されるデフォルト値
format="MMM Do, YYYY"
)
}
# 新規行を追加可能にしてデータフレームを表示
st.data_editor(df, column_config=column_config, num_rows='dynamic', use_container_width=True)
解説
- デフォルト値の設定
defaultオプションを利用して、新しい行を追加した際に「2025-01-01」が自動入力されるように設定。datetime.datetime形式で指定します。- これにより、新規行を簡単に管理できます。
- 新規行の追加
st.data_editorで新規の行を追加できるようにするにはnum_rows='dynamic'を指定します。st.data_editorでデフォルト値を活用し、新しいプロジェクトの締切日を素早く入力可能。- ユーザーはカレンダーを利用して日付を修正できます。
- 全幅表示
use_container_width=Trueを指定して、データフレームを画面全体の幅で表示。大きなデータセットでも見やすくなります。
注意点
- データ型の変換
DateColumnを使用する列は、必ずdatetime64[ns]型である必要があります。文字列を使用する場合は、pd.to_datetimeを使用して事前に変換してください。
- フォーマットの指定
formatオプションには、Moment.jsのフォーマット形式を使用します。不適切なフォーマットを指定するとエラーになるため注意が必要です。
- 入力制限
min_valueやmax_valueを適切に設定することで、無効な日付の入力を防ぎ、データの一貫性を保てます。datetime.datetime形式で指定します。
まとめ
st.column_config.DateColumnを利用することで、Streamlitアプリケーションで日付データを効率的に管理・表示できます。基本例では日付フォーマットや入力範囲を設定する方法を、応用例では新規行にデフォルト値を設定する方法を解説しました。このクラスは締切日やイベント日など、日付を扱う幅広い用途で活用可能です。
次回は、時間情報に特化したst.column_config.TimeColumnについて解説します。お楽しみに!
参考リンク
最後まで読んでいただきありがとうございます。73


コメント