游戏APP用户行为及运营情况分析
一、分析结论
运营情况分析总结
1.新增用户分析
1)这段时间内新增的玩家数量是828934人,其中付费玩家19549人,站总用户数的2.4%;
2)每日新增玩家在3/10日左右新增玩家有一次大高峰增长,在3/13日左右有一次小增长;新增付费用户数在3/16号达到顶峰,但是后续也是持续下降;说明在这次活动过后,玩家的新增数量没有显著提升,可见活动对于提升游戏的人气帮助不大;活动仍然还需要持续一定的时间,让玩家充分了解游戏。
2.玩家活跃度分析
1)全部玩家的平均在线时长为11.6分钟,付费玩家的平均在线时长是135.8分钟,约是普通玩家的11倍,付费玩家拥有更高的活跃度。
2)75%的玩家的活跃时长不超过5分钟,说明用户的流失比较严重;
3)付费用户中75%的用户平均使用时长超过31分钟,说明付费用户更愿意投入时间在这款游戏中。
3.玩家付费情况分析
1)付费率PUR比较低,约17%,还有进一步的提高空间,可以开展相关活动提高付费率,从而提高渠道商青睐,如开展首冲礼包活动。
2)目前较好的手游每日ARPU超过五元;一般的手游在3-5元之间;低于3元说明表现较差。该手游的ARPU为5.44,表现良好;
3)该手游的ARPPU为32.62,说明付费用户整体的消费能力强,后续可以对付费用户进一步分析,已保证它们的持续付费;
4.玩家游戏习惯分析
1)APA玩家的平均PVE次数和PVP次数都是AU玩家的两倍左右,APA玩家更愿意花时间在这个游戏上;
2)在PVP对战中,APA玩家的获胜还率远超于AU玩家,说明我们的游戏道具可以让APA享受到对战的获胜的乐趣;
3)PVE的获胜概率均超过90%,建议后续可以关注是否需要出一些挑战难度大一些的PVE对战。
二、游戏APP用户行为
游戏APP用户行为流程
数据概况
print("安装信息:") print(install_table.info()) print("-"*30) print(install_table.describe()) print("-"*30) print(install_table.isnull().sum()) print("-"*30) print(install_table.duplicated().sum())
print("注册信息:") print(register_table.info()) print("-"*30) print(register_table.describe()) print("-"*30) print(register_table.isnull().sum()) print("-"*30) print(register_table.duplicated().sum())
数据处理
两张表中的安装时间范围不相同,选择相同的安装时间分析(2020-4-20——2020-04-26)
install=install_table[install_table['安装时间']>='2020-04-20 00:00:00'] register=register_table[register_table['安装时间']>='2020-04-20 00:00:00'] print(install['安装时间'].min(),install['安装时间'].max()) print(register['安装时间'].min(),register['安装时间'].max())
数据可视化
安装信息可视化
1.安装人数、注册人数、激活率
激活率=激活人数/安装人数(这里激活人数以注册人数代替)
install_num=install.用户唯一ID.count() register_num=register.用户唯一ID.count() print(f'安装人数:{install_num}激活人数:{register_num}') print('激活率:%.2f%%'%(register_num/install_num*100))
2.日安装量变化趋势
install['安装日期']=install['安装时间'].dt.date data=install.groupby('安装日期')['用户唯一ID'].count() print(data) data.plot() plt.show()
3.TOP5子渠道
print(install['子渠道'].value_counts()[:5]) install['子渠道'].value_counts()[:5].plot.pie()
4.安装的手机类型统计TOP10
由于手机品牌名称存在大小写不一的情况(例如OPPO,oppo),因此必须先统一格式后再统计:
install['手机类型']=install['机型'].str.upper() install['手机类型']=install['手机类型'].str.split('-').str[0] install['手机类型'].value_counts()[:10].plot.bar()
注册信息可视化
1.每日注册人数
register['注册日期']=pd.to_datetime(register['注册时间']).dt.date register.groupby('注册日期').用户唯一ID.count().plot()
2.不同类型用户的注册时段
register['注册时段']=pd.to_datetime(register['注册时间']).dt.hour register.groupby(['用户类型','注册时段']).用户唯一ID.count().unstack(0).plot()
3.7天内激活比例
register['激活时间']=pd.to_datetime(register['注册时间']).dt.day-pd.to_datetime(register['安装时间']).dt.day data=data.reset_index(name='total') data['percent']=(data['total']/install.shape[0]).round(3) data['percent_reg']=(data['total']/register.shape[0]).round(3)
data['percent'].sum()
4.日新增新用户统计
register_new.groupby(['注册日期']).用户唯一ID.count().plot()
三、游戏运营情况分析
数据分析
数据概况
print(game.info()) print("-"*30) print(game.isnull().sum()) print("-"*30) print(game.duplicated().sum())
数据分析
1.新增玩家分析
player_new=game.groupby(['register_day'])['user_id'].count() pay_player=game[game['pay_price']>0] pay_player_new=pay_player.groupby(['register_day'])['user_id'].count() new=pd.concat([player_new,pay_player_new],axis=1) new.columns=['player','pay_player'] new=new.reset_index() new
# 创建画布 plt.figure(figsize=(20,8)) # 绘制折线图 ax1 = plt.gca() ax2 = plt.gca() ax1 = plt.gca() # 获取当前轴域 ax1.set_xlabel('日期') # 设置x轴标签 ax1.set_ylabel('新增玩家人数', color='r') # 设置y轴标签 ax1.plot(new.register_day, new.player, color='red',label='新增玩家人数',marker='o',alpha=0.5) # 数据绘制 ax1.tick_params(axis='y', labelcolor='red') # 设置y轴刻度属性 ax2 = ax1.twinx() # 创建新axes实例,共享x轴 ax2.set_ylabel('新增付费玩家人数', color='blue') ax2.plot(new.register_day, new.pay_player, color='blue',label='新增付费玩家人数',marker='o',alpha=0.5) ax2.tick_params(axis='y', labelcolor='blue') plt.title('新增玩家数量',size=25) plt.show()
观察上图可知,每日新增玩家在3/10日左右新增玩家有一次大高峰增长,在3/13日左右有一次小增长;
新增付费用户数在3/16号达到顶峰,但是后续也是持续下降;
说明在这次活动过后,玩家的新增数量没有显著提升,可见活动对于提升游戏的人气帮助不大;活动仍然还需要持续一定的时间,让玩家充分了解游戏。
新增玩家付费分析
no_pay_num=new['player'].sum() pay_num=new['pay_player'].sum() plt.figure(figsize=(8,8)) plt.pie([no_pay_num,pay_num],labels=['未付费','付费'],autopct='%1.1f%%') plt.title('新增付费用户占比') plt.show()
观察上图可知,新增的用户中,付费比例很低;
说明活动对玩家的吸引力不足。
2.玩家活跃度分析
plt.figure(figsize=(10,10))
plt.boxplot(game.avg_online_minutes)
plt.show()
pay=game[game['pay_price']>0] plt.figure(figsize=(10,10)) plt.boxplot(pay.avg_online_minutes) plt.show()
由上可知,75%的用户平均使用时长<=5分钟,也就是说用户流失非常严重;
而75%的付费用户的平均在线时长大于31分钟。
3.玩家付费情况分析
关键指标:AU、PU、APA、ARPU、ARPPU、PUR
#Active Users au=game[game['avg_online_minutes']>=15].user_id.count() #Paying User pu=game[game['pay_price']>0].user_id.count() #total revenue revenue=game['pay_price'].sum() #Active Payment Account apa=game[(game['avg_online_minutes']>=15) & (game['pay_price']>0)].user_id.count() #Average Revenue Per User arpu=revenue/au #Average Revenue Per Paying User arppu=revenue/apa #Pay User Rate pur=apa/au
付费用户的平均消费远高于普通用户,但是付费率偏低。
可以开展首冲活动,让用户充值少量的钱,开始逐渐付费,例如充值6元获得限量的礼包。
付费率高,就可以更多的获得渠道商的青睐。
4.玩家游戏习惯分析
活跃用户PVP情况
au_pvp_count=game[game['avg_online_minutes']>=15].pvp_battle_count.sum() au_pvp_mean=game[game['avg_online_minutes']>=15].pvp_battle_count.mean() au_lanch_pvp_count=game[game['avg_online_minutes']>=15].pvp_lanch_count.sum() au_win_pvp_count=game[game['avg_online_minutes']>=15].pvp_win_count.sum() au_lanch_pvp_rate=au_lanch_pvp_count/au_pvp_count au_win_pvp_rate=au_win_pvp_count/au_pvp_count
付费用户PVP情况
apa=game[(game['avg_online_minutes']>=15) & (game['pay_price']>0)] apa_pvp_count=apa.pvp_battle_count.sum() apa_pvp_mean=apa.pvp_battle_count.mean() apa_lanch_pvp_count=apa.pvp_lanch_count.sum() apa_win_pvp_count=apa.pvp_win_count.sum() apa_lanch_pvp_rate=apa_lanch_pvp_count/apa_pvp_count apa_win_pvp_rate=apa_win_pvp_count/apa_pvp_count
pve同理
PVE难度不高,两种玩家的获胜概率相近,可以考虑加入更多的高难度PVE;
在PVP中,付费用户的胜率更高