用python进行分析电信行业的用户流失预测(二)--数据可视化

系列文章目录

1.用python进行分析的用户流失预测实操,以电信行业为例

2.用python进行分析电信行业的用户流失预测(二)–数据可视化

3.用python进行分析电信行业的用户流失预测(三)—数据预处理

4.用python进行分析电信行业的用户流失预测(四)—构建模型

前言

这篇文章紧跟用python进行分析的用户流失预测实操,以电信行业为例的后续内容,聚焦可视化操作。
本篇为第二篇文章教程。

四、数据可视化呈现

1、查看流失客户占比

##数据可视化分析
# #1,查看流失客户占比--画饼图参数
churnvalue=telcon['Churn'].value_counts()
labels=telcon['Churn'].value_counts().index
rcParams['figure.figsize']=6,9
explode = (0.1,0)   # 将某一块分割出来,值越大分割出的间隙越大
sizes = [telcon['Churn'].value_counts()]
fig = plt.figure(figsize=(8, 4))
ax1 = fig.subplots()
ax1.pie(sizes, explode=explode, labels=labels,
        autopct='%1.1f%%', # 数值保留固定小数位
        shadow=True,  # 显示阴影
        wedgeprops = {'linewidth': 3}  # 设置边框宽度
)
plt.title("流失客户占比情况")
plt.show()

在这里插入图片描述
由图中结果可以看出,流失客户占整体客户的26.5%。

2、性别、老年人、配偶、亲属对流客户流失率的影响

plt.figure(figsize=(10,10))
plt.subplot(2,2,1)
gender=sns.countplot(x='gender',hue='Churn',data=telcon,palette='Set2')   #palette参数表示设置颜色,设置为主颜色paste12
plt.xlabel('gender')
plt.title('Churn by Gender')

plt.subplot(2,2,2)
seniorcitizen=sns.countplot(x='SeniorCitizen',hue='Churn',data=telcon,palette='Set2')
plt.xlabel('Senior Citizen')
plt.title('Churn by Senior Citizen')

plt.subplot(2,2,3)
partner=sns.countplot(x='Partner',hue='Churn',data=telcon,palette='Set2')
plt.xlabel('Partner')
plt.title('Churn by SPartner')

plt.subplot(2,2,4)
dependents=sns.countplot(x='Dependents',hue='Churn',data=telcon,palette='Set2')
plt.xlabel('dependents')
plt.title('Churn by Dependents')
plt.show()

在这里插入图片描述
配偶、亲属占比结果

可以看出,男性与女性用户之间的流失情况基本没有差异,而在老年用户中流失占比明显比非老年用户更高,在所有数据中未婚与已婚人数基本持平,但未婚中流失人数比已婚中的流失人数高出了快一倍,从经济独立情况来看,经济未独立的用户流失率要远远高于经济独立的用户。

3、提取特征

charges=telcon.iloc[:,1:20]
# #对特征进行编码
# #离散特征的编码分为两种情况:
# #1.离散特征的取值之间没有太大意义,比如color:[red,blue],那么就使用one-hot编码
# #2.离散特征的取值有大小意义,比如size:[X,XL,XXL],那么就使用数值的映射【X:1,XL:2,XXL:3】
corrdf=charges.apply(lambda x:pd.factorize(x)[0])
print(corrdf.head())

在这里插入图片描述

4、构造相关性矩阵

charges=telcon.iloc[:,1:20]
corrdf=charges.apply(lambda x:pd.factorize(x)[0])
corr=corrdf.corr()
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
print(corr)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、使用热地图显示相关系数

charges=telcon.iloc[:,1:20]
corrdf=charges.apply(lambda x:pd.factorize(x)[0])
corr=corrdf.corr()
# '''
# heatmap 使用热力图展示系数矩阵情况
# linewidths 热力图矩阵之间的间隔大小
# annot  设定是否显示每个色块系数值
# '''
plt.figure(figsize=(30,20))
ax=sns.heatmap(corr,xticklabels=corr.columns,yticklabels=corr.columns,linewidths=0.2,cmap='YlGnBu',annot=True)
plt.show()

在这里插入图片描述
结论:

从上图可以看出,互联网服务、网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视和网络电影之间存在较强的相关性,多线业务和电话服务之间也有很强的相关性,并且都呈强正相关关系。

6、使用one-hot编码

tel_dummies=pd.get_dummies(telcon.iloc[:, 1:21])
print(tel_dummies.head())

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

7、电信用户是否流失与各变量之间的相关性

plt.figure(figsize=(15,8))
tel_dummies.corr()['Churn'].sort_values(ascending=False).plot(kind='bar')
plt.title('correlations between Churn and variables')
plt.show()

在这里插入图片描述

由图上可以看出,变量gender 和 PhoneService 处于图形中间,其值接近于 0 ,这两个变量对电信客户流失预测影响非常小,可以直接舍弃。

8、网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视、网络电影和无互联网服务对客户流失率的影响

covariable=['OnlineSecurity','OnlineBackup','DeviceProtection','TechSupport','StreamingTV','StreamingMovies']
plt.figure(figsize=(17,10))
for i,item in enumerate(covariable):
      plt.subplot(2,3,(i+1))
      ax=sns.countplot(x=item,hue='Churn',data=telcon,palette='Set2',order=['Yes','No','No internet service'])
      plt.xlabel(str(item))
      plt.title('Churn by'+str(item))
      i=i+1
plt.show()
#

在这里插入图片描述
由上图可以看出,在网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视和网络电影六个变量中,没有互联网服务的客户流失率值是相同的,都是相对较低。

这可能是因为以上六个因素只有在客户使用互联网服务时才会影响客户的决策,这六个因素不会对不使用互联网服务的客户决定是否流失产生推论效应。

9、签订合同方式对客户流失率的影响

ax=sns.barplot(x='Contract',y='Churn',data=telcon,palette='Set2',order=['Month-to-month','One year','Two year'])
# seaborn 的 barplot() 利用矩阵条的高度反映数值变量的集中趋势,bar plot 展示的是某种变量分布的平均值,
# 当需要精确观察每类变量的分布趋势,boxplot 与 violinplot 往往是更好的选择。
plt.title('Churn by Contract type')
plt.show()

在这里插入图片描述
由图上可以看出,签订合同方式对客户流失率影响为:按月签订 > 按一年签订 > 按两年签订,这可能表明,设定长期合同对留住现有客户更有效。

10、付款方式对客户流失率的影响

plt.figure(figsize=(10,5))
ax=sns.barplot(x='PaymentMethod',y='Churn',data=telcon,palette='Set2',order=['Bank transfer (automatic)','Credit card (automatic)','Electronic check','Mailed check'])
plt.title('Churn by PaymentMethod type')
plt.show()

在这里插入图片描述

由图上可以看出,在四种支付方式中,使用Electronic check的用户流流失率最高,其他三种支付方式基本持平,因此可以推断电子账单在设计上影响用户体验。

经过阅读学习上述数据可视化分析的内容,我想大家对于所给数据集中的数据所带来的价值思考及相关流程分析,有了很多的收获。其主要是通过分析数据更具有代表性的关键特征,经过数据预处理,得到理想化状态的数据集内容,进行多角度的数据相关性研究。就到这里了吧!!感觉小命都快没了。
在这里插入图片描述

  • 6
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
安居客是一个房地产信息网站,为了获取其中的数据,可以使用Python编写爬虫程序进行网页内容的抓取。通过分析网页的结构和规律,可以从安居客网站上获取所需的数据。爬虫程序可以通过请求网页的URL,获取网页的HTML源码,然后使用Python的相关库(如BeautifulSoup)对HTML进行解析,提取出需要的数据。 在获取到数据之后,需要进行数据清洗。数据清洗是指对采集到的原始数据进行清理、处理,使其符合数据分析的要求。例如,去除重复数据、处理缺失值、剔除异常值等。通过使用Python的数据处理库(如pandas)可以方便地进行数据清洗的操作。 数据清洗完成后,可以进行数据分析。数据分析是指对清洗后的数据进行统计、计算、挖掘等操作,以获取其中的有价值的信息和规律。Python中有很多用于数据分析的库,如numpy、scipy、matplotlib等。可以使用这些库进行数据的统计分析机器学习算法的实施、模型的构建等。 最后,为了更好地展示分析结果,可以进行数据可视化数据可视化是指使用图表、图像等形式将数据进行直观、易懂的展示。Python中的matplotlib、seaborn等库提供了丰富的图表绘制功能,可以将数据转换为直观的图表,以便更好地帮助用户理解和分析数据。 综上所述,通过安居客数据的爬取、数据清洗和数据分析可视化,可以获取并理解网站上房地产相关的有价值信息,为用户提供更好的数据分析与决策支持。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值