Olist, revisited.
From source tables to decision ready evidence.
A follow on to our team’s Power BI project. I rebuilt the analysis in Python from the cleaned workbook so anyone can explore orders, delivery timing, product categories and customer geography in the browser.
My part. I shared responsibilities on the original MSc team Power BI report. I independently built this Python rebuild, its tests and this interactive dashboard as my own follow on work.
View the original MSc team project case study ↗What the data shows
- November 2017 was busiest with 7,451 orders; 14.3% of eligible deliveries arrived after estimate, versus 8.1% overall.
- Among months with at least 500 eligible deliveries, March 2018 had the highest after estimate rate at 21.4%, 2.6 times the overall rate.
- Among the ten shown states, Bahia had the highest after estimate rate at 14%, versus Paraná at 5%, the lowest.
Descriptive patterns only; they show where to look, not why it happened.
How did the pattern change over time?
A month is assigned by purchase date. The data begin and end with sparsely populated months; do not treat those edges as full trading periods. Delivery comparisons use only delivered orders with both delivery and estimated dates, and monthly rates are not shown for months with fewer than 100 eligible deliveries.
Which categories carry item value?
Sum of listed item prices by the translated product category. Multi item orders contribute to each applicable category.
Other categories combined: R$6m. The eight individually displayed categories were selected by total item value across the workbook, not selected again to flatter a year.
Where are orders and delayed deliveries concentrated?
Top ten Brazilian states by order volume in the entire dataset. Grouping uses customer state, not seller state. Differences are descriptive and are not evidence of root causes or operational intervention.
How this was built. Calculated independently in Python from the team’s Olist Dataset Clean v3.xlsx workbook: eight worksheets containing 98,582 unique order records and 110,929 order item rows. It complements the original MSc Power BI report rather than reproducing its pages.
Values in Brazilian reais (R$). Item value is the sum of listed item prices, not payment, realised revenue or margin. A late order means delivered strictly after its estimated date; cancelled or undelivered orders do not enter the rate. Scores are averaged over available order reviews; no causal effects or achieved business savings are claimed. Only aggregate counts and values are published; no raw customer, order, address or seller records.
Data quality decisions: 1,389 orders have no item rows and are excluded from the mean item priced order. The 50,000 row geolocation sheet has 1,919 unique postal prefixes and is deliberately excluded from joins to prevent multiplying orders. The missing payments worksheet means the page does not claim actual sales or profitability.
What I would test next
A dashboard points to a question; it does not answer why.
Add the payments table to compare delivery performance with order value; break the March 2018 delivery pattern down by seller, carrier and location; then test whether late deliveries lower review scores. The rates shown here are descriptive, so the next step is to find the drivers behind them.
Back to selected work ↗