0 目的
本文目的是找到付费客户的流失原因,并给出相应的理论建议。
数据来源:
https://www.kaggle.com/blastchar/telco-customer-churnwww.kaggle.com
1前期工作
1.1数据清洗-列名翻译
BEGIN;
ALTER TABLE 电信流失用户 CHANGE customerID 顾客ID VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE gender 性别 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE SeniorCitizen 老年用户 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE Partner 伴侣用户 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE Dependents 亲属用户 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE tenure 在网时长 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE PhoneService 电话服务 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE MultipleLines 多线服务 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE InternetService 上网服务 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE OnlineSecurity 网络安全 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE OnlineBackup 网络备份 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE DeviceProtection 设备保护 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE TechSupport 技术支持 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE StreamingTV 在线电视 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE StreamingMovies 在线电影 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE Contract 合同期 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE PaperlessBilling 电子账单 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE PaymentMethod 付款方式 VARCHAR(30);
ALTER TABLE 电信流失用户 CHANGE MonthlyCharges 月租费 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE TotalCharges 累计付费 VARCHAR(20);
ALTER TABLE 电信流失用户 CHANGE Churn 是否流失 VARCHAR(20);
COMMIT;
1.2数据清洗-数据一致化
老年用户0否,1是
UPDATE 电信流失用户
SET 老年用户 = Replace(老年用户,1,'Yes');
UPDATE 电信流失用户
SET 老年用户 = Replace(老年用户,0,'No');
在网时长
UPDATE 电信流失用户
SET 在网时长 = (
CASE
WHEN 在网时长 BETWEEN 1
AND 6 THEN
'0.5 Year'
WHEN 在网时长 BETWEEN 7
AND 12 THEN
'1 Year'
WHEN 在网时长 BETWEEN 13
AND 24 THEN
'2 Year'
WHEN 在网时长 BETWEEN 25
AND 36 THEN
'3 Year'
WHEN 在网时长 BETWEEN 37
AND 48 THEN
'4 Year'
WHEN 在网时长 BETWEEN 49
AND 60 THEN
'5 Year'
WHEN 在网时长 BETWEEN 61
AND 72 THEN
'6 Year'
WHEN 在网时长 = 0 THEN
'New'
END
);
月租费
UPDATE 电信流失用户
SET 月租费 = (CASE WHEN 月租费 BETWEEN 0 AND 30.00 THEN '1'
WHEN 月租费 BETWEEN 30.01 AND 60.00 THEN '2'
WHEN 月租费 BETWEEN 60.01 AND 80.00 THEN '3'
WHEN 月租费 BETWEEN 80.01 AND 100.00 THEN '4'
WHEN 月租费 BETWEEN 100.01 AND 120.00 THEN '5'
END);
1.3数据清洗-无效值、缺失值处理
累计付费为空的用户属于无效用户
DELETE FROM `电信流失用户` WHERE 累计付费 = ' '
新用户也不在考虑范围内
DELETE FROM `电信流失用户` WHERE 在网时长 = 'New'
2.创建流失情况分类视图
按照四个大类(用户属性,电话服务,上网服务,合同属性)分别建立视图。
2.1电话服务流失情况
创建视图
SELECT
`电信流失用户`.`电话服务` AS `电话服务`,
`电信流失用户`.`多线服务` AS `多线服务`,
`电信流失用户`.`上网服务` AS `上网服务`,
count(0) AS `总数`,
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,
0
)
) AS `流失数`,
format(
(
sum(
IF (
(
`电信流失用户`.`是否流失` = 'Yes'
),
1,