Your One-Stop Online Marketplace
A full data pipeline project: from raw messy data to an interactive business dashboard.
ShopNile is a comprehensive data analysis project for a fictional online marketplace. It covers the full data pipeline β from raw messy data to a fully interactive business dashboard β demonstrating real-world skills in data cleaning, transformation, and visualization.
ShopNile/
β
βββ raw_data/
β βββ customers_messy.csv
β βββ orders_messy.csv
β βββ payments_messy.csv
β βββ products_messy.csv
β
βββ clean_data/
β βββ Customers_Clean.csv
β βββ Orders_Clean.csv
β βββ Payments_Clean.csv
β βββ Products_Clean.csv
β
βββ ShopNile_Cleaning.ipynb # Data cleaning pipeline
βββ ShopNile_Analysis.py # Streamlit dashboard
βββ ShopNile_Logo.png
The project follows a Star Schema:
| Table | Type | Key Column | Records |
|---|---|---|---|
| Customers_Clean | Dimension | customer_id |
500 |
| Products_Clean | Dimension | product_id |
120 |
| Orders_Clean | Fact | order_id |
3,000 |
| Payments_Clean | Fact | order_id |
3,050 |
Relationships:
OrdersβCustomersviacustomer_idOrdersβProductsviaproduct_idOrdersβPaymentsviaorder_id
Key cleaning steps applied to all four raw datasets:
- β Removed duplicate rows and fixed inconsistent primary/foreign keys
- β Handled missing values through imputation or removal
- β Standardized date formats across all date columns
- β Corrected data type mismatches (e.g. numeric fields stored as strings)
- β Fixed invalid categorical values (e.g. payment status, city names)
- β Removed/capped outliers in numeric columns (price, amount_paid, income)
- β Normalized text fields (name casing, trimming whitespace)
Built with Streamlit and Plotly Express.
| Metric | Description |
|---|---|
| π° Total Revenue | Sum of all payments |
| π¦ Total Orders | Count of unique orders |
| π₯ Total Customers | Count of unique customers |
| Chart | Type | Description |
|---|---|---|
| Sales by Category | Pie Chart | Revenue breakdown across product categories |
| Sales by City | Bar Chart | Revenue ranked by customer city |
| Sales by Payment Method | Pie Chart | Revenue split by payment method |
| Sales Over Time | Line Chart | Quarterly revenue trend |
| Top 10 Products | Bar Chart | Highest-revenue products by name |
- π½ Category Slicer β filters all charts and KPIs by product category
| Tool | Purpose |
|---|---|
| Python 3 | Core programming language |
| Pandas | Data manipulation and cleaning |
| Jupyter Notebook | Interactive data cleaning documentation |
| Streamlit | Web-based dashboard framework |
| Plotly Express | Interactive chart rendering |
1. Install dependencies
pip install streamlit pandas plotly2. Place the clean CSV files inside a folder named clean_data/
3. Run the dashboard
streamlit run ShopNile_Analysis.py4. Open your browser and go to β http://localhost:8501
| Column | Table | Description |
|---|---|---|
customer_id |
Customers | Unique customer identifier |
name, age, city |
Customers | Customer demographics |
signup_date, income |
Customers | Registration and financial info |
product_id |
Products | Unique product identifier |
product_name, category |
Products | Product details |
price, stock |
Products | Pricing and inventory |
order_id |
Orders | Unique order identifier |
quantity, discount |
Orders | Order details |
order_date, payment_method |
Orders | Transaction info |
amount_paid, payment_status |
Payments | Payment details |
https://shopnile-analysis-using-python-h9bbtrwmjconbq49mfkc8f.streamlit.app
ShopNile β Data Analysis Portfolio Project