• Technology
  • 3 tables
  • 43,116 rows
  • 7 formats
  • synthetic data

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.

  • last updated 29 Oct 2026
  • by GoMask
  • Dataset contains 43,116 total rows across 3 tables.
  • Customer data includes demographics like age, gender, and location.
  • Subscription data covers plan type, status, charges, and payment method.
  • Usage data tracks data consumption, call duration, and SMS count.
  • Data spans from 2018-01-29 to 2024-06-30.
  • Includes churn labels for predictive modeling.

At a glance

  • 3tables
  • 43,116rows
  • 28columns
  • Jan 2018 – Jun 2024date range

The 3 tables

preview and data dictionary per table

Customers customers · table · 5,000 rows

Contains demographic and account information for 5,000 customers.

Preview

First 10 of 5,000 rows of the Customers table
customer_iduuidfirst_namestringlast_namestringemailstringgenderstringageintegercitystringstatestringcountrystringsignup_datedatelast_activity_datedatecustomer_segmentstring
981e3fb5-af2e-44fc-9776-2078869392bdDavidSmith[email protected]Male21AustinTexasUSA2018-05-272018-11-17Young Adult
3c8899e0-9c93-48a6-a83c-a8ff766dd45bOliviaSullivan[email protected]Female26PortlandOregonUSA2023-05-072023-09-11Young Adult
77185056-00b9-40b4-ae7e-ac1c7c39940fMichaelScott[email protected]Male29DenverColoradoUSA2023-11-022024-02-03Young Adult
cd8fd331-d12b-4221-b1cc-de43181ed302OliviaStewart[email protected]Female24AtlantaGeorgiaUSA2020-09-122022-12-23Young Adult
542ef5e2-8a51-4e7b-ab6a-dc0e09717a83AvaStone[email protected]Female25SeattleWashingtonUSA2021-12-262023-03-17Young Adult
ea6c683e-0e10-4112-b616-7b25286b527bJamesSpencer[email protected]Male22PhoenixArizonaUSA2022-03-252023-06-02Young Adult
fc446a3e-a045-4515-829e-8ac84e442a94EthanSimpson[email protected]Male26BostonMassachusettsUSA2023-03-092024-02-18Young Adult
afa4fc8d-8ff0-462e-af45-df40b177d81bIsabellaStevens[email protected]Male18MiamiFloridaUSA2020-07-282020-09-16Young Adult
f8d72bf6-321e-4cda-b8b5-463f22c2894bNoahSharp[email protected]Female29RaleighNorth CarolinaUSA2023-09-282024-06-17Young Adult
be5890a1-d53d-4ec7-bd71-63bfdd2c2d1aEmmaSimon[email protected]Male26ChicagoIllinoisUSA2023-12-202024-06-26Young Adult
10 of 5,000 rows · 12 columns

Data dictionary

Data dictionary for the Customers table
columntypedescriptionexamplenull %
customer_iduuidUnique identifier for the telecom customer.unique981e3fb5-af2e-44fc-9776-2078869392bd0%
first_namestringCustomer's first name.David0%
last_namestringCustomer's last name or surname.Smith0%
emailstringUnique contact email address of the customer.unique[email protected]0%
genderstringGender identity of the customer.Male0%
ageintegerCustomer's age in years, ranging from 18 to 80.210%
citystringCity of residence in the United States.Austin0%
statestringUS state corresponding to the customer's residence.Texas0%
countrystringCountry of residence.USA0%
signup_datedateDate when customer established account with the telecom provider.2018-05-270%
last_activity_datedateMost recent recorded customer account activity.2018-11-170%
customer_segmentstringMarketing and behavioral demographic segment.Young Adult0%

Subscriptions subscriptions · fact table · 7,112 rows

Details of 7,112 subscription plans, including status and charges.

Preview

First 10 of 7,112 rows of the Subscriptions table
subscription_iduuidplan_typestringstart_datedateend_datedatestatusstringmonthly_chargedecimaltotal_chargesdecimalpayment_methodstringchurn_labelstringcustomer_iduuid
3dfd0a83-68b6-4bf9-9e55-befa5fce7528Standard2023-05-31blankactive63.9863.35Electronic Checkno40a06274-f677-4114-9aeb-7cc3e80978f6
ea8959b6-7229-4be2-a6fe-8229c492d86fPremium2022-02-13blankactive105.832989.26Credit Cardno3948598e-ff55-4cc9-8cc0-5dfd14989a47
3ad3df55-07c4-46da-a58c-2221bf095347Standard2021-10-242023-06-17cancelled78.591515.16Electronic Checkyes173693bb-d6de-4aa6-8292-368784bcf822
e236000c-ad79-42a3-819c-720fd7b7c662Premium2020-05-25blankactive122.886084.01Electronic Checkno63876e74-ad2e-4819-bb47-eba950455734
e411de47-0c1c-45c6-9d87-7edf0afa8c1eStandard2023-11-302024-04-08cancelled65.7271.44Electronic Checkyesf75d4dfc-0461-4dba-bdef-648dbd5a7e6b
139077ab-5c3a-4547-8ef0-de290ad56536Standard2023-04-122023-12-16cancelled71.3577.29Electronic Checkyesde7667bf-5217-485d-bf17-1cc4bedad1c4
7853843b-a4b8-4f15-9c3e-a526f691f9a6Premium2023-12-25blankactive99.83625.24Electronic Checknocba4e1d2-ca38-4305-bdef-ca114424bead
0b7820f8-6f7b-4d1c-9f29-68b1e359e802Standard2022-10-11blankactive69.871514.62Credit Cardnoaec98c60-72e6-49ab-9de1-bfde9145a251
5a80cbc8-bf25-4eed-ad1b-5a099cda41e5Premium2019-02-23blankactive121.717911.78Electronic Checknoc2c81146-4e01-40b1-8e42-9fcd024dcb85
f92cccc3-c094-46d3-8b22-f749201a7fcfStandard2023-06-102024-03-18cancelled73.98718.81Electronic Checkyese4b5dacf-f5bc-477c-9961-cc04271942b2
10 of 7,112 rows · 10 columns

Data dictionary

Data dictionary for the Subscriptions table
columntypedescriptionexamplenull %
subscription_iduuidUnique identifier for the subscription record.3dfd0a83-68b6-4bf9-9e55-befa5fce75280%
plan_typestringSubscription plan tier determining features and baseline pricing.Standard0%
start_datedateActivation date of the subscription.2023-05-310%
end_datedateCancellation or expiration date; null if subscription remains active.2023-06-1770.1%
statusstringOperational lifecycle status of the subscription.active0%
monthly_chargedecimalRecurring monthly service fee charged for the subscription.63.90%
total_chargesdecimalCumulative charges accrued across the subscription tenure.863.350%
payment_methodstringPayment billing instrument selected by the customer.Electronic Check0%
churn_labelstringBinary churn indicator for machine learning classification.no0%
customer_iduuidForeign key to customers.customer_id.40a06274-f677-4114-9aeb-7cc3e80978f60%

Usage data usage_data · fact table · 31,004 rows

One row per single usage record for a subscription.

Preview

First 2 of 31,004 rows of the Usage data table
usage_iduuidusage_datedatedata_usage_gbdecimalcall_duration_minutesdecimalsms_countintegersubscription_iduuid
e77e78dc-c9ad-463a-9667-957968a72d0b2024-01-136.6562.331f92cccc3-c094-46d3-8b22-f749201a7fcf
6356f620-3e75-4ee6-8bb3-f3e9cfa60c302024-06-077.4786.5247853843b-a4b8-4f15-9c3e-a526f691f9a6
2 of 31,004 rows · 6 columns

Data dictionary

Data dictionary for the Usage data table
columntypedescriptionexamplenull %
usage_iduuidUnique primary identifier for each usage record event or aggregated period.375c8839-4a3d-4950-97db-e325aa1cf32b0%
usage_datedateDate on which the service consumption occurred.2024-03-150%
data_usage_gbdecimalCellular and broadband data usage in gigabytes during the recording interval.22.790%
call_duration_minutesdecimalTotal duration of outbound voice calls in minutes during the interval.158.20%
sms_countintegerTotal count of text messages sent during the interval.820%
subscription_iduuidForeign key to subscriptions.subscription_id.d73ae7b5-8af7-4d36-ba14-35a8ccd87d250%

How the tables join

  • subscriptions.customer_id references customers.customer_idmany to one: each Subscriptions row points to one Customers row
  • usage_data.subscription_id references subscriptions.subscription_idmany to one: each Usage data row points to one Subscriptions row

Questions to answer with it

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

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

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

  4. 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 publishing

Table names match the SQLite file and the SQL script.

Count of customers by segment

sql
SELECT customer_segment, COUNT(customer_id) AS customer_count FROM customers GROUP BY customer_segment LIMIT 20;

Average monthly charge by plan type

sql
SELECT plan_type, AVG(monthly_charge) AS average_monthly_charge FROM subscriptions GROUP BY plan_type LIMIT 20;

Churn rate by payment method

sql
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

sql
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

sql
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

python
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
Scale this dataset in Data Factory
Tables
customers, subscriptions, usage_data
Licence
yours to use, including commercially
API slug
customer-churn-dataset

What should your data show?

Preview 20 rows free
No signup. No card.