Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏦 Bank Customer Churn Analysis — Power BI

Identifying who leaves the bank and why, and finding the customer groups with high churn and possible factors associated with it.

Tool Language Type


📌 Overview

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.


🖼️ Dashboard

Bank Customer Churn Dashboard

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.

🔀 Interactive filtering

The report is fully interactive — clicking any bar or slicer recalculates every visual through Power BI's filter context. A few example views:

51–60 age band Age 51–60 drilled in — the highest-risk segment, churn 56.2%
Spain selected Spain selected — a low-churn market at 16.7%
Inactive members in Germany and Spain Inactive members in Germany + Spain — churn climbs to 32.6%

🎬 Demo walkthrough

Dashboard.mp4

A short screen-recorded demo of the dashboard in action — filtering by segment and reading the churn drivers live.


🎯 Business questions

  • 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?


🗂️ Dataset

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.


🛠️ Tools & skills

Power BI Desktop · Power Query (ETL / data shaping) · DAX (measures) · Data modeling · Dashboard design ·


🔎 Process

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).


🧠 Potential data leakage

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.


📈 Key findings

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

✅ Recommendations

  1. 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.
  2. Investigate the higher churn rate in Germany — compare pricing, customer service, product mix, and competitive conditions with France and Spain.
  3. Investigate customers with 3+ products — their unusually high churn rate may be related to product combinations, pricing, customer needs, or the sales process.
  4. Test re-engagement strategies for inactive customers — inactive members have a substantially higher churn rate than active members.
  5. 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.

⚠️ Limitations

  • 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.

📁 Repository structure

├── 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

About

Power BI analysis of customer churn across 10,000 bank customers, including data preparation, DAX measures, interactive segmentation, and churn analysis.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors