Streamlitを使用して、PandasのDataFrameを表示し、ユーザーがGUI上でカラムの表示/非表示を設定できる機能を実装する方法を解説します。さらに、選択したカラムを設定ファイルとして保存します。
必要なライブラリ
以下のライブラリをインストールしてください:
pip install streamlit pandas
#サンプルデータフレーム作成用
pip install numpy
コードの解説
以下に、コードの主要な部分を解説します。
1. ライブラリのインポートとデータの準備
import streamlit as st
import pandas as pd
import json
import os
# 設定ファイルの保存と読み込み
CONFIG_FILE = 'column_config.json'
def save_config(columns):
config = {
'selected_columns': columns,
}
with open(CONFIG_FILE, 'w') as f:
json.dump(config, f)
def load_config():
if os.path.exists(CONFIG_FILE):
with open(CONFIG_FILE, 'r') as f:
return json.load(f)
return None
# サンプルデータフレームの作成
# 既存のデータフレームをつかう場合は以下不要
import numpy as np
df = pd.DataFrame(
np.random.randn(20, 5),
columns=['A', 'B', 'C', 'D', 'E']
)
ここでは、必要なライブラリをインポートし、設定ファイルの保存と読み込みを行う関数を定義しています。save_config関数では、選択されたカラムとその順序を保存します。
2. アプリケーションのタイトル設定と保存された設定の読み込み
st.title('データフレーム表示とカラム選択(カスタム順序保存機能付き)')
# 保存された設定の読み込み
saved_config = load_config()
# カラム選択のマルチセレクトボックス
if saved_config and 'selected_columns' in saved_config:
default_columns = saved_config['selected_columns']
else:
default_columns = df.columns.tolist()
selected_columns = st.multiselect(
'カラムを選択してください:',
df.columns.tolist(),
default=default_columns
)
アプリケーションのタイトルを設定し、保存された設定を読み込みます。保存された設定がある場合は、それをデフォルト値として使用します。
3. 選択されたカラムの表示
if selected_columns:
st.dataframe(df[selected_columns])
else:
st.warning('カラムが選択されていません。少なくとも1つ選択してください。')
選択されたカラムがある場合は、st.dataframe()を使用してDataFrameを表示します。
この部分では、ユーザーが選択したカラムの順序を変更できるインターフェースを提供しています。各カラムに対して新しい位置を入力でき、その結果を反映した新しい順序でDataFrameを表示します。
4. 設定の保存
if st.button('選択したカラムと順序を保存'):
save_config(selected_columns)
st.success('設定が保存されました。')
「選択したカラムと順序を保存」ボタンをクリックすると、現在選択されているカラムとその順序を設定ファイルに保存し、成功メッセージを表示します。
アプリケーションの実行方法
- 上記のコードを
app.pyとして保存します。 - コマンドラインで以下のコマンドを実行します:
streamlit run app.py
- ブラウザが自動的に開き、アプリケーションが表示されます。
まとめ
このサンプルコードを使用することで、ユーザーはGUI上で簡単にDataFrameのカラムを選択し、必要な情報のみを表示することができます。選択したカラムを設定ファイルとして保存し、次回起動時に自動的に読み込むことができるようになりました。

コメント