电信客户流失分析

          电信客户流失分析

无论在哪个行业,客户都是其重要分析对象之一。这里,以电信行业的用户流失分析为例,从数据的角度对其用户进行分析。
一: 数据获取及其可靠性检验
数据分析一定离不开数据,本数据集来自DF ,数据源地址为:
https://www.datafountain.cn/dataSets/35/details#
在这里我们先不考虑数据集来源的可靠性或者数据集的准确性。
当然,如果你对数据集不放心,在这里我们对用户流失与否的数量占比进行分析(一般而言都是流失客户要远远小于不流失客户,因为那样才能更好的盈利):其代码及结果如下:df1=df["Churn"].value_counts() labels=df["Churn"].value_counts().index import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]="SimHei" plt.rcParams["axes.unicode_minus"]=False plt.figure(figsize=(6,6)) plt.pie(df1,labels=labels,colors=["blue","yellow"],explode=(0.1,0), autopct="%2.2f%%", shadow=True) plt.title("客户是否流失占比") plt.show()在这里插入图片描述
上述饼图中,Yes表示流失的客户这一类,No表示没有流失的客户这一类,从上图中我们可知流失客户与没有流失的客户占比约为1:3,这与我们预期的比较相符。
二:数据预览
在获取数据后,下一步就是对数据进行一个预览(或者说是对数据进行一个初步的熟悉)
下载并打开上述数据数据文件发现它有总共有21个字段信息,其中customerID字段相当于用户信息的一个编码号,可以上去,Churn字段为目标变量(即用户是否流失),其与19字段为特征变量,即我们需要进行分析的维度。其代码如下:
import pandas as pd df=pd.read_csv(r"C:\Users\Administrator\Desktop\电信用户流失数据.csv", engine="python")
数据预览的另一重要内容就是查看数据类型及其查看是否存在缺失值。代码如下:df3.info()
在数据预览过后,我们发现不存在缺失值,并且许多特征维度的数据类型均为python默认的object对象类型。
三:数据分析-之维度分析
(1)频数统计对比法:
由于我们在数据预览时没有发现缺失值,因此可以直接在各个维度上进行分析,这里以性别、年龄、是否有配偶以及是否独立四个维度为例,代码及结果如下所示:
plt.figure(figsize=(10,10)) plt.subplot(2,2,1) import seaborn as sns sns.countplot(x="gender",hue="Churn",data=df,palette="Pastel2") plt.xlabel("gender") plt.title("性别与客户流失间的关系") plt.subplot(2,2,2) sns.countplot(x="SeniorCitizen",hue="Churn",data=df,palette="Pastel2") plt.xlabel("SeniorCitizen") plt.title("年龄大小与客户流失间的关系") plt.subplot(2,2,3) sns.countplot(x="Partner",hue="Churn",data=df,palette="Pastel2") plt.xlabel("Partner") plt.title("配偶有无与客户流失间的关系") plt.subplot(2,2,4) sns.countplot(x="Dependents",hue="Churn",data=df,palette="Pastel2") plt.xlabel("Dependents") plt.title("亲属有无与客户流失间的关系")
在这里插入图片描述
从上图中,可知男女性别(左上图)在流失与不流失上数量上基本一致,因此性别对客户流失影响与否的影响不大;而年龄(右上图)和是否独立(右下图)对客户流失影响较大。
当然,考察各维度指标对目标变量影响程度的方法,除了运用上述的频数统计对比法外,还有一种重要的方法-相关系数法。
(2)相关系数法:
由于相关系数法是对各数值型变量,但发现有些数据类型不对,如MonthlyCharges 字段的数据类型应为数值型,但Python默认为objiect对象类型,因此需要将其转换为数值类型,为了以后得分析方便,这里也将其它字段的类型转换为数值型。代码与结果如下:df2=df.iloc[:,1:20] df3=df2.apply(lambda x:pd.factorize(x)[0])#将数字类型都转换为整型,来求相关系数 df3.head() df3.info() corr=df3.corr() corr df["TotalCharges"]=df["TotalCharges"].convert_objects(convert_numeric=True) #因为python会默认为Object类型,此方法将原本是数值型数据转换回来,但不是所有的都可以 #转为数值型,不能转化的用nan代替 df.dropna(inplace=True)#去掉其中的空值 df["Churn"].replace("Yes",1,inplace=True) df["Churn"].replace("No",0, inplace=True)#转化为数字,因为one-hot编码不会对数值 #进行编码 df4=pd.get_dummies(df.iloc[:,1:21]) df4.head() plt.figure(figsize=(15,8)) df4.corr()["Churn"].sort_values(ascending=False).plot(kind="bar") plt.title("相关图")
在这里插入图片描述从上图中性别因素(男与女)处在最中间的位置标明相关系数的绝对取值较低,即对目标变量(客户是否流失)的影响最小,这与第一种频数统计法的结果一样。当然还有一些影响较小的其它指标也可去除,如PhoneService等。
结论与建议
(1)结论
通过上述分析,我们可以大致勾勒出容易流失的用户特征:
1:老年用户与未婚且经济未独立的青少年用户更容易流失。
2:电话服务对用户的流失没有直接的影响。
:3:提供的各项网络服务项目能够降低用户的流失率。
4:签订合同越久,用户的留存率越高。:
5:采用electronic check支付的用户更易流失。
(2)建议:
推荐老年用户与青少年用户采用数字网络,且签订2年期合同(可以各种辅助优惠等营销手段来提高2年期合同的签订率),若能开通相关网络服务可增加用户粘性,因此可增加这块业务的推广,同时考虑改善电子账单支付的用户体验。
五:总结## 标题
这里只是对电信用户流失的影响因素进行了初步分析,若要进一步分析,可建立预测模型。
注****在进行建模分析时需要注意一下几点:
1:在选取模型时,还要对数据进行其他的处理,如标准化等;
2::由于此案列的数据集包含的特征维度较多,所以在选取一些模型时,要考虑维度灾难,并且各特征变量间的相关性是否对选取的模型有影响
3:由于此案列的数据集是不平衡的二分类数据集,所以在选取分类模型时要考虑数据不平衡对模型的影响(不平衡数据集对模型的主要影响是其中的噪声数据,而不是类别在数量上的不平衡造成的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值