This repository contains Part 1 of the D2C Customer Churn Intelligence & Retention API Capstone Project.
The goal of this part is to audit the raw data, perform exploratory analysis, and convert findings into actionable business hypotheses — before any machine learning model is built.
d2c-churn-part1-eda-audit/
├── eda_audit.ipynb # Full EDA notebook (data loading → churn hypotheses)
├── data_quality_report.md # Data quality issues and treatment recommendations
├── business_memo.md # Business-facing memo: what to investigate before campaigns
├── run_eda_code.py # Standalone Python script that generates all charts/tables
├── outputs/
│ ├── charts/ # All saved chart PNGs (6 charts)
│ └── tables/ # CSV exports (missing, duplicate, outlier reports)
├── requirements.txt
└── README.md
Place the downloaded dataset files in a folder named dataset/ one level above this repository (i.e., ../dataset/), or adjust RAW_DIR in the notebook/script.
| File | Description |
|---|---|
customers.csv |
Customer demographics and profile |
orders.csv |
Order-level transaction history |
support_tickets.csv |
Customer support interactions |
web_events_snapshot.csv |
30-day web/app activity snapshot |
churn_labels.csv |
Binary churn label for the next 60 days |
intervention_history.csv |
Campaign/retention intervention history |
rfm_modeling_snapshot.csv |
Pre-computed modeling snapshot |
pip install -r requirements.txtpython run_eda_code.pyjupyter notebook eda_audit.ipynb| Chart | What It Shows |
|---|---|
churn_dist.png |
Overall churn rate distribution |
churn_by_loyalty.png |
Churn rate by loyalty tier |
churn_by_age.png |
Churn rate by age group |
spend_dist.png |
Distribution of total customer spend |
tickets_vs_churn.png |
Support ticket count vs. churn |
carts_vs_churn.png |
Abandoned carts vs. churn |
missing_report.csv– Missing values per column per tableduplicate_report.csv– Duplicate row counts per tableoutlier_report.csv– IQR-based outlier counts per numeric column
- Loyalty Tier – Customers with no loyalty tier have significantly higher churn rates.
- Age Group – Younger customers (18–24) churn at a higher baseline rate.
- Support Tickets – Customers with multiple recent support tickets show elevated churn.
- Abandoned Carts – High abandoned-cart counts signal friction at checkout and predict churn.
- Low Spend / Infrequent Buyers – Customers with low lifetime spend have not formed a purchasing habit.
See eda_audit.ipynb for full evidence (charts, tables, and statistical support) behind each hypothesis.
The order_date > 2025-09-30 data and the churn_next_60d label column are excluded from all feature analysis. Only pre-snapshot data was used for EDA patterns.