用户流失分析

用户流失分析

案例描述

项目描述:客户流失是所有与消费者挂钩行业都会关注的点。因为发展一个新客户是需要一定成本的,一旦客户流失,除了浪费拉新成本,还需要花费更多的用户召回成本。 所以,电信行业在竞争日益激烈当下,如何挽留更多用户成为一项关键业务指标。为了更好运营用户,这就要求要了解流失用户的特征,分析流失原因,确定挽留目标用户并制定有效方案。

数据集:本案例所使用数据集来自Kaggle平台,数据集一共提供了7043条用户样本,每条数据包含21个属性,由多维度的客户信息和流失与否的标签组成。

分析方法
根据现有数据,对数据进行拆分,从基本信息,服务信息,签约信息,三个方面进行用户画像分析
用户流失分析_第1张图片

数据介绍

用Python导入并查看数据
用户流失分析_第2张图片
用户流失分析_第3张图片

数据总共有21个列标签,除了最后一列Churn表示客户的流失标签外,其他20列数据可以分为三类特征:客户的基本信息,开通的服务信息,签订的合约信息。
各个数据标签的解释:

标签名称 字段解释 特征类型
customerID 用户ID 基本信息
gender 性别(male 男/female 女) 基本信息
SeniorCitizen 老年人 基本信息
Partner 婚姻情况(yes/no) 基本信息
Dependents 是否经济独立(yes/no) 基本信息
tenure 入网时间 基本信息
PhoneService 是否开通电话服务(yes/no) 服务信息
MultipleLines 是否开通多线业务(yes/no) 服务信息
InternetService 是否开通网络服务(yes/no) 服务信息
OnlineSecurity 是否开通网络安全服务(yes/no) 服务信息
OnlineBackup 是否开通在线备份服务(yes/no) 服务信息
DeviceProtection 是否开通设备保护业务(yes/no) 服务信息
TechSupport 是否开通技术支持服务(yes/no) 服务信息
StreamingTV 是否开通网络电视业务(yes/no) 服务信息
StreamingMovies 是否开通在线电影业务(yes/no) 服务信息
Contract 签订合同的方式(月,一年,两年) 签约信息
PaperlessBilling 是否开通电子账单(yes/no) 签约信息
PaymentMethod 付款方式(Bank transfer/Credit card/Electronic check/Mailed check) 签约信息
MonthlyCharges 每月的费用 签约信息
TotalCharges 总费用 签约信息
Churn 用户是否流失(yes/no) 流失标签

数据预处理

查看并转换数据类型

用户流失分析_第4张图片

  • TotalCharges总费用 和 MonthlyCharges每月费用 ,都应该是数值型数据,转换TotalCharges为数值型数据
    用户流失分析_第5张图片
缺失值处理

用户流失分析_第6张图片
TotalCharges有11个缺失值,对于缺失值的处理一般分为删除和填充缺失值两种方式,
用户流失分析_第7张图片
进一步查看缺失值的详细情况,然后确定如何处理缺失值
用户流失分析_第8张图片
缺失的为TotalCharges(总费用),而MonthlyCharges(月费用)并没有缺失,而且都是流失的客户群体,根据情况分析,这些缺失值对应的用户应该在交完当月的费用后就流失了,因此,可以采用MonthlyCharges(月费用)来填充TotalCharges(总费用)的缺失值
用户流失分析_第9张图片

可视化分析

查看客户流失比例分布
用户流失分析_第10张图片
基本信息对客户流失情况的影响

#性别 
plt.figure(figsize=(14,10))
plt.subplot(2,2,1)
gender = sns.countplot(x='gender',hue='Churn',data=data,palette='hls')
plt.xlabel('性别',size=20)

#SeniorCitizen  老年人对流失率的影响
plt.subplot(2,2,2)
SeniorCitizen = sns.countplot(x='SeniorCitizen',hue='Churn',data=data,palette='hls')
plt.xlabel('老年人(0为年轻人,1为老年人)',size=20)

#婚姻
plt.subplot(2,2,3)
SeniorCitizen = sns.countplot(x='Partner',hue='Churn',data=data,palette='hls')
plt.xlabel('婚姻',size=20)

#非经济独立
plt.subplot(2,2,4)
SeniorCitizen = sns.countplot(x='Dependents',hue='Churn',data=data,palette='hls')
plt.xlabel('非经济独立(No为独立,Yes为未独立)',size=20)

用户流失分析_第11张图片
由上图可知:
性别对客户流失情况基本没有影响,
年龄对客户流失情况有影响,老年人的流失率要远高于年轻人的流失率,
婚姻情况对客户的流失有影响,未婚客户的流失率要高于已婚的客户,
经济能力对客户流失有影响,经济为独立的客户流失率要高于以独立的客户

#入网时间的流失比例
tenure = data[['tenure','Churn']]
#把Churn(是,否),替换为数值(1,0)方面计算比率
tenure['Churn'] = tenure['Churn'].map({'Yes':1,'No':0})
tenure = tenure.groupby('tenure').sum()/tenure.groupby('tenure').count()
tenure = tenure.reset_index()
#画图
plt.figure(figsize=(14,6))
plt.plot(tenure['tenure'],tenure['Churn'],c='g')
plt.title('入网时间的流失情况',size=18,color='black')
plt.show()

用户流失分析_第12张图片
由上图可知:除了入网时间为0的刚入网客户,流失率是随着入网时间成下降趋势的

服务属性对客户流失的影响

       
column = ['OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport', 'StreamingTV', 'StreamingMovies']      
for i in column:
       
        plt.figure(figsize=(15,5))
        plt.subplot(1,3,1)
        plt.pie(data[data[i]=='Yes']['Churn'].value_counts(),
                labels=['No','Yes'],
                explode=(0.08,0),
                autopct='%0.2f%%',
                shadow=True,
                textprops={'fontsize':15,'color':'w'})
        plt.title('{} = Yes'.format(i),c='w',size='15')

        plt.subplot(1,3,2)
        plt.pie(data[data[i]=='No']['Churn'].value_counts(),
                labels=['No','Yes'],
                explode=(0.08,0),
                autopct='%0.2f%%',
                shadow=True,
                textprops={'fontsize':15,'color':'w'})
        plt.title('{} = No'.format(i),c='w',size='15')

        plt.subplot(1,3,3)
        plt.pie(data[data[i]=='No internet service']['Churn'].value_counts(),
                labels=['No','Yes'],
                explode=(0.08,0),
                autopct='%0.2f%%',
                shadow=True,
                textprops={'fontsize':15,'color':'w'})
        plt.title('{} = No internet service'.format(i),c='w',size='15')
        plt.show()

用户流失分析_第13张图片

(此处省略部分图片)

由上图可以推测出:

  • 所有没有使用互联网服务的客户流失率为7.4%,可以判断这六个属性只有在客户开通互联网服务后才有用,所以不会影响到没有开通的客户。
  • StreamingTV,StreamingMovies这两个服务对客户流失情况基本没有太大影响。
  • 开通其他四个互联网服务的用户流失率都有不同程度的降低,可以推断为多绑定这四个业务有助于客户的留存提升

PhoneService 电话业务

# PhoneService 电话业务
plt.figure(figsize=(14,7))
plt.subplot(1,2,1)
plt.pie(data[data['PhoneService']=='Yes']['Churn'].value_counts(),
        labels=['No','Yes'],
         explode=(0.08,0),
        autopct='%0.2f%%',
        shadow=True,
        textprops={'fontsize':20,'color':'w'})

plt.subplot(1,2,2)
plt.pie(data[data['PhoneService']=='No']['Churn'].value_counts(),
        labels=['No','Yes'],
         explode=(0.08,0),
        autopct='%0.2f%%',
        shadow=True,
        textprops={'fontsize':20,'color':'w'})
plt.show()

用户流失分析_第14张图片
MultipleLines 多线程服务

plt.figure(figsize=(15,5))
plt.subplot(1,3,1)
plt.pie(data[data['MultipleLines']=='Yes']['Churn'].value_counts(),
        labels=['No','Yes'],
         explode=(0.08,0),
        autopct='%0.2f%%',
        shadow=True,
        textprops={'fontsize':15,'color':'w'})
plt.title('MultipleLines = Yes',c='w',size=20)

plt.subplot(1,3,2)
plt.pie(data[data['MultipleLines']=='No']['Churn'].value_counts(),
        labels=['No','Yes'],
         explode=(0.08,0),
        autopct='%0.2f%%',
        shadow=True,
        textprops={'fontsize':15,'color':'w'})
plt.title('MultipleLines = No',c='w',size=20)

plt.subplot(1,3,3)
plt.pie(data[data['MultipleLines']=='No phone service']['Churn'].value_counts(),
        labels=['No','Yes'],
         explode=(0.08,0),
        autopct='%0.2f%%',
        shadow=True,
        textprops={'fontsize':15,'color':'w'})
plt.title('MultipleLines = No phone service',c='w',size=20)
plt.show()

用户流失分析_第15张图片
由上面的图可推断出:
PhoneService ,MultipleLines 对客户流失情况影响都很小。

plt.figure(figsize=(15,5))
plt.subplot(1,3,1)
plt.pie(data[data['InternetService']=='Fiber optic']['Churn'].value_counts(),
        labels=['No','Yes'],
         explode=(0.08,0),
        autopct='%0.2f%%',
        shadow=True,
        textprops={'fontsize':15,'color':'w'})
plt.title('InternetService = Fiber optic',c='w',size='15')

plt.subplot(1,3,2)
plt.pie(data[data['InternetService']=='DSL']['Churn'].value_counts(),
        labels=['No','Yes'],
         explode=(0.08,0),
        autopct='%0.2f%%',
        shadow=True,
        textprops={'fontsize':15,'color':'w'})
plt.title('InternetService = DSL',c='w',size='15')

plt.subplot(1,3,3)
plt.pie(data[data['InternetService']=='No']['Churn'].value_counts(),
        labels=['No','Yes'],
         explode=(0.08,0),
        autopct='%0.2f%%',
        shadow=True,
        textprops={'fontsize':15,'color':'w'})
plt.title('InternetService = No',c='w',size='15')
plt.show()

(图略)
由图可知:
InternetService = Fiber optic的用户数量最多,但流失率也最高41.89%,InternetService = DSL 流失率为18.96%,InternetService = No 的流失率为7.4%。
相比较开通DSL能更好的降低流失率

签订的合约信息对用户流失的影响

#签订合同方式 与 客户流失率的 影响
plt.figure(figsize=(10,8))
sns.barplot(x='Contract',y='Churn',data=data,palette='pastel',)
plt.title('Contract',size=15)

用户流失分析_第16张图片
由图可知:签订的合同时间越长,流失率越低。

# 付款方式对客户流失率的影响
plt.figure(figsize=(10,8))
sns.barplot(x='PaymentMethod',y='Churn',data=data,palette='Set2')
plt.title('PaymentMethod',size=15)

用户流失分析_第17张图片
由图可知:在四中支付方式中,使用Electronic check的用户流失率最高

#PaperlessBilling
PaperlessBilling = data[['PaperlessBilling','Churn']]
PaperlessBilling['Churn'] = PaperlessBilling['Churn'].map({'Yes':1,'No':0})
plt.figure(figsize=(10,8))
sns.barplot(x='PaperlessBilling',y='Churn',data=PaperlessBilling,palette='pastel',)
plt.title('PaperlessBilling',size=15)

用户流失分析_第18张图片
由上图可知:使用PaperlessBilling的客户流失率较高,因为使用PaperlessBilling的客户大多数为月付费用户,所以推测可能是按月付费对用户的流失影响比较大

费用对流失情况的影响

#TotalCharges 总费用
plt.figure(figsize=(16,4))
plt.subplot(1,2,1)
plt.hist(data[data.Churn=='Yes']['TotalCharges'],bins=500)
plt.title('Churn = Yes')
plt.subplot(1,2,2)
plt.hist(data[data.Churn=='No']['TotalCharges'],bins=500)
plt.title('Churn = No')
plt.show()

用户流失分析_第19张图片

# MonthlyCharges 月费用
plt.figure(figsize=(16,4))
plt.subplot(1,2,1)
plt.hist(data[data.Churn=='Yes']['MonthlyCharges'],bins=500)
plt.title('Churn = Yes')
plt.xticks(range(0,130,10))

plt.subplot(1,2,2)
plt.hist(data[data.Churn=='No']['MonthlyCharges'],bins=500)
plt.title('Churn = No')

plt.xticks(range(0,130,10))
plt.show()

用户流失分析_第20张图片
通过对费用的分析可知:
总费用:客户的流失趋势是随着付费的总费用越多而流失率越低,客户就越稳定。
月付费:每月的费用越高客户的流失率就越高,主要集中在每月费用70-105之间流失率较高

用户画像分析与建议

用户画像
通过以上的分析,可以发现容易流失的客户的用户画像为:
用户流失分析_第21张图片

建议

  • 对老年人,未婚,经济为独立的客户推出亲情套餐等优惠活动。
  • 对于入网时间短(2月之内)的用户推出半年或一年的优惠活动,使客户从易流失时期过渡到相对稳定时期。
  • 开通网络相关服务能够提高客户的留存,可以对相关服务加强宣传推广力度
  • 对一直都按月付费的用户推出年付费的优惠活动
  • 对使用电子支票和PaperlessBilling的客户,推出使用其他支付方式的优惠活动,或者通过消息推送等提醒其使用其他更便捷的支付方式
  • 对每月付费在70-105区间的用户,推出一定的折扣或其他优惠活动

你可能感兴趣的:(数据分析&机器学习,python,数据分析)