開発日誌Vol.008 – 複数ページ運用とCSVダウンロード

app.py の処理が増えたことでStreamlitの動作が重くなったため、複数ページ構成に変更。pages/01_... 形式で5つのページを作成し、各機能を分散して運用することにした。これにより、ページごとの負荷が軽減され、よりスムーズなデータ表示が可能になった。並行してCSVダウンロード機能の仕上げを進め、フィルター適用後のデータのみをエクスポートできるように対応。また、凡例の順序調整や色のバリエーション問題の改善も行い、可視化の見やすさを向上させた。

コード修正・エラー対応

  • Streamlitの動作が重くなったため、複数ページに分割
    • pages/01_... 形式で5つのページを作成
    • 各ページに適切な処理を割り当て、負荷を分散
  • 凡例の順序を予約数順に変更
    • ax.legend() の並び順を sort_values(ascending=False) で調整
  • 都道府県別の色が似すぎる問題を改善
    • mpl.cm.get_cmap("rainbow", len(pref_counts)) でより多様な色を使用
  • X軸ラベルの回転角度調整
    • plt.xticks(rotation=90) で視認性を向上

データ処理・分析・可視化の進捗

  • 複数ページ構成の実装
    • app.py → 基本画面(ダッシュボードなど)
    • pages/01_予約組数.py → 予約組数の可視化
    • pages/02_月次分析.py → 月次データの詳細表示
    • pages/03_売上分析.py → 売上データの分析ページ
    • pages/04_キャンセル分析.py → キャンセルデータの分析ページ
    • pages/05_エクスポート.py → CSVダウンロード機能
  • CSVダウンロード機能の仕上げ
    • フィルター適用後のデータのみをエクスポート可能に
    • 日付フォーマットやカラム順を統一

今後の進め方

  • ページごとの最適化
    • 各ページのレイアウト調整(タイトルや説明文の追加)
    • ユーザーが直感的に操作できるUI改善
  • メール解析 → データ抽出モデルの開発
    • 予約・キャンセル・変更メールからデータを自動取得する仕組みの設計
    • メールのフォーマットごとの解析ルールを整理し、実装に向けた準備
  • パフォーマンス改善の検討
    • キャッシュ (@st.cache_data) の活用
    • データ処理の最適化(Pandasの処理改善など)
タイトルとURLをコピーしました