- Business Problem
- Phase 1: Data Cleaning & ETL (Python)
- Phase 2: Business Intelligence Dashboard (Power BI)
- Data Modeling & DAX Details
- Executive Insights
- Strategic Recommendations
- Repository Structure
- Contact
The objective of this project is to analyze a year's worth of pizza sales data to identify inefficiencies in staffing, inventory waste, and untapped revenue opportunities. We aim to answer:
- What are our peak demand hours and days?
- Which pizza categories contribute the most to our bottom line?
- How does the Average Order Value (AOV) fluctuate throughout the year?
Before visualization, I used Python to perform rigorous data validation. This ensured that the insights in Power BI were based on high-quality, reliable data.
Technical Highlights:
- Imputation Logic: Missing prices were filled using the
medianto remain robust against outliers. - Feature Engineering: *
order_hour: Categorized to identify the "Lunch Rush" vs. "Dinner Peak."day_name: Extracted to calculate the 8,242 unit spike on Fridays.month_name: Created for seasonal trend analysis.
- Validation: Programmatically confirmed a total revenue of $817.8K before exporting to CSV for Power BI consumption.
I developed a multi-page interactive dashboard to visualize the cleaned data and provide actionable business insights.
A high-level view of critical KPIs including Total Revenue, Average Order Value, and Total Pizzas Sold.
Detailed breakdown of sales trends by day and peak hours to optimize staffing and inventory.
Granular analysis of individual orders, pizza categories, and sizes to identify top-performing products.
Deep dive into the business logic and data characteristics supporting the analysis.
In Power BI, I built a relational model to handle the 48k+ rows of data efficiently and created custom measures to track performance.
Key DAX Measures Created:
- Total Revenue:
SUM(pizza_sales[total_price]) - Avg Order Value:
[Total Revenue] / DISTINCTCOUNT(pizza_sales[order_id]) - Total Pizzas Sold:
SUM(pizza_sales[quantity])
- Peak Demand: Fridays and Saturdays are the busiest, specifically between 12 PM - 1 PM and 5 PM - 7 PM.
- Revenue Drivers: Large (L) size pizzas account for 45%+ of total revenue.
- Top Product: The Classic Deluxe Pizza is the volume leader, while The Thai Chicken Pizza is the revenue leader.
- Seasonality: July is the highest-performing month, indicating strong summer demand.
Based on the data, I propose the following actions:
- Dynamic Staffing: Increase kitchen staff by 20% on Fridays between 11 AM and 1 PM to reduce order wait times.
- Upselling Strategy: Since Medium (M) pizzas are popular but have lower margins, create a "Combo Upgrade" to move customers to Large (L) sizes.
- Inventory Management: Stock 15% more ingredients for Classic Category pizzas on weekends to prevent stockouts.
├── Data-Cleaning/
│ └── data_cleaning.ipynb # Python script for ETL
├── Dataset/
│ ├── Raw_Data.xlsx # Original source
│ └── Cleaned_Pizza_Sales.csv # Output for Power BI
├── Dashboard/
│ └── Pizza_Analytics.pbix # Power BI Report
└── README.md
Prajwal Itnal Computer Applications Student | Data Enthusiast



