Customer Churn Dataset
This ready-made customer churn dataset provides a sample of 1000 rows for analysis. It includes detailed customer demographics, subscription information, and usage patterns, suitable for intermediate ML practitioners. The full dataset download requires credits.
At a glance
- 3tables
- 43,116rows
- 28columns
- Jan 2018 – Jun 2024date range
The 3 tables
preview and data dictionary per tableCustomers customers · table · 5,000 rows
Contains demographic and account information for 5,000 customers.
Preview
| customer_iduuid | first_namestring | last_namestring | emailstring | genderstring | ageinteger | citystring | statestring | countrystring | signup_datedate | last_activity_datedate | customer_segmentstring |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 981e3fb5-af2e-44fc-9776-2078869392bd | David | Smith | [email protected] | Male | 21 | Austin | Texas | USA | 2018-05-27 | 2018-11-17 | Young Adult |
| 3c8899e0-9c93-48a6-a83c-a8ff766dd45b | Olivia | Sullivan | [email protected] | Female | 26 | Portland | Oregon | USA | 2023-05-07 | 2023-09-11 | Young Adult |
| 77185056-00b9-40b4-ae7e-ac1c7c39940f | Michael | Scott | [email protected] | Male | 29 | Denver | Colorado | USA | 2023-11-02 | 2024-02-03 | Young Adult |
| cd8fd331-d12b-4221-b1cc-de43181ed302 | Olivia | Stewart | [email protected] | Female | 24 | Atlanta | Georgia | USA | 2020-09-12 | 2022-12-23 | Young Adult |
| 542ef5e2-8a51-4e7b-ab6a-dc0e09717a83 | Ava | Stone | [email protected] | Female | 25 | Seattle | Washington | USA | 2021-12-26 | 2023-03-17 | Young Adult |
| ea6c683e-0e10-4112-b616-7b25286b527b | James | Spencer | [email protected] | Male | 22 | Phoenix | Arizona | USA | 2022-03-25 | 2023-06-02 | Young Adult |
| fc446a3e-a045-4515-829e-8ac84e442a94 | Ethan | Simpson | [email protected] | Male | 26 | Boston | Massachusetts | USA | 2023-03-09 | 2024-02-18 | Young Adult |
| afa4fc8d-8ff0-462e-af45-df40b177d81b | Isabella | Stevens | [email protected] | Male | 18 | Miami | Florida | USA | 2020-07-28 | 2020-09-16 | Young Adult |
| f8d72bf6-321e-4cda-b8b5-463f22c2894b | Noah | Sharp | [email protected] | Female | 29 | Raleigh | North Carolina | USA | 2023-09-28 | 2024-06-17 | Young Adult |
| be5890a1-d53d-4ec7-bd71-63bfdd2c2d1a | Emma | Simon | [email protected] | Male | 26 | Chicago | Illinois | USA | 2023-12-20 | 2024-06-26 | Young Adult |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
customer_ | uuid | Unique identifier for the telecom customer.unique | 981e3fb5-af2e-44fc-9776-2078869392bd | 0% |
first_ | string | Customer's first name. | David | 0% |
last_ | string | Customer's last name or surname. | Smith | 0% |
email | string | Unique contact email address of the customer.unique | [email protected] | 0% |
gender | string | Gender identity of the customer. | Male | 0% |
age | integer | Customer's age in years, ranging from 18 to 80. | 21 | 0% |
city | string | City of residence in the United States. | Austin | 0% |
state | string | US state corresponding to the customer's residence. | Texas | 0% |
country | string | Country of residence. | USA | 0% |
signup_ | date | Date when customer established account with the telecom provider. | 2018-05-27 | 0% |
last_ | date | Most recent recorded customer account activity. | 2018-11-17 | 0% |
customer_ | string | Marketing and behavioral demographic segment. | Young Adult | 0% |
Subscriptions subscriptions · fact table · 7,112 rows
Details of 7,112 subscription plans, including status and charges.
Preview
| subscription_iduuid | plan_typestring | start_datedate | end_datedate | statusstring | monthly_chargedecimal | total_chargesdecimal | payment_methodstring | churn_labelstring | customer_iduuid |
|---|---|---|---|---|---|---|---|---|---|
| 3dfd0a83-68b6-4bf9-9e55-befa5fce7528 | Standard | 2023-05-31 | blank | active | 63.9 | 863.35 | Electronic Check | no | 40a06274-f677-4114-9aeb-7cc3e80978f6 |
| ea8959b6-7229-4be2-a6fe-8229c492d86f | Premium | 2022-02-13 | blank | active | 105.83 | 2989.26 | Credit Card | no | 3948598e-ff55-4cc9-8cc0-5dfd14989a47 |
| 3ad3df55-07c4-46da-a58c-2221bf095347 | Standard | 2021-10-24 | 2023-06-17 | cancelled | 78.59 | 1515.16 | Electronic Check | yes | 173693bb-d6de-4aa6-8292-368784bcf822 |
| e236000c-ad79-42a3-819c-720fd7b7c662 | Premium | 2020-05-25 | blank | active | 122.88 | 6084.01 | Electronic Check | no | 63876e74-ad2e-4819-bb47-eba950455734 |
| e411de47-0c1c-45c6-9d87-7edf0afa8c1e | Standard | 2023-11-30 | 2024-04-08 | cancelled | 65.7 | 271.44 | Electronic Check | yes | f75d4dfc-0461-4dba-bdef-648dbd5a7e6b |
| 139077ab-5c3a-4547-8ef0-de290ad56536 | Standard | 2023-04-12 | 2023-12-16 | cancelled | 71.3 | 577.29 | Electronic Check | yes | de7667bf-5217-485d-bf17-1cc4bedad1c4 |
| 7853843b-a4b8-4f15-9c3e-a526f691f9a6 | Premium | 2023-12-25 | blank | active | 99.83 | 625.24 | Electronic Check | no | cba4e1d2-ca38-4305-bdef-ca114424bead |
| 0b7820f8-6f7b-4d1c-9f29-68b1e359e802 | Standard | 2022-10-11 | blank | active | 69.87 | 1514.62 | Credit Card | no | aec98c60-72e6-49ab-9de1-bfde9145a251 |
| 5a80cbc8-bf25-4eed-ad1b-5a099cda41e5 | Premium | 2019-02-23 | blank | active | 121.71 | 7911.78 | Electronic Check | no | c2c81146-4e01-40b1-8e42-9fcd024dcb85 |
| f92cccc3-c094-46d3-8b22-f749201a7fcf | Standard | 2023-06-10 | 2024-03-18 | cancelled | 73.98 | 718.81 | Electronic Check | yes | e4b5dacf-f5bc-477c-9961-cc04271942b2 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
subscription_ | uuid | Unique identifier for the subscription record. | 3dfd0a83-68b6-4bf9-9e55-befa5fce7528 | 0% |
plan_ | string | Subscription plan tier determining features and baseline pricing. | Standard | 0% |
start_ | date | Activation date of the subscription. | 2023-05-31 | 0% |
end_ | date | Cancellation or expiration date; null if subscription remains active. | 2023-06-17 | 70.1% |
status | string | Operational lifecycle status of the subscription. | active | 0% |
monthly_ | decimal | Recurring monthly service fee charged for the subscription. | 63.9 | 0% |
total_ | decimal | Cumulative charges accrued across the subscription tenure. | 863.35 | 0% |
payment_ | string | Payment billing instrument selected by the customer. | Electronic Check | 0% |
churn_ | string | Binary churn indicator for machine learning classification. | no | 0% |
customer_ | uuid | Foreign key to customers.customer_id. | 40a06274-f677-4114-9aeb-7cc3e80978f6 | 0% |
Usage data usage_data · fact table · 31,004 rows
One row per single usage record for a subscription.
Preview
| usage_iduuid | usage_datedate | data_usage_gbdecimal | call_duration_minutesdecimal | sms_countinteger | subscription_iduuid |
|---|---|---|---|---|---|
| e77e78dc-c9ad-463a-9667-957968a72d0b | 2024-01-13 | 6.65 | 62.3 | 31 | f92cccc3-c094-46d3-8b22-f749201a7fcf |
| 6356f620-3e75-4ee6-8bb3-f3e9cfa60c30 | 2024-06-07 | 7.47 | 86.5 | 24 | 7853843b-a4b8-4f15-9c3e-a526f691f9a6 |
Data dictionary
| column | type | description | example | null % |
|---|---|---|---|---|
usage_ | uuid | Unique primary identifier for each usage record event or aggregated period. | 375c8839-4a3d-4950-97db-e325aa1cf32b | 0% |
usage_ | date | Date on which the service consumption occurred. | 2024-03-15 | 0% |
data_ | decimal | Cellular and broadband data usage in gigabytes during the recording interval. | 22.79 | 0% |
call_ | decimal | Total duration of outbound voice calls in minutes during the interval. | 158.2 | 0% |
sms_ | integer | Total count of text messages sent during the interval. | 82 | 0% |
subscription_ | uuid | Foreign key to subscriptions.subscription_id. | d73ae7b5-8af7-4d36-ba14-35a8ccd87d25 | 0% |
How the tables join
subscriptions.customer_id references customers.customer_idmany to one: each Subscriptions row points to one Customers rowusage_data.subscription_id references subscriptions.subscription_idmany to one: each Usage data row points to one Subscriptions row
Questions to answer with it
What are the key features that predict customer churn using logistic regression?
Consider features from both customer demographics and subscription details. Look for patterns in plan type, monthly charges, and customer segments.
tables: customers, subscriptions
Is there a correlation between data usage patterns (data_usage_gb, call_duration_minutes) and churn rate?
Join usage data with subscription data and analyze average usage metrics for churned vs. active customers.
tables: customers, subscriptions, usage_data
How does subscription tenure (calculated from start_date and end_date) impact the likelihood of churn?
Calculate the duration between start_date and end_date (or current date if active) for each subscription. Then, group by tenure ranges and observe churn rates.
tables: customers, subscriptions
Analyze churn rate by customer segment and payment method.
Join customers and subscriptions tables. Group by customer_segment and payment_method and calculate the proportion of churned customers.
tables: customers, subscriptions
Starter SQL
run against this data before publishingTable names match the SQLite file and the SQL script.
Count of customers by segment
SELECT customer_segment, COUNT(customer_id) AS customer_count FROM customers GROUP BY customer_segment LIMIT 20;Average monthly charge by plan type
SELECT plan_type, AVG(monthly_charge) AS average_monthly_charge FROM subscriptions GROUP BY plan_type LIMIT 20;Churn rate by payment method
SELECT payment_method, SUM(CASE WHEN churn_label = 'yes' THEN 1 ELSE 0 END) * 100.0 / COUNT(subscription_id) AS churn_rate FROM subscriptions GROUP BY payment_method LIMIT 20;Total data usage per subscription
SELECT s.subscription_id, SUM(ud.data_usage_gb) AS total_data_usage FROM subscriptions s JOIN usage_data ud ON s.subscription_id = ud.subscription_id GROUP BY s.subscription_id LIMIT 20;Customer churn with tenure calculation
SELECT c.customer_id, s.churn_label, JULIANDAY(s.end_date) - JULIANDAY(s.start_date) AS tenure_days FROM customers c JOIN subscriptions s ON c.customer_id = s.customer_id WHERE s.churn_label = 'yes' LIMIT 20;Load it with pandas
import pandas as pd
# Unzip the CSV download first: one file per table
customers = pd.read_csv("customers.csv")
subscriptions = pd.read_csv("subscriptions.csv")
usage_data = pd.read_csv("usage_data.csv")
# Join subscriptions to customers
df = subscriptions.merge(customers, left_on="customer_id", right_on="customer_id", how="left", suffixes=("", "_customers"))
print(df.groupby("gender").size().sort_values(ascending=False))Using it in your tool
- Excel
- Load each table into a separate sheet. Use Power Query to join tables based on customer_id and subscription_id. Create a PivotTable on the 'subscriptions' sheet to analyze churn by plan type or payment method.
- Power BI
- Create a star schema with 'customers' and 'subscriptions' as dimension tables and 'usage_data' as a fact table. Establish relationships: customers[customer_id] to subscriptions[customer_id], and subscriptions[subscription_id] to usage_data[subscription_id]. Create DAX measures for Churn Rate (e.g., CALCULATE(COUNTROWS(subscriptions), subscriptions[churn_label] = "yes") / COUNTROWS(subscriptions)) and Average Monthly Charge.
- SQL
- Load the SQLite or SQL relational download. Use customer_id to join 'customers' and 'subscriptions' tables. Use subscription_id to join 'subscriptions' and 'usage_data' tables. For example: SELECT * FROM customers c JOIN subscriptions s ON c.customer_id = s.customer_id JOIN usage_data ud ON s.subscription_id = ud.subscription_id;
- Python
- Use pandas to load CSV or other formats. Join tables using `pd.merge`. Perform analysis using libraries like scikit-learn for modeling and matplotlib/seaborn for visualization.
Formats available
- CSV (zip)One CSV file per table, zipped
- Excel workbookOne worksheet per table
- SQLite databaseA ready-to-query database file with every table
- Parquet (zip)One Parquet file per table, zipped
- SQL scriptCREATE TABLE with primary and foreign keys, then INSERTs
- CSVA single CSV file
- JSONA single JSON file
How this data was generated
Synthetic data. Every row was generated: no real people, customers or companies are in this dataset.
Synthetic data generated by GoMask DataFactory from a relational blueprint: keys, links and rules are enforced in code, text columns are filled by a language model. No real people, companies or transactions.
- Data generated using GoMask DataFactory.
- Usage data generated with time-series characteristics.
- Checked by an automated quality gate: unique keys, no orphan foreign keys, required columns filled, declared rules and date ranges (realism score 92).
Limitations
- The dataset is synthetic and does not represent real individuals or events.
- The full dataset download requires credits.
- Sample data may not capture all nuances of actual customer behavior.
- Distributions and correlations are modelled, not measured from real records.
blueprint · customer-churn-dataset
Scale this dataset
Same tables. As many rows as you need.
Open the blueprint behind these 3 tables in Data Factory: keep the relationships, change a column, and generate it at the size you need.
- 200,000 rows
- 1,000,000 rows
- Tables
- customers, subscriptions, usage_data
- Licence
- yours to use, including commercially
- API slug
- customer-churn-dataset