data-portfolio

← Portfolio · Notebook


Flight Demand & Price — Southern Africa

Scope

Exploratory analysis of a 31-day Kaggle scrape of Southern African flight listings. Volume forecasting on the top route (JNB–CPT) over a 6-day held-out window; price prediction conditional on (route, airline, dow, hour, day_index) across the full scrape.

What this is not. Not a 7–30 day forward forecast — the dataset only spans 2025-03-14 to 2025-04-13, so the SARIMA holdout is 6 days on a near-constant series (mean ≈ 90 flights/day, CV ≈ 8%). Not a pricing-curve model — the Kaggle scrape carries departure dates only, not booking dates, so there is no lead-time variable; the day_index feature is a day-of-window index 0–30, not a lead time.

Data

Run python download_data.py (Kaggle CLI required).

EDA targets

Modeling

Family Model
Classical time-series SARIMA on daily flight volume (top route)
ML challenger GradientBoostingRegressor on (route, airline, dow, hour, day_index) for price prediction
Baseline Naive-mean / naive-last / naive-seasonal (volume); groupby(route, airline, dow, hour).mean() lookup (price)

Validation

Deployment sketch

Business outcome