Building an Interactive Excel Dashboard for E-commerce Product Analysis: A Case Study of Jumia Products
Wendy OchiengDev.to (EN Zone)
1 views
Introduction & Objective
E-commerce platforms generate a constant stream of pricing, promotion, and customer-feedback data. But raw data on its own doesn't tell a seller anything useful. For this project, I
built an interactive Excel dashboard using a Jumia product dataset to answer a set of
practical business questions:
Are larger discounts associated with more customer reviews?
Do highly rated products attract stronger engagement?
Do price and rating move together?
Which products are performing best, and which need a different pricing or marketing
strategy?
Importantly, this dataset doesn't include units sold or revenue, so review count was used
throughout as a proxy for customer engagement and not as a stand-in for sales. That distinction
mattered for how I framed every insight later in the project.
Dataset Description
The source file, Excel_jumia_dataset.csv, contained the following fields:
Field
Meaning
Expected type
Product
Product name
Text
Current price
Selling price (KSh)
Number/currency
Old price
Price before discount (KSh)
Number/currency
Discount
Advertised % discount
Percentage
Review
Number of customer reviews
Whole number
Ratingd (sic)
Average rating out of 5
Decimal
Before touching anything, I ran a data-quality audit and found several issues typical of
scraped e-commerce data: a ## Introduction & Objective
E-commerce platforms generate a constant stream of pricing, promotion, and customer-feedback data. But raw data on its own doesn't tell a seller anything useful. For this project, I
built an interactive Excel dashboard using a Jumia product dataset to answer a set of
practical business questions:
Are larger discounts associated with more customer reviews?
Do highly rated products attract stronger engagement?
Do price and rating move together?
Which products are performing best, and which need a different pricing or marketing
strategy?
Importantly, this dataset doesn't include units sold or revenue, so review count was used
throughout as a proxy for customer engagement and not as a stand-in for sales. That distinction
mattered for how I framed every insight later in the project.
Dataset Description
The source file, Excel_jumia_dataset.csv, contained the following fields:
Field
Meaning
Expected type
Product
Product name
Text
Current price
Selling price (KSh)
Number/currency
Old price
Price before discount (KSh)
Number/currency
Discount
Advertised % discount
Percentage
Review
Number of customer reviews
Whole number
Ratingd (sic)
Average rating out of 5
Decimal
Before touching anything, I ran a data-quality audit and found several issues typical of
scraped e-commerce data: misspelled header (Ratingd), blank cells in the review and
rating columns, negative review counts, at least one price expressed as a range instead of a
single number, and duplicate rows.
Data Cleaning & Preparation
I kept Raw_Data completely untouched as a permanent reference and did all cleaning in a
duplicated query, using Power Query for the transformations (with a few native Excel
formulas where they were simpler).
Key cleaning decisions, all logged in a Data_Dictionary sheet with an Issue → Rows
Affected → Decision → Reason structure:
Header fix: Ratingd renamed to Rating.
Currency cleanup: Stripped "KSh" and thousands-separator commas from price fields, then converted to Decimal Number.
Price range: One row contained a range (e.g. "1620 - 1980") instead of a single price.
Rather than deleting or guessing, I used the midpoint — (1620+1980)/2 = 1800 — and
documented the original value and decision in the cleaning log.
Discount: Power Query correctly auto-typed this column as Percentage, so no extra /100 conversion was needed.
Negative reviews: Treated the negative sign as a scraping artifact and converted to
absolute values.
Missing values: Left genuinely blank ratings/reviews as blank rather than assuming zero or imputing an average.
Duplicates: Removed only rows that matched exactly across all relevant fields, so that legitimate same-name listings with different prices or feedback weren't accidentally dropped.
After cleaning, I ran validation formulas directly on the Excel Table (tblProducts) to catch
anything that slipped through:
=IF(OR([@Rating]<0,[@Rating]>5),"Check rating","OK")
=IF(OR([@Discount]<0,[@Discount]>1),"Check discount","OK")
=IF([@[Current Price]]>[@[Old Price]],"Check prices","OK")
Excel Techniques, Formulas & Analysis
With clean data in place, I enriched the table with derived fields and category flags, all
using fixed, stated thresholds rather than subjective judgment calls, so any result could
be reproduced by rerunning the same formulas:
Discount amount
=[@[Old Price]]-[@[Current Price]]
Rating category (Poor <3, Average 3–4.5, Excellent >4.5)
=IF([@Rating]="","Missing",IF([@Rating]<3,"Poor",IF([@Rating]<=4.5,"Average","Excellent")))
Discount category (Low <20%, Medium 20–40%, High >40%)
=IF([@Discount]="","Missing",IF([@Discount]<20%,"Low Discount",IF([@Discount]<=40%,"Medium Discount","High Discount")))
Price category, based on quartiles rather than arbitrary cutoffs:
Price_Q1 = QUARTILE.INC(tblProducts[Current Price],1)
Price_Q3 = QUARTILE.INC(tblProducts[Current Price],3)
=IF([@[Current Price]]="","Missing",IF([@[Current Price]]<=Price_Q1,"Low Price",IF([@[Current Price]]<=Price_Q3,"Medium Price","High Price")))
Engagement threshold, defined as the 75th percentile of review counts:
=PERCENTILE.INC(tblProducts[Review],0.75)
From there, I built four flag columns to surface specific, actionable product segments:
High Discount + Poor Rating. Discounting isn't fixing an underlying quality problem
High Discount + Weak Engagement. the discount isn't converting into visibility
Strong Engagement + Average Rating. popular but not loved, room for improvement
Strong Engagement + Excellent Rating. the benchmark performers worth promoting further
Correlation analysis
I tested three relationships using CORREL() and matching scatter plots with trendlines:
Relationship
Correlation (r)
R²
Discount vs. Reviews
-0.14
0.02
Rating vs. Reviews
0.06
0.00
Price vs. Rating
0.11
0.01
All three came back weak. It means price,
discount, and rating don't strongly predict customer engagement in this dataset, at least not in a simple linear way.
Ranked tables
I used SORT, FILTER, and LARGE to build ranked views: top/bottom 5 by rating, top 10 by
discount, top 10 by reviews, top 10 by rating, and lists of flagged products pulled directly
from the flag columns using FILTER().
Dashboard Creation Process
The dashboard sits on a single sheet, laid out to be readable without scrolling:
Title + Slicers
KPI cards (Total Products, Avg Price, Avg Discount, Avg Rating, Total Reviews)
Top 10 tables (by Rating, Reviews, Discount)
Scatter charts (Discount vs Reviews, Rating vs Reviews, Price vs Rating)
Mix charts (Rating Mix, Discount Mix) + Key Insights
A few build details worth mentioning:
I used rounded rectangle shapes for the KPI cards rather than plain cells, aligned and
distributed evenly via Excel's Align tools.
Each KPI number is linked live to its source cell (via the Formula Bar, e.g.
=Analysis!B2), rather than typed in manually — so the dashboard updates automatically if the
underlying data changes.
Three slicers (Rating Category, Discount Category, Price Category) are connected to every
relevant PivotTable and PivotChart via Report Connections, and tested individually and in
combination.
Formatting followed a consistent standard throughout: KSh on prices, % on discounts, one
decimal on ratings, thousands separators on reviews, no 3-D charts, and horizontal bars where
product names were too long for vertical labels.
A small note box on the dashboard documents the category thresholds, and how missing values were handled.
Key Insights & Business Recommendations
Discount vs. reviews (r = -0.14, R² = 0.02): No meaningful relationship. Sellers shouldn't rely on deeper discounts alone to drive engagement other levers like listing quality, placement, or timing likely matter more.
Rating vs. reviews (r = 0.06, R² = 0.00): Essentially no relationship. A high rating alone doesn't appear to boost visibility; category demand and listing age may play a bigger role.
Price vs. rating (r = 0.11, R² = 0.01): Very weak positive relationship. Price shouldn't be treated as a proxy for perceived quality in pricing decisions.
High discount, low rating products: A specific subset of products combine heavy discounting with poor ratings. These are stronger candidates for a quality or listing review than for further price cuts.
Strong engagement, excellent rating products: These are the benchmark performers worth using as templates (pricing, description style, imagery) for underperforming listings in the same category.
A caveat that applies to every finding above: correlation is not causation. None of these
relationships account for factors the dataset doesn't capture such as listing age, category,
visibility, or promotional placement so they should inform further investigation, not stand
alone as proof of what's driving performance.
Wrap-up
This project reinforced something that's easy to forget when a dashboard looks polished: weak
correlations are still a real, useful finding and not a failed analysis. The value here wasn't in
forcing a dramatic story out of the data, but in cleaning it rigorously, documenting every
decision, and being honest about what the numbers do and don't support.
The full workbook, dataset, and dashboard screenshots are available in my GitHub repo linked
below.
🔗 [https://github.com/ochiengwendy21-gif/jumia-product-performance-dashboard]
Been thinking about this after looking at different Discord alternatives. A lot of projects advertise themselves as open source but the community still ends up depending on infrastructure controlled by someone else. You can inspect the code or fork it but if moving your members, permissions, data an
You want high-quality connected speakers for your home without depending on shitty apps that stop working in a year? You want to stream from your own hardware and control everything with Free Software? Then this article is for you! I wrote a blog post on my audio setup! Quite happy with the result.
The Setup
The dataset: 112 products scraped from Jumia Kenya, with fields for current price, old price, discount percentage, review count, and customer rating. The goal was to clean it, analyze it, and turn it into an interactive Excel dashboard — the kind with slicers and pivot charts, not just s