Food delivery operations analysis: 10,000 orders across 5 South African cities — data cleaning, EDA, statistical findings, and business recommendations.
# Food Delivery Operations Analysis
A food delivery platform operating across five South African cities (Johannesburg, Sandton, Midrand, Soweto, Pretoria) had 10,000 raw order records and no reliable answer to two questions: what actually makes a delivery slow, and why does roughly one in three orders cancel outright.
**Headline finding:** delivery time has no measurable relationship with either delivery distance (r = -0.003) or restaurant prep time (r = -0.001) — ruling out the two most common explanations. Separately, the 33.5% cancellation rate is nearly identical across every city and payment method, pointing to a systemic cause rather than a local one.
Full write-up with charts: case study on the portfolio site.
## Project Map
| Folder | Contents |
|---|---|
| `01 Documentation/` | README, Data Dictionary, Methodology, Cleaning Log |
| `02 Data/` | Raw and cleaned CSVs |
| `03 SQL/` | Schema, analysis queries, SQLite database |
| `04 Python/` | Cleaning pipeline (`clean_data.py`) and EDA script (`eda.py`) |
| `05 Dashboard/` | Dashboard status notes |
| `06 Reports/` | Executive Summary, Business Report, Technical Report, Findings, Recommendations, Future Improvements (editable source docs) |
| `07 Presentation/` | Stakeholder deck and speaker notes |
| `08 Images/` | All 15 EDA charts, generated by `eda.py` |
| `09 Assets/` | Computed metrics (`metrics.json`) and report-generation scripts |
| `10 Final Deliverables/` | PDF exports of the four core documents — start here for the client-ready version |
## Dataset
- **Source:** `food_delivery_dataset.csv`, 10,000 raw rows → 9,793 after cleaning
- **Columns:** 15 raw → 21 cleaned (6 derived)
- **Date range:** 1 January 2026 – 1 May 2026 (4 months)
- **Currency:** South African Rand (ZAR)
- **Tooling:** Python, pandas, matplotlib, SQLite
## Reproducing the Results
```
04 Python/clean_data.py # full cleaning pipeline, prints a step-by-step log
04 Python/eda.py # generates all …