Identifying who leaves the bank and why, and finding the customer groups with high churn and possible factors associated with it.
This project analyzes churn across 10,000 bank customers. I built an interactive Power BI dashboard to identify customer groups with unusually high churn rates and explore the factors associated with churn.
Main finding: The overall churn rate is 20.4%, but churn varies significantly across customer segments. The highest rates appear among customers aged 51–60, customers in Germany, customers with 3+ products, and inactive members.
KPI cards, four churn analysis charts each with a 20.4% baseline reference line, and slicers for geography, age band, gender, activity, and card type.
The report is fully interactive — clicking any bar or slicer recalculates every visual through Power BI's filter context. A few example views:
![]() |
Age 51–60 drilled in — the highest-risk segment, churn 56.2% |
![]() |
Spain selected — a low-churn market at 16.7% |
![]() |
Inactive members in Germany + Spain — churn climbs to 32.6% |
Dashboard.mp4
A short screen-recorded demo of the dashboard in action — filtering by segment and reading the churn drivers live.
-
What is the overall churn rate, and how many customers have churned?
-
Which customer segments have the highest churn rates?
-
Which customer characteristics are associated with higher churn?
-
Which customer groups should be investigated further for potential retention efforts?
| Rows | 10,000 customers (one row each) |
| Columns | 18 |
| Markets | France, Germany, Spain |
| Target | Exited (1 = churned, 0 = retained) |
| Quality | No missing values, no duplicates |
Key fields: CreditScore, Geography, Gender, Age, Tenure, Balance, NumOfProducts, IsActiveMember, Card Type, Exited.
Power BI Desktop · Power Query (ETL / data shaping) · DAX (measures) · Data modeling · Dashboard design ·
1. Data audit — Checked all 18 columns for missing values, duplicates, data types, ranges, and formatting. No missing values or duplicate customer records were found. I also identified a potential leakage issue in the Complain field.
2. Data preparation (Power Query) — Removed fields not needed for analysis (such as RowNumber and Surname), corrected data types, converted binary indicators into readable labels, and created a new Age Band column for segment analysis.
3. Data modeling — Kept a single-table model because each row represents one customer and the dataset does not require multiple fact or dimension tables. I also created a separate measures table and updated field properties where needed.
4. DAX measures — Wrote reusable measures driven by filter context:
Total Customers = DISTINCTCOUNT('Customer-Churn-Records'[CustomerId])
Churned Customers =
CALCULATE([Total Customers], 'Customer-Churn-Records'[Exited] = 1)
Churn Rate = DIVIDE([Churned Customers], [Total Customers])
5. Dashboard design — KPI cards, four driver charts with a 20.4% baseline reference line, color used only to encode meaning (red = above baseline).
6. Insights & recommendations — Compared segment-level churn rates with the 20.4% overall baseline and summarized the main findings and areas for further investigation. (see below).
The Complain field showed an unusually strong relationship with Exited: using it resulted in approximately 99.9% accuracy. Because such a near-perfect relationship may indicate target leakage, I excluded Complain from the churn-factor analysis rather than treating it as a meaningful churn predictor.
All rates are compared against the 20.4% overall baseline.
| Driver | Finding | Evidence |
|---|---|---|
| Age | Customers aged 51–60 have the highest churn rate | 7.5% (18–30) → 56.2% (51–60) |
| Geography | Germany has the highest churn rate | 32.4% vs. 16.2% (FR) / 16.7% (ES) |
| Products | Customers with 3+ products show unusually high churn | 2 products 7.6% → 3: 82.7%, 4: 100% |
| Activity | Inactive members have higher churn | 26.9% vs. 14.3% active |
| Gender | Female customers have a higher churn rate | 25.1% vs. 16.5% male |
- Launch a retention program for clients aged 50+ — this group has the highest observed churn rate and should be examined further to understand what is driving the difference.
- Investigate the higher churn rate in Germany — compare pricing, customer service, product mix, and competitive conditions with France and Spain.
- Investigate customers with 3+ products — their unusually high churn rate may be related to product combinations, pricing, customer needs, or the sales process.
- Test re-engagement strategies for inactive customers — inactive members have a substantially higher churn rate than active members.
- Analyze the gender gap further — check whether the higher churn rate among female customers remains after controlling for age, geography, activity, and number of products.
- The data is a single snapshot with no dates, which means we cannot track trends, exact timing, or how long customers usually stay.
- The findings show associations, not causal relationships. The high churn rates in Germany and among customers with 3+ products require further investigation.
- Additional data such as event timestamps, product purchase dates, transaction history, and customer profitability would allow deeper analysis of churn timing and customer value.
├── README.md # This case study
├── Customer-Churn-Records.csv # Source data (10,000 rows)
├── Bank_Customer_Churn.pbix # Power BI dashboard file
├── Dashboard.mp4 # Dashboard walkthrough video
└── images/
├── dashboard.png # Full dashboard (unfiltered)
├── dashboard_1.png # Filtered: inactive, Germany + Spain
├── dashboard_2.png # Filtered: age 51–60
└── dashboard_4.png # Filtered: Spain



