開発日誌Vol.018 – すべてのOTAと自社予約データの統合

本日は、Airbnbの売上データをデータベースに登録し、その結果、すべてのOTA(Airbnb、じゃらん、楽天トラベルなど)と自社予約データの登録が完了した。これにより、各プラットフォームの売上を統一的に管理・分析できる環境が整った。データを可視化するために、Streamlitを活用し、年度別・月別の売上推移を折れ線グラフと棒グラフで表示。また、売上データを表形式でも表示し、カテゴリー別・月別の詳細な分析が可能になった。

コード修正・エラー対応

  • Airbnbのデータ登録時、日付フォーマットの不一致を修正し、統一(YYYY-MM-DD 形式)。
  • total_payment が文字列として登録される問題を修正し、数値型(float)に変換。
  • すべてのOTAと自社予約データの売上を統合するため、データソースごとにカラムを標準化。
  • groupby() の集計時に発生した NaN 値を fillna(0) で補完し、グラフの欠損を防止。
  • 年度別折れ線グラフのデータを最新3年分に限定し、視認性を向上。
  • Streamlitの st.dataframe() で売上データを表形式で表示し、カンマ区切りのフォーマットを適用。

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

  • データ統合の完了: すべてのOTA(Airbnb、じゃらん、楽天トラベル)と自社予約データを統合し、統一的な管理が可能に。
  • 年度別売上棒グラフ: OTAごと・年度ごとの売上データを groupby(["年度", "category"])["total_payment"].sum() で集計し可視化。
  • 年度別月次売上折れ線グラフ: Fiscal Month(4月を1、3月を12とする)を適用し、月ごとの売上推移を比較。
  • 売上データの表形式表示: pivot() を使用し、年度×月別の売上データを整理し、 st.dataframe() で表示。
  • キャンセルデータの除外: status フィールドをフィルタリングし、売上データからキャンセル分を排除。

今後の進め方

  • フィルタ機能の追加: Streamlitの st.selectbox() を活用し、OTA別の売上フィルタを追加。
  • 売上分析の高度化: 売上成長率、前年比較、平均単価などの指標を算出。
  • データ更新の自動化: 定期的な売上データの取得・登録スクリプトをスケジュール実行(cron など)。
  • レポート機能の強化: PDFエクスポート・データダウンロード機能の追加を検討。
  • ダッシュボードの改良: 売上データの可視化を強化し、さらに直感的なインターフェースを目指す。
タイトルとURLをコピーしました