Olist Brazilian E-Commerce — EDA + SQL Analysis Exploratory data analysis and SQL querying of the Olist Brazilian E-Commerce dataset from Kaggle. Project 2 — Ironhack Data Science & ML Bootcamp (2026)
Overview The Olist dataset contains 100,000+ real orders placed between 2016 and 2018 across multiple Brazilian marketplaces. It spans 8 relational tables covering orders, customers, products, sellers, payments, reviews, and geolocation. This project combines Python for data cleaning and visualization with SQLite for business querying.
Business Questions #QuestionTypeQ1What is the distribution of order prices?UnivariateQ2What are the most popular product categories?UnivariateQ3What is the order volume by day of week?UnivariateQ4What is the most common payment method?UnivariateQ5Is there a correlation between product weight and shipping cost?BivariateQ6Do customers who spend more give higher or lower review scores?BivariateQ7What is the total revenue generated per Brazilian state?BivariateQ8What is the average delivery time per state?BivariateQ9Which cities have the highest average spending per customer?BivariateQ10What is the average difference between estimated and actual delivery date?Bivariate
Key Findings
Customers who gave 1-star reviews spent more on average than those who gave 5 stars — higher spend correlates with higher expectations, not higher satisfaction. Deliveries arrived earlier than estimated in every single state — Olist was consistently under-promising and over-delivering on logistics. São Paulo dominates revenue, accounting for roughly 3x the second-highest state (RJ). Credit card is the dominant payment method by a large margin (~75% of orders). Most orders happen on weekdays, with Saturday being the lowest volume day.
Data Structure
- Python — Pandas, Matplotlib, Seaborn
- SQL — SQLite (via Python
sqlite3) - Jupyter Notebook
├── olist_analysys.ipynb # Main notebook
├── olist_sql.sql # All 10 business queries, commented
├── olist_presentation_v2.pptx # Project presentation slides
├── screenshots/ # Chart exports used in presentation
└── .gitignore
How to Run
Download the Olist dataset from Kaggle and place the CSV files in the project root. Open olist_analysys.ipynb in Jupyter Notebook. Run all cells — the notebook loads the CSVs, performs EDA, and loads the data into a local SQLite database. The SQL queries in olist_sql.sql can be run against the generated .db file.