某策略游戏测试阶段运营情况分析报告-基于python

  • 背景
  • 了解数据
    • 字段含义
    • 加载必要的库
    • 读取数据
    • 查看数据类型和数据结构
    • 统计缺失值
    • 删除重复数据
  • 游戏总体情况
    • 注册人数变化
    • 活跃用户数变化
    • 活跃用户比例及付费意愿
  • 玩家行为分析
    • 用户活跃情况
    • 道具偏好情况
  • 游戏收入分析
    • 人均收入情况
    • 各时期用户付费情况
    • 玩家不同等级收入差异
    • 累计收入金额情况
  • 鲸鱼&海豚用户分析
    • 对鲸鱼&海豚用户打标签
    • 在线时长差异
    • 道具消耗差异
    • 对战偏好差异
    • 鲸鱼用户等级分布
  • 其他代码补充
  • 总结

背景

数据集来源于tap4fun公司在DC竞赛网站发布的一组《野蛮时代》游戏测试数据,数据为20180126-20180306期间用户在七日内产生的各项数据

根据数据集内容,本次报告主要从用户增长、行为情况,游戏收入水平等方面综合分析游戏在测试阶段的运营表现

了解数据

字段含义


除prediction_pay_price外,其余字段时间均为从用户注册一直到满七天的数据累计内容,即时间有效性为七天

加载必要的库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rc('font', family='SimHei', size=18)# 显示中文标签
plt.style.use ('ggplot')#设定绘图风格

读取数据

#读取数据并查看数据列内容
data_path = r'tap_fun_train.csv'
data = pd.read_csv(data_path)
data.columns.to_list()

查看数据类型和数据结构

#查看数据集大小
data.shape

(2288007, 109)

#选取需要的数据列
item = ['user_id','register_time','bd_stronghold_level','wood_reduce_value','stone_reduce_value','ivory_reduce_value','meat_reduce_value','magic_reduce_value','general_acceleration_reduce_value','building_acceleration_reduce_value','reaserch_acceleration_reduce_value','training_acceleration_reduce_value','treatment_acceleration_reduce_value','pvp_battle_count','pvp_win_count','pve_battle_count','pve_win_count','avg_online_minutes','pay_price','pay_count','prediction_pay_price','infantry_add_value','infantry_reduce_value','wound_infantry_add_value','wound_infantry_reduce_value']
#选取分析的数据集
df = data.loc[:,item]
df.info()

user_id和register_time应分别为字符型和日期型数据,需转化数据类型

#数据格式类型转化
df['user_id'] = df['user_id'].astype('str')
df['register_time'] = pd.to_datetime(df['register_time']).dt.date

统计缺失值

#查看空值情况
df.isnull().sum()

数据集比较完整,无缺失值现象

删除重复数据

因为数据为七日玩家的基本游戏数据,这边根据玩家user_id进行去重

#删除重复数据集
df.drop_duplicates(subset='user_id',inplace=True)

游戏总体情况

注册人数变化

#游戏总体情况分析
#注册用户数情况,时间1月26到3月6号之间
#日新增注册用户数量变化
fig= plt.figure(figsize=(16,6))
fig.add_subplot(1,2,1)
plt.plot(df.groupby('register_time').user_id.count())
plt.title('日新增注册用户数量变化')
#累计新增注册用户数量变化
fig.add_subplot(1,2,2)
plt.plot((df.groupby('register_time').user_id.count()).cumsum())
plt.title('日新增注册用户数量变化')


数据显示,活动期间玩家注册人数一直保持良好增长,截止3月6号,累计注册用户数大228W+,预测后续还将保持良好增长

活跃用户数变化

#活跃用户变化
#活跃用户定义为在线时长大于平均在线时长的用户
avg_online = df['avg_online_minutes'].mean()
plt.plot(df.loc[df['avg_online_minutes']>=avg_online,:].groupby('register_time').user_id.count())
plt.title('日新增活跃用户数量变化')


全部用户中活跃用户占比13.7%,付费用户占比1.8%,玩家总体付费倾向与市场平均水平持平,但活跃用户中付费用户占比超10%,付费意愿较高

活跃用户比例及付费意愿

#活跃用户数占比
df_acvtive = df.loc[df['avg_online_minutes']>=avg_online,'user_id'].count()
df_nonactive = df.loc[df['avg_online_minutes'] < avg_online,'user_id'].count()
fig= plt.figure(figsize=(12,6))
fig.add_subplot(1,2,1)
plt.pie([df_acvtive,df_nonactive],labels=['活跃用户','一般用户'],autopct='%1.1f%%')
#付费用户占比
df_pay = df.loc[df['pay_price']>0,'user_id'].count()
df_nopay = df.loc[df['pay_price']==0,'user_id'].count()
fig.add_subplot(1,2,2)
plt.pie([df_pay,df_nopay],labels=['付费用户','一般用户'],autopct='%1.1f%%')


活跃用户定义为活跃时长超过所有用户的平均活跃时长,其中活跃用户占比13.7%,付费用户占比1.8%

#查看活跃用户中付费用户所占的比例
df[(df['pay_price']>0) & (df['avg_online_minutes']>=avg_online)].user_id.count()/df[df['avg_online_minutes']>=avg_online].user_id.count()

活跃用户中付费用户比例达12.17,该类用户整体付费意愿较强

玩家行为分析

#根据平均时长和玩家等级初步建立AARRR漏斗转化模型
#玩家付费意愿较高,但留存率较低,使用AARRR模型探究是哪一环节的转化率低
avg_online=df['avg_online_minutes'].mean()
#1、从安装到注册后的转化率,下载游戏后如果用户在线时长为0,则表示用户没有在游戏内有过探索
rate1 = df.loc[df['avg_online_minutes']!=0,'user_id'].count()/df['user_id'].count()
#2、从注册到创角后的转化率,游戏下载后会有一段引导视频,当引导视频结束,角色创立,角色等级为1,故而等级为0的是在这一过程中损失的用户
rate2 = df.loc[df['bd_stronghold_level']>=1,'user_id'].count()/df['user_id'].count()
#3、从创角到成为活跃用户的转化率
rate3 = df.loc[df['avg_online_minutes']>=avg_online,'user_id'].count()/df['user_id'].count()
#4、从活跃用户到付费用户的转化率
rate4 = df.loc[df['pay_price']>0,'user_id'].count()/df['user_id'].count()
print(rate1,rate2,rate3,rate4)

out:0.9812697251363305 0.5889671666214308 0.13684748342116085 0.018111395638212645
通过转化漏斗,最终付费转化率为1.8%,相对来说损失率最高的为从安装到创角、和用户激活到活跃的过程,虽然活跃用户付费率较高,但留存率较低。

用户活跃情况

#从用户活跃时长方面进一步验证
%matplotlib auto
plt.hist(df['avg_online_minutes'],bins=[0,3,6,9,12,15,18,21,24,27,30])
plt.xlabel('平均在线时长')
plt.ylabel('玩家人数')
plt.title('用户平均在线时长分布图')

data = pd.cut(df['avg_online_minutes'],bins=[0,3,6,9,12,15,18,21,24,27,30]).value_counts()

全部用户平均活跃时长为10.2分钟,其中已留存用户平均活跃时长为15min,七日平均活跃时长不超过3min的用户占比超过60%,说明游戏总体用户参与度不高,持续游戏能力不强,在新手引导优化方面需要引起重视

道具偏好情况

#道具类消耗
#资源类消耗
source = ['meat_reduce_value','wood_reduce_value','stone_reduce_value','ivory_reduce_value','magic_reduce_value']
df3 = df[source]
#加速类消耗
acceleration = ['general_acceleration_reduce_value','building_acceleration_reduce_value','reaserch_acceleration_reduce_value','training_acceleration_reduce_value','treatment_acceleration_reduce_value']
df4 = df[acceleration]
#士兵类消耗
infantry = ['infantry_add_value','infantry_reduce_value','wound_infantry_reduce_value', 'wound_infantry_add_value']
df5 = df[infantry]



从道具消耗角度来说,主要分为资源、加速,其中资源类道具消耗量远大于加速类道具

在资源类道具当中,肉、木材消耗深受喜爱,占比约80%

加速类道具中通用加速和建筑加速使用更为广泛,同时治疗加速消耗几乎无人使用,游戏设计时可适时增加使用治疗道具方面的引导

游戏收入分析

人均收入情况

#ARPU和ARPPU(七日),时间窗口为一周,针对活跃用户进行的计算
#计算ARPU值
ARPU_seven = df['pay_price'].sum()/df.loc[df['avg_online_minutes']>=avg_online,'user_id'].count()
ARPU_45 = df['prediction_pay_price'].sum()/df.loc[df['avg_online_minutes']>=avg_online,'user_id'].count()
#计算ARPPU值
ARPPU = df['pay_price'].sum()/(df['pay_price']>0).sum()
ARPPU_45 = df['prediction_pay_price'].sum()/(df['prediction_pay_price']>0).sum()
print(ARPU_seven,ARPU_45)
print(ARPPU,ARPPU_45)

3.90704376764567 13.103242683035893
29.52114336735926 89.21305797164483
根据目前较好的手游每日ARPU超过5元;一般的手游ARPU在3~5元之间(每日);鉴于本ARPU值计算的时间窗口为7天,运营初期用户平均收入偏低

各时期用户付费情况

#付费转化率随时间的变化
df_active = df[df['avg_online_minutes'] > avg_online]
data1 = df_active.groupby('register_time')['user_id'].count().to_frame().reset_index()
data1.columns = ['register_time','active_num']
data2 = df_active[df_active['pay_price']>0].groupby('register_time')['user_id'].count().to_frame().reset_index()
data2.columns = ['register_time','pay_num']
data3 = pd.merge(data1,data2,on='register_time',how='inner')
data3['pay_rate'] = data3['pay_num']/data3['active_num']
#收入随注册时间的变化
data4=df[df['pay_price']>0].groupby('register_time')['pay_price'].sum()
data4

活跃用户中付费转化率和付费总收入整体为走低的趋势,可以看到注册时间越早的用户,付费人数和比例、总付费收入同期占比更高,这批用户应是对游戏报有更多关注,对游戏喜爱的用户,运营初期可从这部分客户身上调研,从用户角度做游戏设计上的优化等

玩家不同等级收入差异

#付费等级和收入之间的关系
data4 = df.groupby('bd_stronghold_level')['pay_price'].sum()
data5 = df.groupby('bd_stronghold_level')['user_id'].count()
#导出后在excel中作图

不同游戏等级总收入和人数分布,可以看出游戏等级为15级以上的基本为鲸鱼用户(总收入多,人数少),普通付费玩家多集中在9-11级

累计收入金额情况

#用户累计贡献金额百分比
user_amount= df['pay_price'].sort_values().reset_index().cumsum()
user_amount.columns = ['index','amount_cumsum']
amount_total=user_amount.amount_cumsum.max()
user_amount['prop'] = user_amount.amount_cumsum.apply(lambda x:x/amount_total)
plt.plot(user_amount.prop )
plt.title('用户累计贡献金额百分比')
plt.xlabel('人数')
plt.ylabel('百分数')


1%用户创造了超过80%的收入,小鱼用户太多,需针对用户群体进行深度分析,保证付费质量和规模

鲸鱼&海豚用户分析

鲸鱼用户玩家创造了游戏的大部分收入,那么这部分玩家有什么行为特征呢?
因为此案例中小鱼用户太多,这边仅选取海豚用户与鲸鱼用户进行比较,将更能反应出不同层次玩家的差异和偏好情况

对鲸鱼&海豚用户打标签

#1、根据数据集情况,鲸鱼玩家的用户占比,按照总收入占比,总收入在0-1%的为小鱼用户,10%-20%的海豚用户,20%-80%的鲸鱼用户
df1 = df[['user_id','pay_price']]
df1['amount_cumsum'] = df['pay_price'].sort_values().cumsum()
df1['prop'] = df1['amount_cumsum'] /df1['amount_cumsum'].max()
df1['labels'] = df1['prop'].apply(lambda x:'鲸鱼用户' if x>=0.8  else '海豚用户' if x>=0.01 else '小鱼用户')
#鲸鱼用户占比
df1['labels'].value_counts()
#三类用户占比差距

小鱼用户 2258924
海豚用户 28994
鲸鱼用户 89
Name: labels, dtype: int64
三类用户数量悬殊

#研究鲸鱼、海豚用户的行为差异
user_whaley = user_kind[user_kind['labels'] =='鲸鱼用户']
user_dop =  user_kind[user_kind['labels'] == '海豚用户']

在线时长差异

#在线时长和活跃用户比例
fig= plt.figure(figsize=(16,6))
fig.add_subplot(1,2,1)
plt.boxplot(user_whaley['avg_online_minutes'])
fig.add_subplot(1,2,2)
plt.boxplot(user_dop['avg_online_minutes'])
#鲸鱼用户在线时长分布比较均匀,在100-900之间分布,平均值约为420min,而海豚用户在线时长分布异常值较多,平均在线时长不到100min

鲸鱼用户在线时长分布比较均匀,在100-900之间分布,平均值约为453min,而海豚用户在线时长分布异常值较多,平均在线时长不到100min,这部分群体仍待刺激,以延长用户在线时长

道具消耗差异

#研究鲸鱼、海豚用户表现
#观察道具消耗情况
#加速类道具消耗数量
fig= plt.figure(figsize=(10.,6))
fig.add_subplot(1,2,1)
acceleration = ['general_acceleration_reduce_value','building_acceleration_reduce_value','reaserch_acceleration_reduce_value','training_acceleration_reduce_value','treatment_acceleration_reduce_value']
plt.pie(user_whaley[acceleration].mean(),labels=acceleration,autopct='%1.1f%%')
plt.title('鲸鱼用户加速类道具消耗数量')
fig.add_subplot(1,2,2)
plt.pie(user_dop[acceleration].mean(),labels=acceleration,autopct='%1.1f%%')
plt.title('海豚用户加速类道具消耗数量')
#鲸鱼类用户偏爱训练和科研类加速道具,海豚类用户建筑类加速道具会更多,两者治疗类道具消耗都是最小的
#资源获取类道具消耗数量
fig= plt.figure(figsize=(10.,6))
fig.add_subplot(1,2,1)
acceleration1 = ['meat_reduce_value','wood_reduce_value','stone_reduce_value','ivory_reduce_value','magic_reduce_value']
plt.pie(user_whaley[acceleration1].mean(),labels=acceleration1,autopct='%1.1f%%')
plt.title('鲸鱼用户资源类道具消耗数量')
fig.add_subplot(1,2,2)
plt.pie(user_dop[acceleration1].mean(),labels=acceleration1,autopct='%1.1f%%')
plt.title('海豚用户资源类道具消耗数量')
#总的来说没有特别明显的差异,肉类,木材,石头消耗数量占据多数
#勇士类数量指标,不算是道具类,主要反映的玩家在游戏中的概况
fig= plt.figure(figsize=(10.,6))
fig.add_subplot(1,2,1)
acceleration2 = ['infantry_add_value','infantry_reduce_value','wound_infantry_add_value','wound_infantry_reduce_value']
plt.pie(user_whaley[acceleration2].mean(),labels=acceleration2,autopct='%1.1f%%')
plt.title('鲸鱼勇士情况占比')
fig.add_subplot(1,2,2)
plt.pie(user_dop[acceleration2].mean(),labels=acceleration2,autopct='%1.1f%%')
plt.title('海豚用户勇士情况占比')
#相对之下,鲸鱼用户更偏向于招募勇士数量,相对之下勇士损失数量和伤兵产生数量的比例更大,伤兵恢复数量比例更小

小结:
道具上,鲸鱼用户更偏向于象牙,石头等资源类道具,加速类道具中,训练加速偏好明显

勇士情况中,勇士招募偏好明显,可能由于道具使用,勇士损失量相对较小,但勇士伤兵恢复比例较低

加速类道具中,治疗加速几乎无人使用,需加强引导使用

对战偏好差异

注:pvp对人人对战,pve为人机对战

#pvp和pve的偏好
user_dop[['pvp_battle_count','pve_battle_count']].mean()
user_whaley[['pvp_battle_count','pve_battle_count']].mean()
#pvp和pve胜率差别
(user_dop['pvp_win_count']/user_dop['pvp_battle_count']).mean()
(user_whaley['pvp_win_count']/user_whaley['pvp_battle_count']).mean()
(user_dop['pve_win_count']/user_dop['pve_battle_count']).mean()
(user_whaley['pve_win_count']/user_whaley['pve_battle_count']).mean()

从游戏场数来看鲸鱼用户的pvp和pve场数都很高,相对来说,鲸鱼用户pvp的比例更高,海豚用户更多偏好pve

鲸鱼用户的pvp胜率远高海豚用户,高氪金玩家在游戏中可获得相当明显的优势,战斗不平衡性明显

鲸鱼用户等级分布

#鲸鱼玩家的用户等级
user_whaley['bd_stronghold_level'].value_counts()

基本都在15级以上,可以看得出在初期阶段,等级普遍偏低,对于在线时长短,等级低的鲸鱼用户的价值可待进一步挖掘

其他代码补充

#付费人数随注册时间的变化
df[df['pay_price']>0].groupby('register_time')['user_id'].count()
#注册日期和收入之间变化
plt.plot(df.groupby('register_time')['pay_price'].sum())

总结

  • 游戏人气不断上升中,累计注册用户不断攀升,新注册用户稳步增长;
  • 0219-0220春节活动期间虽拉来不少新注册用户,但用户整体付费率低,付费收入增加不明显,需进一步确认活动的效果,是否存在刷量,渠道投放上是否还有优化空间
  • 根据七日数据,已活跃用户总体付费意愿较强,但新用户的活跃和留存情况不是很理想,总体付费率一般,ARPU值偏低,完善新手引导机制,促进用户转化活跃,运营上还有很长的一段路要走
  • 游戏设计优化上建议从注册时间较早的用户身上进行调研,结合不同分层用户各类道具的使用偏好,进一步优化关卡设计,道具定价等
  • 鲸鱼用户在运营初期创造了游戏近90%的营收,加强对鲸鱼用户的管理,进一步挖掘鲸鱼用户价值,并继续提升海豚和小鱼用户的活跃性,促进用户留存,增强自传播过程

某策略游戏公测期运营情况分析报告-基于python相关推荐

  1. 某SLG游戏公测期用户与付费分析

    这次主要对某SLG游戏的用户及付费进行分析.数据来源为游戏玩家付费金额预测大赛-竞赛信息-DC竞赛 一.理解数据 下图为数据的部分截图: 图1 主要关键字有:用户ID, 注册时间, 付费金额,要塞(玩 ...

  2. 贪婪洞窟2一直显示连接服务器失败,贪婪洞窟2公测服务器应急情况处理公告

    贪婪洞窟2公测服务器应急情况处理公告,为了保证这次公测,官方给出了好的态度,这一点给玩家映像加了不少分,下面不了解的玩家,电玩之家小编为你准备了最新的图文攻略,感兴趣的玩家赶快一起来看看吧! 贪婪洞窟 ...

  3. 中国芯片行业市场十四五前景预测与供给情况分析报告2022-2027年

    中国芯片行业市场十四五前景预测与供给情况分析报告2022-2027年   第1章:中国芯片行业发展综述1.1 芯片行业概述 1.1.1 芯片的定义分析 1.1.2 芯片制作过程介绍 1.1.3 芯片产 ...

  4. 全球及中国车载扫地机行业销售前景态势与运营盈利分析报告2022版

    全球及中国车载扫地机行业销售前景态势与运营盈利分析报告2022版 --------------------------------------- [修订日期]:2021年12月 [搜索鸿晟信合研究院查 ...

  5. 全球及中国再生橡胶产业发展动态及十四五运营状况分析报告2021版

    全球及中国再生橡胶产业发展动态及十四五运营状况分析报告2021版  HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [ ...

  6. 全球及中国车载定位模块行业发展格局与运营动向分析报告2022版

    全球及中国车载定位模块行业发展格局与运营动向分析报告2022版 --------------------------------------- [修订日期]:2021年11月 [搜索鸿晟信合研究院查看 ...

  7. 中国医药电子商务平台行业十四五盈利规模与运营前景分析报告2022年

    中国医药电子商务平台行业十四五盈利规模与运营前景分析报告2022年 ··························· <修订日期>:2022年1月 <专员对接>:周文文 ...

  8. 全球及中国口腔医疗行业投融资现状与与运营效益分析报告2022版

    全球及中国口腔医疗行业投融资现状与与运营效益分析报告2022版 -------------------------------------  <出版单位>:鸿晟信合研究院[专员客服对接] ...

  9. 全球及中国家政服务产业前景建议与运营盈利分析报告2022版

    全球及中国家政服务产业前景建议与运营盈利分析报告2022版 ════════════════ <修订日期>:2022年2月 <出版单位>:鸿晟信合研究院 <对接人员> ...

最新文章

  1. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
  2. PetaPoco 使用总结(二)
  3. oracle 分组排序后取第一条_关于oracle中位图索引的探讨:概念、原理、优缺点...
  4. css中图片有缩放和转动效果
  5. 爬虫-07-请求过程
  6. 史上首个人脸识别禁令出台,警察用来抓罪犯也不行!旧金山可真行
  7. POJ3253-Fence Repair
  8. 力软敏捷开发平台7.0.6旗舰版功能更新介绍
  9. 物联网通信技术-概述
  10. php流量单位换算处理,流量的换算(流量单位换算)
  11. vue UEditor集成秀米
  12. CentOS + Mongodb 搭建NodeBB [转载翻译]
  13. 如何使用sql语句算两经纬度的距离
  14. osg 根据两个点的经纬度计算方位角
  15. 面向对象--接口--接口的例题
  16. 人力资源知识图谱搭建及应用
  17. JS类中event的简单实现
  18. dell服务器物理盘blink,Blink
  19. 定制化开发小程序与模板开发小程序的区别?
  20. 李开复:渗透与价值——2012年的中国移动互联网

热门文章

  1. YOLOV7调试的bug
  2. 【C#】控制台应用程序闪退解决方法
  3. BeanFactory源码体系解析--AutowireCapableBeanFactory二
  4. 前端无法反序列化START\u数组标记-JSONCannot deserialize instance of `java.lang.String` out of START_ARRAY toke
  5. 避坑笔记之Ubuntu 20.04 安装 msfconsole
  6. 阅读英文原版计算机书籍的一些经验
  7. wps打开文件提示被锁定怎么办
  8. 阿里NLP架构与应用
  9. UBNT EdgeRouter-X对于某些网址ipv6下加载存在问题的解决方法
  10. 大学计算机基础教学网站