精华内容
下载资源
问答
  • 电信客户流失数据分析(一)

    千次阅读 2020-04-20 22:41:50
    背景:在kaggle网站上发现了这个数据集,就顺手拿来做个数据分析的项目,希望发现一些有趣的结果吧~~感兴趣的朋友可以在kaggle网站下载:https://www.kaggle.com/blastchar/telco-customer-churn。电信客户流失...

    来做个数据分析项目-

    背景:在kaggle网站上发现了这个数据集,就顺手拿来做个数据分析的项目,希望发现一些有趣的结果吧~~感兴趣的朋友可以在kaggle网站上下载:https://www.kaggle.com/blastchar/telco-customer-churn。电信客户流失数据集共7043条记录,21个字段。字段包括20个输入特征以及1个目标特征。目标特征为是否为流失顾客,输入特征包括:顾客Id,性别,是否老年人,是否有伴侣,是否有小孩,已使用年限,是否使用电话服务,是否使用网络服务,服务合同期限,支付方式、账单类型、月消费、总消费等一系列描述。

    下面我提出一系列相关问题和任务,开始数据挖掘工作!

    任务1:探索数据集

    拿到数据集要做的第一步是去了解和熟悉数据集,并且对数据缺失、数据错误问题进行预处理。

    1.1输入数据集

    import pandas as pd
    Telco_data=pd.read_csv('WA_Fn-UseC_-Telco-Customer-Churn.csv')
    

    1.2 检查数据集内容

    Telco_data.head(10)
    

    数据预览
    #数据集大小

    Telco_data.shape
    

    (7043, 21)

    #数据集是否有缺失值

    Telco_data.isnull().sum()
    

    没有缺失值

    #检查数据类型

    Telco_data.dtypes
    

    对于该数据集的初步探索我们可以了解到,这是一个7403*21的数据集,目前显示没有缺失值,然而有一个特征的数据类型是错误的。根据日常经验和对数据集内容的观察可以发现,TotalCharges字段的数据类型应该是float,而非object,该字段应该是一个连续数值型字段。产生这个错误的原因在于:在使用pandas进行读取csv文件的过程中,pandas会将缺失值读取为空字符串。

    检查缺失值的记录个数:

    Te_data[Te_data['TotalCharges'].isin([' '])]
    

    目前有11条记录具有缺失值,由于其数量相对于总体样本而言,微不足道。因此我采取删除记录的处理方式。

    1.3修复错误输入的数据集

    重新输入数据集,将空字符串转化为缺失值表示符号“NaN”,并删除带有缺失值的字段,最后将TotalCharges字段的数据类型转化为数值型,得到正确输入的数据集(后续所有操作的基础是下面的代码):

    import seaborn as sns
    import pandas as pd
    import numpy as np
    Te_data = pd.read_csv("WA_Fn-UseC_-Telco-Customer-Churn.csv")
    Te_data.replace(to_replace=r'^\s*$',value=np.nan,regex=True,inplace=True)
    Te_data.dropna(axis=0, how='any', inplace=True)
    Te_data['TotalCharges'] = pd.to_numeric(Te_data['TotalCharges'])
    

    1.4汇总统计分析
    字段内容统计:

    Te_data.describe(include='all')
    

    任务2:哪些输入特征与顾客流失具有关联性?

    2.1分析思路
    解决任务2,首先必须回答的一个问题就是,顾客为什么会流失?(因果性)第一个原因,相信也是绝大多数流失客户给出的答案,就是“电信公司所提供的服务让我无法满意”。这是从公司产品的维度给出的回答。第二个原因,顾客因为个人情况,比如年纪大需求发生变化,从而流失。这是从个人属性变化的角度给出的回答。
    第二个要回答的问题是,什么样的行为表现说明了顾客有流失的倾向?(相关性)行为表现的背后往往代表顾客对于公司,对于产品的态度,从而体现顾客的一些标签属性,比如忠诚用户、活跃用户等等。
    根据上面的三个回答,我将所有输入特征分成了三个维度:产品、个人属性、用户行为,如下图所示,分别对他们进行分析。

    2.2产品维度分析
    对于本例的电信公司而言,其主要的产品是电话服务、网络服务以及这两个服务基础上的一些附加服务。统计得到,在本数据集的样本中,同时使用网络服务和电话服务的顾客有4832名,只使用电话服务的顾客有1520名,只使用网络服务的有680名。在样本量没有明显失衡的情况下,下面进行两种假设:

    假设1:由于该电信公司的电话服务问题,造成客户流失。
    假设2:由于该电信公司的网络服务问题,造成客户流失。

    采用countplot函数画出的计数图来验证上面两组假设:

    sns.countplot(x='PhoneService',hue='Churn',data=Te_data,order=['Yes','No'],hue_order=['Yes','No'])
    sns.countplot(x='InternetService',hue='Churn',data=Te_data,hue_order=['Yes','No'],order=['DSL','Fiber optic','No'])
    

    在这里插入图片描述
    第一幅图是有接受电话服务和没有接受电话服务他们的流失情况。可以看出,流失率差别不大。假设1不成立。
    在这里插入图片描述
    在第二幅图中,接受网络服务的用户的流失率明显高于没有接受服务的顾客,尤其是采用光纤网络技术(Fiber optic)的用户,流失率接近40%。推断这项服务存在一定的问题,是急需改进的一项服务。同时也证明了假设2的推断是成立的:是否为网络服务用户与是否发生流失有较为密切的关联性。
    针对网络服务,我们可以进一步探讨拥有其他的附加服务是否会影响了用户的流失情况。同样是采用计数图的方式:

    fig,axes = plt.subplots(2,2,figsize=(14,10))
    sns.countplot(x='OnlineSecurity',hue='Churn',data=Te_data,hue_order=['Yes','No'],order=['Yes','No','No internet service'],ax=axes[0,0])
    sns.countplot(x='OnlineBackup',hue='Churn',data=Te_data,hue_order=['Yes','No'],order=['Yes','No','No internet service'],ax=axes[0,1])
    sns.countplot(x='DeviceProtection',hue='Churn',data=Te_data,hue_order=['Yes','No'],order=['Yes','No','No internet service'],ax=axes[1,0])
    sns.countplot(x='TechSupport',hue='Churn',data=Te_data,hue_order=['Yes','No'],order=['Yes','No','No internet service'],ax=axes[1,1])
    
    

    在这里插入图片描述
    我们可以发现,使用网络服务的客户,如果继续付费采用网络安全、网络备份、设备保护、技术支持等附加性服务,会有效降低其流失的可能性。这里显示的一个信息就是,虽然该电信公司的基础网络服务具有一定的问题,但是通过附加服务的补充,可以有效降低因服务问题所带来的流失。
    产品维度总结:是否使用网络服务,以及在使用了网络服务的情况下是否采用采用网络安全、网络备份、设备保护、技术支持等附加性服务,与顾客流失具有较大的关联性。

    2.3个人属性维度分析
    个人属性包括性别、是否为老年人、是否有伴侣、是否有待抚养的孩子。根据经验判断,除了是否为老年人这一因素,其他指标并不是造成流失的主要原因。而老年人流失的原因我个人认为是由于年龄变化,对于通话或网络服务的需求发生了改变,而产生的流失,也不排除死亡等因素造成的影响。因此做出假设:

    假设3:老年群体相对于非老年人的群体而言更倾向于流失。

    采用countplot函数画出的计数图来验证假设3:

    sns.countplot(x='SeniorCitizen',hue='Churn',data=Te_data,order=[0,1],hue_order=['Yes','No'])
    

    在这里插入图片描述
    其中,0代表非老年人,1代表老年人。通过上图证实了我们的假设,老年人群体的流失率明显高于一般群体。因此可以判断顾客是否为老年人与其流失的可能具有关联性。

    2.4用户行为维度分析
    从用户行为的角度进行分析,各特征不再与流失指标具有因果性,而是相关性。即该维度的特征不是导致流失的原因,但是其能预示顾客发生流失行为的可能性。按这个思路进行分析,我同样先给出我认为与顾客流失有所关联的指标:合同期限、已使用年限、支付方式、月消费、总消费。其中,合同期限、已使用年限、总消费能较好的体现一个顾客对于该公司的忠诚度,而是否忠诚与流失具有密切的关系。而用户的支付方式、月消费情况,可以显示用户的消费观念,而消费观念也会对是否流失具有一定影响。
    另外,总消费与使用年限往往具有较为密切的联系,使用时间越长,在电信平台的累积消费也会越多。总消费≈使用时间*月消费。因此,对总消费与使用年限进行一个回归分析:

    sns.regplot(x='tenure',y='TotalCharges',order=4,data=Te_data)
    

    在这里插入图片描述
    从图片可以看到,他们具有一定的线性关系,进一步计算这两个特征的相关系数:

    corr=Te_data[['tenure','TotalCharges']].corr()
    corr
    

    结果显示,他们相关系数高于0.8,具有高度的线性相关性。因此,后面分析,我将忽略总消费这一特征,通过分析使用年限就可以较好的体现使用年限和总消费这两个指标与流失的关联性。
    根据上述分析,下面开始进行对各指标进行假设验证:

    假设4:合同期限与流失情况具有密切相关性。
    假设5:已使用年限与流失情况具有密切相关性。
    假设6:支付方式与流失情况具有密切相关性。
    假设7:月消费与流失情况具有密切相关性。

    sns.countplot(x='Contract',hue='Churn',data=Te_data,hue_order=['Yes','No'],order=['Month-to-month','One year','Two year'])
    

    在这里插入图片描述
    明显可以看出,签订的合同期限越长,流失率越低,假设4成立。

    sns.boxplot(x='Churn', y='tenure', data=Te_data,order=['Yes','No'])
    

    在这里插入图片描述
    从箱型图可以看出,非流失客户群体使用年限的中位数、第一四分位数、第三四分位数都分别高于流失客户群体的对应指标。用户使用年限低于15个月,更有可能为流失客户,另一方面,若使用年限大于30个月,则更有可能不会流失。相对而言,使用年限越长的客户,流失的可能性就越小,假设5成立。

    import matplotlib.pyplot as plt
    plt.figure(figsize=(10, 6))
    sns.countplot(x='PaymentMethod',hue='Churn',data=Te_data,hue_order=['Yes','No'],order=['Electronic check','Mailed check','Bank transfer (automatic)','Credit card (automatic)'])
    

    在支付方式方面,采用电子支票支付的顾客的流失率明显高于其他支付方式的顾客。支付方式与流失率具有关联性,假设6成立。

    sns.boxplot(x='Churn', y='MonthlyCharges', data=Te_data,order=['Yes','No'])
    

    在这里插入图片描述

    在月消费方面,流失用户的月消费整体水平要高于非流失用户群体,而其变异性则小于非流失用户群体,假设7成立。
    用户行为维度分析总结:合同期限、已使用年限、支付方式、月消费、总消费与顾客流失具有关联性。

    任务2总结,经过分析筛选,20个输入特征中,目前认为与顾客流失关联性较大的指标包括:是否使用网络服务,以及在使用了网络服务的情况下是否采用采用网络安全、网络备份、设备保护、技术支持,是否为老年人,合同期限,已使用年限,支付方式,月消费。

    下一篇:电信客户流失数据分析(二)
    任务3 如何判别客户是否为潜在流失对象?

    展开全文
  • 1. GIS空间站,中国地理信息门户网站 这个网站算是比较国内早期的地理信息门户网站,里面有GIS方面的相关资料和行业动态...集成微信登录,支付,解决用户在线学习,查看相关资料,数据下载,系统代码查看等功能。 ...

    0.中国大学MOOC

    1⃣️ 中山大学 - 地理信息系统概论
    非常适合对没有接触过地信概念的初学者学习概念来看

    1. GIS空间站,中国地理信息门户网站

    这个网站算是比较国内早期的地理信息门户网站,里面有GIS方面的相关资料和行业动态,论文资料,讨论ArcGIS、ArcSDE等软件的应用和开发 ,可以用来拓宽视野提升对行业认知。
    在这里插入图片描述

    2. NarutoGIS

    这是一个集在线教育、科普、研究,技术交流支持等于一体的信息平台。集成微信登录,支付,解决用户在线学习,查看相关资料,数据下载,系统代码查看等功能。
    在这里插入图片描述

    3.GIS帝国

    在这里插入图片描述
    论坛比较活跃,涉及的板块比较全,开发的同学可以多关注开发板块

    在这里插入图片描述

    展开全文
  • vfp6.0系统免费下载

    2009-09-17 13:49:13
    请定期查看该网站,以便下载产品的最新版本。 问题 1-2: 从何处可以得到有关 Visual FoxPro 的详细资料? 答案: 通过 Microsoft Visual FoxPro Web 站点是随时获得各种最新产品发布信息的最佳途径。在此站点上不仅...
  • Redis 都有哪些数据类型?分别在哪些场景下使用比较合适? Redis 的过期策略都有哪些?手写一下 LRU 代码实现? 如何保证 Redis 高并发、高可用?Redis 的主从复制原理能介绍一下么?Redis 的哨兵原理能介绍一下么?...
  • 如果你之前没有任何算法基础,这边书很适合你,可以补充数据结构和算法的基础知识,像什么是时间复杂度空间复杂度、查找、排序等。 如果你有了一定基础了,建议你直接跳到最后面的算法实战部分。 《剑指 offer》 ...
  • 我会从下图中的知识点去写这个系列,很多细节的点,可能想得不是很完善,大家可以去【公众号】获取或者加我【微信】提意见(别忘记Star哟)。 原创文章每周最少两篇,公众号首发文章,【B站】首发视频,比博客早一到两...
  • 浏览器到底是如何下载资源的 Vite和Webpack的核心差异 Announcing Dart 2.12 JavaScript Library to work against complex domain names, subdomains and URIs. Javascript Virtual Keyboard - Customizable, ...
  • 如果在Github上浏览/下载速度慢的话可以转到码云上操作。 用途 HarvestText是一个专注无(弱)监督方法,能够整合领域知识(如类型,别名)对特定领域文本进行简单高效地处理和分析的库。适用于许多文本预处理和...
  • front-end-Doc 前端文档汇总(含代码...大前端工具 - 聂微东 https://github.com/nieweidong/fetool 前端开发者手册 https://dwqs.gitbooks.io/frontenddevhandbook/content 入门类 地址 前端入门教程 ...
  • -- 数据不保证完全准确,错误之处还望海涵,如需深入使用还望自己求证。 -- 买房有风险,投资需谨慎 ,资料内容不保证完全正确,使用需谨慎。 新增杭州学区房购房指南 新增各地控规文件 一:认识杭州从板块...
  • stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版 github 上的一个流行的编程书籍索引 中文版 如果这个仓库对你有帮助,欢迎 star。如果这个仓库帮你提升了技能找到了工作,可以请我喝杯咖啡: ...
  • 威眼局域网监控、局域网管理、数据防泄密三大功能于一身,可以远程查看电脑的屏幕内容,也可以进行聊天监控、电子邮件监控、上网监控等,同时威眼还可以禁止用户访问指定的网站、禁止使用指定的软件、禁用U盘等...
  • 局域网管理监控软件

    2013-09-14 12:26:22
    WorkWin管理专家同时具备智能反黄功能,智能过滤黄色站点,可以限制哪些电脑可以上网,和限制只在指定时间段上网,禁止部分员工上网,禁止部分网站,禁止某时间段上网,只允许访问与工作有关的网站或屏蔽某些网站;...
  • 网络文件交换工具

    2006-03-16 00:00:00
    如何查看对方计算机上有哪些文件可以下载? 首先,输入对方的<;;;IP地址>;;;和<;;;对方端口号>;;;。或者直接选择通讯录中 的地址也可以。 然后,点击[下载目录]按钮,就可以看到了。 D.如何...
  •  本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,分区和并行,以及...
  • 盲目实践会频繁遇到本来可以避免的陷阱和失败,耽于参考又会成为纸上谈兵,无法得到真才实学。 学习Oracle时,很多书和资料都很有参考价值,特别是Oracle文档,更是全面地提供了我们想了解的信息。但是文档中没有...
  •  8) 储值管理:指定哪些分类商品可以用储值消费,设置消费时储值占总金额的比例,充值按比例赠送。  9) 生日提示:启动软件可自动提示过阳历生日(也含当天阴历)的会员信息,可设置自动生成会员生日短信。  ...
  • 限制邮件、网站、聊天、游戏、股票、下载、流量以及自定义网络应用等行为,并可以做为软网关运行;不需要在被监视和管理电脑上安装任何软件,一机运行整网管理;可以在普通交换机下任何一台安装;不需要任何特别的...
  • java面试宝典

    2013-02-28 16:04:01
    92、一般情况下,关系数据模型与对象模型之间有哪些匹配关系(A,B,C) 21 93、以下关于SessionFactory的说法哪些正确?(B,C) 21 94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性...
  • 千方百计笔试题大全

    2011-11-30 21:58:33
    92、一般情况下,关系数据模型与对象模型之间有哪些匹配关系(A,B,C) 21 93、以下关于SessionFactory的说法哪些正确?(B,C) 21 94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性...
  • 【工作表拆分】 将当前工作表的某列数据按指定条件拆分成多个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 ...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    答:如果对Holtek的IC感兴趣的话,相应的数据手册可以网站上http://www.holtek.com.cn/products/index.htm去选IC资料下载。 12. 8位机还能延续多久! 答:以现在MCU产品主力还是在8位领域,主要应用于汽车...
  • php网络开发完全手册

    热门讨论 2009-03-02 13:17:26
    15.3.7 结果的分页 248 15.3.8 用户动态添加记录 249 15.3.9 用户动态更新记录 251 15.3.10 用户动态删除记录 253 15.4 使用PHP获取MySQL数据库的信息 255 15.4.1 获取数据库的信息 255 15.4.2 获取表的信息 256 ...
  • 还将学习友元函数,这些函数可以访问外部世界不可访问的类数据。同时还将了解一些构造函数和重 载操作符成员函数是如何被用来管理类的类型转换的。 第12章:类和动态内存分配 一般来说,让类成员指向动态分配的...
  • 还将学习友元函数,这些函数可以访问外部世界不可访问的类数据。同时还将了解一些构造函数和重 载操作符成员函数是如何被用来管理类的类型转换的。 第12章:类和动态内存分配 一般来说,让类成员指向动态分配的...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

哪些网站可以下载数据集