📌
Databricksを用いたフードデリバリー時間予測プロジェクト(という仮定でchatgptに課題を作らせてアウトプット)
Databricksを用いたフードデリバリー時間予測プロジェクト(という仮定でchatgptに課題を作らせてアウトプット)
🧭 背景と目的
※本文も大いにchat-gptを使ってるよ
昨今のフードデリバリー市場の拡大に伴い、配達の迅速化・効率化は顧客満足度やリピート率に直結する重要課題となっております。本プロジェクトでは、実際のフードデリバリーデータを活用し、配達時間に影響を与える要因を特定し、分析モデルによる理解と予測を行うことを目的としております。
📦 使用データセット
- データ名: Food Delivery Time Prediction
- URL: https://www.kaggle.com/datasets/shrutimehta/food-delivery-time
- 主なカラム:
Delivery_person_Age
Delivery_person_Ratings
Restaurant_latitude
Restaurant_longitude
Delivery_location_latitude
Delivery_location_longitude
Weather_conditions
Road_traffic_density
Vehicle_condition
-
Time_taken(min)
(目的変数)
🧱 使用技術・環境
項目 | 内容 |
---|---|
分析基盤 | Databricks |
ストレージフォーマット | Delta Lake |
カタログ管理 | Unity Catalog(予定) |
分析ライブラリ | PySpark / Pandas |
可視化ツール | Databricksノートブック |
可視化方式 | display(), matplotlib など |
🎯 分析ゴール
- 配達時間に影響を与えている要因(例:天候・交通状況・車両状態など)の特定
- 要因間の関係性と傾向の可視化
- 単回帰・多変量回帰による配達時間予測モデルの構築
- データパイプラインとETL処理を通じた再現性の高い分析環境の構築
🔧 構築手順
① データ取得とアップロード
- Kaggleからデータセットをダウンロード
- Databricksでボリュームを作成
- ボリュームにアップロード
② データ取り込みとDelta変換
Spark DataFrameとして読み込み、Deltaフォーマットで保存。スキーマも明示的に定義予定。
# スキーマ定義
schema = StructType([
StructField("_c0",StringType(), True),
StructField("ID", StringType(), True),
StructField("Delivery_person_ID", StringType(), True),
StructField("Delivery_person_Age", IntegerType(), True),
StructField("Delivery_person_Ratings", DoubleType(), True),
StructField("Restaurant_latitude", DoubleType(), True),
StructField("Restaurant_longitude", DoubleType(), True),
StructField("Delivery_location_latitude", DoubleType(), True),
StructField("Delivery_location_longitude", DoubleType(), True),
StructField("Time_Orderd", StringType(), True),
StructField("Time_Order_picked", StringType(), True),
StructField("Weather_conditions", StringType(), True),
StructField("Road_traffic_density", StringType(), True),
StructField("Type_of_order", StringType(), True),
StructField("Type_of_vehicle", StringType(), True),
StructField("multiple_deliveries", IntegerType(), True),
StructField("Time_taken_min", IntegerType(), True)
])
# スキーマ適用しつつデータフレーム作成
df = spark.read.option("header","true").schema(schema).csv(path_data)
#デルタテーブル化
df.write.format("delta").mode("overwrite").saveAsTable(path_delta_table)
③ カタログへの登録(任意)
Unity Catalogへの登録を通じて、テーブル管理やガバナンスの向上を目指す。
(SQL / Python コード)
pass
④ ETL処理(前処理・クレンジング・型変換など)
- 欠損値の補完
- データ型の明示的変換(例:年齢→整数)
- カテゴリ変数の整形・整理(例:天候の表記揺れなど)
(コード挿入用スペース)
⑤ 分析モデルの構築(集計・傾向抽出)
- 距離・交通・天候ごとの配達時間平均の算出
- 配達員特性(評価・年齢・車両)による配達傾向の可視化
(コード挿入用スペース)
⑥ 可視化(グラフ・統計出力)
- 交通状況別・時間帯別ヒートマップ
- 配達距離と配達時間の散布図
- 配達員評価と時間の関係性(箱ひげ図など)
(コード挿入用スペース)
📊 主な分析結果と考察
(※Step3〜5完了後に記入予定)
📝 結論と今後の展望
(※Step6終了後に記入予定)
🔚 実行環境・依存パッケージ
- Databricks Runtime: 13.3 LTS
- Pythonバージョン: 3.10
- 使用ライブラリ: PySpark, pandas, seaborn, matplotlib など
Discussion