600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 电信运营商用户流失分析

电信运营商用户流失分析

时间:2021-12-03 20:13:14

相关推荐

电信运营商用户流失分析

数据集来源:

Telco Customer Churn | KaggleFocused customer retention programs/datasets/blastchar/telco-customer-churn下载得到一个excel文件WA_Fn-UseC_-Telco-Customer-Churn.csv,打开excel看一下

有21列,7000+行,这个数据量不大,用sql可以做

熟悉一下表格内容,看一下每列的数据类型,有没有明显异常的列,比如很多的0,或者有负数或者格子为空没有数据的情况。

(我粗粗拉了下表,没感到有明显异常的列)

这个案例用到的sql语句和tableau操作都是最基础的

首先是SQL部分,对数据进行一个简单的处理:

首先是建库建表:

#创建数据库DROP DATABASE IF EXISTS Telco_Customer_Churn;CREATE DATABASE Telco_Customer_Churn;USE Telco_Customer_Churn;#建表DROP TABLE IF EXISTS customer_details;CREATE TABLE customer_details(customerID VARCHAR(30) ,gender VARCHAR(30),SeniorCitizen VARCHAR(30) ,Partner VARCHAR(30) ,Dependents VARCHAR(30) ,tenure INT,PhoneService VARCHAR(30),MultipleLines VARCHAR(30),InternetService VARCHAR(50),OnlineSecurity VARCHAR(50),OnlineBackup VARCHAR(50),DeviceProtection VARCHAR(50),TechSupport VARCHAR(50),StreamingTV VARCHAR(50),StreamingMovies VARCHAR(50),Contract VARCHAR(50),PaperlessBilling VARCHAR(30),PaymentMethod VARCHAR(50),MonthlyCharges FLOAT,TotalCharges varchar(50),Churn VARCHAR(30));

在这里,大家可能会奇怪,我为什么把TotalCharges的数据类型定义为字符串类型?

是这样的,在最开始的时候我也是把TotalCharges的数据类型定义为Float类型的,但是在我导入数据的时候出现了‘warning’

‘Data truncated for column 'TotalCharges' at row XXX’

出现这种warning一般都是因为数据类型不适合或者是数据长度小了。

所以我试着把数据类型改成Varchar(50),然后warning就没有了。

但是这里的TotalCharges的数据类型肯定应该是浮点型,之后我们再通过sql语句改过来!

大家不要着急,慢慢往后看哈!

然后是导入数据:

LOAD DATA INFILE 'WA_Fn-UseC_-Telco-Customer-Churn.csv'INTO TABLE customer_detailsFIELDS TERMINATED BY ','LINES TERMINATED BY '\n'IGNORE 1 ROWS

这里有一个注意事项,我们的excel表,最好是放在Data下面,这样导入比较顺利。可以通过修改配置,使得可以导入其它文件夹的表,但是我就直接放在Data下面了。

就是这个Data文件夹:

点开这个Data文件夹可以看到新建的文件夹

你发现这个文件夹和我们前面建的数据库是一个名字,我想你应该想到了,我们在建库的时候就同时创建了这么一个文件夹,之后在该数据库下的操作也都默认是在这个文件夹下。

因此我们需要把下载的excel表WA_Fn-UseC_-Telco-Customer-Churn.csv移动到这个文件夹下面

这样就可以很顺利地通过load infile 语句把数据导入mysql啦!

展示下部分数据:

之后对数据进行检查,包括检查数据集大小、数据类型是否合理、有无空值、有无异常值

#查看数据集大小SELECT COUNT(*) FROM customer_details; #有7043行数据

#查看数据类型DESCRIBE customer_details;

在之前我们说过啦,为了导入数据不出现Warning,我们把TotalCharges的数据类型定义为了varcharI(50),但是它的数据类型正确的应该是Float

(数据类型也关系着我们后面用Tableau绘图,比如如果是字符串类型,肯定就没办法画趋势线了!)

所以,我们需要修改数据类型

#修改TotalCharges的数据类型为floatALTER TABLE customer_details MODIFY TotalCharges FLOAT;

#检查是否存在重复的数据SELECT * FROM customer_details GROUP BY customerID, gender, SeniorCitizen, Partner, Dependents, tenure, Phoneservice, Multiplelines, Internetservice, Onlinesecurity, Onlinebackup, Deviceprotection, Techsupport, Streamingtv, Streamingmovies,Contract, Paperlessbilling, Paymentmethod, MonthlyCharges, TotalCharges, ChurnHAVING COUNT(*)>1;

运行的结果是

返回只有表头,没有数据,这就是说没有重复的数据。

(如果有重复的数据,需要先设置一个自增长列,然后去重,这个以后遇到了我会再写一篇)

#查找缺失值SELECT COUNT(customerID),COUNT(gender),COUNT(SeniorCitizen),COUNT(Partner),COUNT(Dependents),COUNT(tenure),COUNT(Phoneservice),COUNT(Multiplelines),COUNT(Internetservice),COUNT(Onlinesecurity),COUNT(Onlinebackup),COUNT(Deviceprotection),COUNT(Techsupport),COUNT(Streamingtv),COUNT(Streamingmovies),COUNT(Contract),COUNT(Paperlessbilling),COUNT(Paymentmethod),COUNT(MonthlyCharges),COUNT(TotalCharges),COUNT(Churn)FROM customer_details;#返回得到各列的数据都为7043个,说明没有缺失值

#查找异常值#将TotalCharge(总消费额)按照升序排列SELECT * FROM customer_detailsORDER BY TotalCharges ASC;#发现有的行出现了,总消费额TotalCharge为0,但是月消费MonthlyCharge不为0的情况#经过观察发现这些用户的入网时长tenure为0,推测为本月刚入网用户,因此其tenure修改为1,总消费额改为月消费额UPDATE customer_details SET tenure = 1,TotalCharges = MonthlyChargesWHERE tenure =0;

嗯,进行到这里,我们的数据就处理完了。这个文件的数据处理很简单,都是最基本的语句。

接下来就是对数据进行业务分析。

本数据集有21列,内容分别为

我们分析的主要方式,就是通过可视化,分析最后一列数据(Churn)与前面的20列数据的关系。

接下来就是把SQL和tableaul链接起来,利用tableau进行可视化展示。

这里用到的tableau很简单,直接把对应的数据拖到column和row里面就可以啦

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。