一、项目介绍
本项目通过对棋牌游戏数据的探索,通过python数据处理以及可视化,最后进行数据建模预测,整个项目分为项目目的的确定、数据的预处理、对数据的分析和项目总结这五个部分。
二、项目流程
项目目的
找到棋牌游戏用户流失的原因,并通过构建Xgboost模型对其预测
数据来源
数据来源于和鲸社区,数据字段如下图所示,共有1309条数据,13个字段,数据为棋牌游戏用户一周的行为数据
数据预处理
数据基本概况
缺失值查看
重复值查看
label编码
因为仅需要对性别和label编码处理,较为简单,不进行导包处理(labelEncoder)
查看数据流失占比
label_gp = data.groupby('是否流失')['用户id'].count()
print('是否流失样本的数量:\n',label_gp)
_,axe = plt.subplots(1,2,figsize=(12,6))
data['是否流失'].value_counts().plot(kind='pie',autopct='%1.1f%%',shadow=True,explode=[0,0.1],ax=axe[0])
sns.countplot('是否流失',data=data,ax=axe[1],)
可视化分析(pyecharts)
由下图性别与用户流失关系可以得到,性别与是否流失的影响不大,男性与女性的流失占比相差无几
a=(round((data[data['gender']==1].groupby(['label'])['用户id'].count()/data[data['gender']==1].shape[0]),2)).tolist()
b=(round((data[data['gender']==0].groupby(['label'])['用户id'].count()/data[data['gender']==0].shape[0]),2)).tolist()
fn = """
function(params) {
if(params.name == '是')
return '\\n\\n\\n' + params.name + ' : ' + params.value + '%';
return params.name + ' : ' + params.value + '%';
}
"""
def new_label_opts():
return opts.LabelOpts(formatter=JsCode(fn), position="center")
c = (
Pie()
.add(
"男",
[list(z) for z in zip(["是", "否"], a)],
center=["20%", "30%"],
radius=[60, 80],
label_opts=new_label_opts(),
)
.add(
"女",
[list(z) for z in zip(["是", "否"], b)],
center=["55%", "30%"],
radius=[60, 80],
label_opts=new_label_opts(),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="性别与是否流失关系"),
legend_opts=opts.LegendOpts(
type_="scroll", pos_top="20%", pos_left="80%", orient="vertical"
),
)
)
c.render_notebook()
由下图登录总次数与用户流失的关系,大部分的流失在一周内的登录次数为2次,可能的原因是游戏界面吸引力不强,游戏的新手教学较为复杂,游戏可能刚开始就进行用户消