数据分析案例——客户流失分析与预测

客户流失分析与预测

一、数据来源
https://www.kaggle.com/blastchar/telco-customer-churn

二、数据整理
1、导入函数包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

2、导入数据并展示

data=pd.read_csv(r"D:\百度网盘\数据分析—实例\运营商客户流失分析与预测\WA_Fn-UseC_-Telco-Customer-Churn.csv")
# 查看数据集大小
data.shape
# 运行结果:(7043, 21)

# 设置查看列不省略
pd.set_option('display.max_columns',None)

# 查看前5条数据
data.head()

在这里插入图片描述
3、异常值检查

#查看性别有无异常值
pd.unique(data.gender)
#运行结果:array(['Female', 'Male'], dtype=object)

#查看年龄有无>120异常值
data.loc[data.tenure>120]
#运行结果:0 rows × 21 columns

# Null计数
pd.isnull(customerDF).sum()

在这里插入图片描述
4、数据类型查看及转换

data.info()

在这里插入图片描述
将‘TotalCharges’总消费额的数据类型转换为浮点型

data.TotalCharges.astype(float)
#输出结果:ValueError: could not convert string to float: 

#强制转换
data.TotalCharges=data['TotalCharges'].convert_objects(convert_numeric=True)
#输出结果:AttributeError: 'Series' object has no attribute 'convert_objects'

#改用apply语句
data.TotalCharges=data['TotalCharges'].apply(pd.to_numeric, errors='coerce')

#转换结果查询
data.info()

在这里插入图片描述
5、查看转换后缺失值

#查看TotalCharges为NULL的信息
data[data.TotalCharges.isnull()]

在这里插入图片描述
6、修改数据

#将总消费额填充为月消费额
data.loc[:,'TotalCharges'].replace(to_replace=np.nan,value=data.loc[:,'MonthlyCharges'],inplace=True)

# 将‘tenure’入网时长从0修改为1
data.loc[:,'tenure'].replace(to_replace=0,value=1,inplace=True)

7、数据分析

data.describe()

在这里插入图片描述
三、数据展示
根据一般经验,将用户特征划分为用户属性、服务属性、合同属性,并从这三个维度进行可视化分析。

1、查看流失用户数量和占比。

#查看流失用户数量和占比
plt.figure(figsize=(6,6))
plt.pie(data['Churn'].value_counts(),labels=data['Churn'].value_counts().index,autopct='%0.2f%%',explode=(0.1,0))
plt.title('Churn(Yes/No) Ratio')
plt.show()

在这里插入图片描述

x=churnDf.index
y=churnDf['Churn']
plt.bar(x,y,width = 0.5,color = 'g')
plt.title('Churn(Yes/No) Num')
for a,b in zip(x,y):
    plt.text(a,b+10,'%.0f' % b, ha='center', va= 'bottom')
plt.show()

在这里插入图片描述
2、用户属性分析

def barplot_percentages(feature,orient='v',axis_name="percentage of customers"):
    ratios = pd.DataFrame()
    g = (customerDF.groupby(feature)[<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值