Python & Data Analytics · Interactive Reporting

Online Retail
Sales Analysis

More than half a million transaction lines cleaned, modelled and translated into an interactive management dashboard prototype.

View the full project report
Online retail sales dashboard with filters and charts for revenue, products, countries, order values and correlations
Interactive notebook prototype · Filters by period, country and minimum order value
541,909raw transaction lines
524,878clean positive sales lines
19,960invoices analysed
38countries represented

Project overview

Dataset
UCI Online Retail
Period
December 2010 to December 2011
Role
Data preparation, analysis, dashboard logic & interpretation
Output
Interactive Jupyter dashboard prototype

From raw transactions to management-ready reporting.

I started with line-level invoice data from a UK-based non-store retailer. I audited its quality, removed exact duplicates, separated positive sales from returns or invalid rows and engineered the fields needed for revenue and order analysis.

The business question

Where is revenue coming from, which products and markets matter most, and how are order values distributed over time? The final reporting model was designed to give a non-technical manager clear answers without requiring them to edit the analysis code.

Interpretation note

Returns and cancellations were excluded, so this project reports positive gross sales rather than net revenue. Customer-level analysis is also limited by 135,080 missing CustomerID values in the raw data.

Analysis workflow

  1. 01 Audit the data

    Checked missing values, exact duplicates, invalid sales and extreme quantities or prices before charting.

  2. 02 Clean and engineer

    Removed 5,268 duplicates and 11,763 non-positive rows, converted dates and created line revenue fields.

  3. 03 Model the orders

    Aggregated line data into 19,960 invoices with order value, quantity, product-line and period measures.

  4. 04 Build the dashboard

    Connected month, country and minimum-order filters to reusable chart refresh logic in Jupyter.

Key findings

Analysis translated into decisions.

The project connects each finding to a practical commercial or operational question instead of presenting charts without context.

Market concentrationFinding
~85%

Home-market dependence

The United Kingdom contributes roughly 85% of reported positive gross sales, creating a clear concentration risk.

Revenue relationshipFinding
0.91

Volume drives line value

Quantity has a strong positive correlation with line revenue, while unit price has a much weaker relationship.

Order behaviourFinding
99th

A strongly skewed distribution

The main order-value view was capped at the 99th percentile so typical orders remained readable beside wholesale outliers.

Business value

Use the patterns to plan, segment and investigate.

Recommended next steps

Plan stock and staffing around the stronger final quarter, separate service codes from merchandise reporting, segment small and high-value orders, and investigate repeatable demand in leading international markets. A future version could add returns, margin data, RFM analysis and a deployed browser dashboard.

Technology used

Next case study

AI Waste Classification →