客户流失分析项目

该博客通过数据探索和建模,分析了电信行业客户流失的影响因素。发现老年人、合同期限、支付方式、月消费、网络服务等因素与客户流失显著相关。建议对老年人提供更细致的服务,优化合同期限和支付方式,以及加强在线安全、备份和设备保护等功能,以降低客户流失率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.项目背景

目的:

思路:

2.数据探索(EDA)

2.1数据集信息​编辑

部分字段含义解释

2.2 异常值分析

2.3 缺失值分析

3.数据预览

3.1 人

 3.1.1 用户属性

3.1.2 用户行为

3.2 货

3.2.1 电话服务

4. 特征工程

4.1 特征选择

4.2 特征处理

5. 建模

5.1 划分训练集和测试集

5.2 用训练集训练模型

5.3 用训练好的模型来预测测试集

5.4 特征重要性可视化​编辑

6. 结论与建议

6.1 用户端

6.2 产品端


1.项目背景

        激烈的市场竞争下,客户一旦发生流失,就很难在成功挽回,特别是现在的人口红利已经见顶,获取一个新客户的成本远高于维系一个老客户,而老客户的流失意味着收益的流失和市场占有率的下降,对于企业的生存发展来说是个危险的信号。然而客户的流失,是无法避免的,但是我们可以通过有效的手段来减少客户的流失,提高客户的留存率。

目的:

        通过数据分析找出customerID影响客户流失的因素,并提出针对性的决策建议,为电信运营商提出优化业务决策,减少客户流失的决策建议。

思路:

        首先通过合理的纬度拆解方法对用户数据进行拆解,利用数据探索和可视化等方法研究对各个维度的字段与客户流失的相关性,找出影响客户流失的因素;筛选出这些数据进行特征工程的处理,建立决策树模型对特征重要性进行排序,结合以上分析结果,从业务角度为电信公司增强客户留存率、减少客户流失提出具体的决策建议。

2.数据探索(EDA)

2.1数据集信息

部分字段含义解释

customerID:顾客ID
gender: 性别
SeniorCitizen: 是否为老人
Partner:是否有伴侣
Dependents:是否有孩子
tenure:上网时长(月)
PhoneService:是否有电话服务
MultipleLines:是否使用
InternetService:是否使用网络服务
Contract:合同期限
PaperlessBilling:是否开通电子支付
PaymentMethod:账单类型
MonthlyCharges:月消费
TotalCharges:总消费
Churn:流失情况
总共有21个字段。

接下来通过info()了解数据类型,查看数据类型是否合理,以及nan值的情况。

通过数据类型检查发现,TotalCharges总消费的数据类型应该为float,而不是object,需要修改。

user_info['TotalCharges'] = user_info['TotalCharges'].replace(' ', np.nan, regex=True)
user_info['TotalCharges'] =  pd.to_numeric(user_info['TotalCharges'])

 修改完毕。

接着通过describe 查看数据集的统计量,主要了解数据的大概范围以及每个特征的异常值判断。

         用户最高上网市场是72个月,最高月消费118.75,最高总消费是8684.8。这里没有发现什么异常值。下一步看看看异常值和缺失值的情况。

2.2 异常值分析

通过上一步,我们并没有发现异常值,但并不代表没有,为了进一步确认,我们使用箱型图查看tenure、MonthlyCharges、TotalCharges是否存在异常。

 

 可以看到tenure、MonthlyCharges、TotalCharges并不存在异常值。

2.3 缺失值分析

查看缺失值情况:

 TotalCharges存在11条缺失值,量比较小,这选择直接删除

user_info.dropna(inplace=True)
print(user_info.isnull().sum())

已经成功删除。 

查看数据纬度

一共有7032行。 

查看流失情况

查看流失率

 流失率为1869/7032=26.5%,这个流失率很夸张了,但是电信行业的流失率多少算正常没有找到准确的资料。

3.数据预览

我们把用户数据根据人-货-场三个纬度进行拆分:

3.1 人

 3.1.1 用户属性

3.1.1.1 性别

sns.countplot(x='gender',hue='Churn',data=user_info)
plt.xlabel('性别')
plt.ylabel('数量')
plt.title('性别与客户流失情况图')
plt.show()

        可以看到男性与女性用户的人数基本一致,流失率也基本相同,故判断性别不会影响客户的流失。

3.1.1.2 是否老年人

sns.countplot(x='SeniorCitizen',hue='Churn',data=user_info,order=[0,1],hue_order=['Yes','No'])
plt.xlabel('是否为老年人')
plt.ylabel('数量')
plt.title('是否为老年人与流失情况图')
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值