Before starting the assignment, we prepared the Python environment.
pandas → For dataset loading and manipulationpip install pandastabulate → For displaying tables in a clean, grid formatpip install tabulateos may be used for file checking, but no extra installation required).Step 1: Import Libraries
import pandas as pd
from tabulate import tabulate
Project: E-Commerce Recommendation System
Dataset: Ecommerce Customer Service Satisfaction (source:
Kaggle)
| Dataset Name | Total Rows | Total Columns |
|---|---|---|
| Customer_support_data | 85,907 | 20 |
Source: Kaggle — customer support / CSAT dataset used for satisfaction analysis and recommendation experiments.
| Column Name | Description |
|---|---|
| Unique id | Unique record identifier (UUID) |
| channel_name | Contact channel (Inbound, Outcall, Email, etc.) |
| category | High-level issue category |
| Sub-category | Sub-category or more specific issue type |
| Customer Remarks | Free-text remarks / customer comments |
| Order_id | Order identifier related to the issue (if applicable) |
| order_date_time | Date/time of order placement |
| Issue_reported at | Timestamp when issue was reported |
| issue_responded | Timestamp when agent responded |
| Survey_response_Date | Date when customer submitted the CSAT survey |
| Customer_City | City of the customer (if provided) |
| Product_category | Product category associated with the ticket |
| Item_price | Price of the item (if available) |
| connected_handling_time | Call/chat handling duration (seconds/mins) |
| Agent_name | Name of the handling agent |
| Supervisor | Supervisor overseeing the agent |
| Manager | Manager in chain of command |
| Tenure Bucket | Agent tenure category (e.g., 0-30, >90) |
| Agent Shift | Shift of the agent (Morning/Evening/Split) |
| CSAT Score | Customer satisfaction score (e.g., 1–5) |
| S.No. | Unique id | channel_name | category | Sub-category | Customer Remarks | Order_id | order_date_time | Issue_reported at | issue_responded | Survey_response_Date | Customer_City | Product_category | Item_price | connected_handling_time | Agent_name | Supervisor | Manager | Tenure Bucket | Agent Shift | CSAT Score |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 7e9ae164-6a8b-4521-a2d4-58f7c9fff13f | Outcall | Product Queries | Life Insurance | nan | c27c9bb4-fa36-4140-9f1f-21009254ffdb | nan | 01/08/2023 11:13 | 01/08/2023 11:47 | 01-Aug-23 | nan | nan | nan | nan | Richard Buchanan | Mason Gupta | Jennifer Nguyen | On Job Training | Morning | 5 |
| 2 | b07ec1b0-f376-43b6-86df-ec03da3b2e16 | Outcall | Product Queries | Product Specific Information | nan | d406b0c7-ce17-4654-b9de-f08d421254bd | nan | 01/08/2023 12:52 | 01/08/2023 12:54 | 01-Aug-23 | nan | nan | nan | nan | Vicki Collins | Dylan Kim | Michael Lee | >90 | Morning | 5 |
| 3 | 200814dd-27c7-4149-ba2b-bd3af3092880 | Inbound | Order Related | Installation/demo | nan | c273368d-b961-44cb-beaf-62d6fd6c00d5 | nan | 01/08/2023 20:16 | 01/08/2023 20:38 | 01-Aug-23 | nan | nan | nan | nan | Duane Norman | Jackson Park | William Kim | On Job Training | Evening | 5 |
| 4 | eb0d3e53-c1ca-42d3-8486-e42c8d622135 | Inbound | Returns | Reverse Pickup Enquiry | nan | 5aed0059-55a4-4ec6-bb54-97942092020a | nan | 01/08/2023 20:56 | 01/08/2023 21:16 | 01-Aug-23 | nan | nan | nan | nan | Patrick Flores | Olivia Wang | John Smith | >90 | Evening | 5 |
| 5 | ba903143-1e54-406c-b969-46c52f92e5df | Inbound | Cancellation | Not Needed | nan | e8bed5a9-6933-4aff-9dc6-ccefd7dcde59 | nan | 01/08/2023 10:30 | 01/08/2023 10:32 | 01-Aug-23 | nan | nan | nan | nan | Christopher Sanchez | Austin Johnson | Michael Lee | 0-30 | Morning | 5 |
| 6 | 1cfde5b9-6112-44fc-8f3b-892196137a62 | Returns | Fraudulent User | nan | a2938961-2833-45f1-83d6-678d9555c603 | nan | 01/08/2023 15:13 | 01/08/2023 18:39 | 01-Aug-23 | nan | nan | nan | nan | Desiree Newton | Emma Park | John Smith | 0-30 | Morning | 5 | |
| 7 | 11a3ffd8-1d6b-4806-b198-c60b5934c9bc | Outcall | Product Queries | Product Specific Information | nan | bfcb562b-9a2f-4cca-aa79-fd4e2952f901 | nan | 01/08/2023 15:31 | 01/08/2023 23:52 | 01-Aug-23 | nan | nan | nan | nan | Shannon Hicks | Aiden Patel | Olivia Tan | >90 | Morning | 5 |
| 8 | 372b51a5-fa19-4a31-a4b8-a21de117d75e | Inbound | Returns | Exchange / Replacement | Very good | 88537e0b-5ffa-43f9-bbe2-fe57a0f4e4ae | nan | 01/08/2023 16:17 | 01/08/2023 16:23 | 01-Aug-23 | nan | nan | nan | nan | Laura Smith | Evelyn Kimura | Jennifer Nguyen | On Job Training | Evening | 5 |
| 9 | 6e4413db-4e16-42fc-ac92-2f402e3df03c | Inbound | Returns | Missing | Shopzilla app and it's all coustomer care services is very good service provided all time | e6be9713-13c3-493c-8a91-2137cbbfa7e6 | nan | 01/08/2023 21:03 | 01/08/2023 21:07 | 01-Aug-23 | nan | nan | nan | nan | David Smith | Nathan Patel | John Smith | >90 | Split | 5 |
| 10 | b0a65350-64a5-4603-8b9a-a24a4a145d08 | Inbound | Shopzilla Related | General Enquiry | nan | c7caa804-2525-499e-b202-4c781cb68974 | nan | 01/08/2023 23:31 | 01/08/2023 23:36 | 01-Aug-23 | nan | nan | nan | nan | Tabitha Ayala | Amelia Tanaka | Michael Lee | 31-60 | Evening | 5 |
Note: many columns contain nan because those fields are empty in the raw export.
| Column Name | Missing Values |
|---|---|
| Unique id | 0 |
| channel_name | 0 |
| category | 0 |
| Sub-category | 0 |
| Customer Remarks | 57,165 |
| Order_id | 18,232 |
| order_date_time | 68,693 |
| Issue_reported at | 0 |
| issue_responded | 0 |
| Survey_response_Date | 0 |
| Customer_City | 68,828 |
| Product_category | 68,711 |
| Item_price | 68,701 |
| connected_handling_time | 85,665 |
| Agent_name | 0 |
| Supervisor | 0 |
| Manager | 0 |
| Tenure Bucket | 0 |
| Agent Shift | 0 |
| CSAT Score | 0 |
| Total Rows | Total Columns | Duplicate Rows | Missing Cells | Numeric Columns | Categorical Columns |
|---|---|---|---|---|---|
| 85,907 | 20 | 0 | 435,995 | 3 | 17 |
Milestone: dataset loaded and explored. Next step: data cleaning (handle missing values, convert types, deduplicate, and prepare for modeling).