某策略游戏(SLG)数据分析:新增、付费和活动效果评估

article/2025/9/17 22:44:43

之前DC发起过一个关于游戏玩家付费预测的算法大赛,比赛所提供的玩家七日内游戏行为数据不仅可以用于算法比赛,也可以让我们利用数据进行一些分析,从而了解游戏的运营状况和数值状况。
本数据共包含有109个字段,一眼看上去有点蒙,如果没有玩过游戏可能根本就不了解这个字段有什么用,那个字段背后又代表了什么。当然你不了解游戏也不会影响你的数值结论产出,但是很可能会影响你得出正确结论。所以笔者每次分析一个游戏前都要去体验几天,这次也不例外,我的要塞等级升到了9级,对各种字段代表的含义也有了一定的掌握,因此才开始进行一些分析。

1、数据预处理

导入必要的包:数据处理包pandas和可视化包matplotlib和seaborn

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

导入数据

df = pd.read_csv(r'F:\数据分析项目\游戏数据分析\野蛮时代数据分析\tap_fun_train.csv')
pd.set_option('display.max_columns',110) #为了能看全所有的109列,需要设置最大展示列
df.head(5)

图片篇幅有限,只展示部分列:
在这里插入图片描述
对我们的分析比较有价值的列包含以下几个:

  • 用户信息字段:
    -
  • 基础资源消耗:

在这里插入图片描述

  • 加速类资源消耗:
    在这里插入图片描述
  • 对战和上线数据:
    在这里插入图片描述
  • 玩家付费数据:
    在这里插入图片描述
    选择字段
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']
key_data = df[item]
key_data.info()
# 其实后续使用中很多都直接使用了df里面的数据,key_data如果觉得重要可以单独存储,毕竟文件比较小。

在这里插入图片描述
这样,所有需要的字段都被选了出来。

2、新增用户分析

  • 新增用户标准:有注册行为。(因为这里也只有注册数据)
  • 通常来说,新增用户分析常常是基于渠道的,通过新增用户的量、转化率、留存率等来对比和评估不同渠道质量,当然我们这里没有渠道数据,太深入的新增用户分析没法开展了。在这里基于数据主要进行波动分析。
    数据表中有具体到时分秒的注册时间,我们先把日期和时间分别提取出来。

先看看register_time的数据类型:

key_data['register_time'].dtype

结果显示是‘o’,也就是object,字符串。其实字符串也可以直接用,如果需要日期、天数等的加减运算,可以转化为日期格式。
先截取日期
注册时间都是类似这种:'2018-01-26 00:01:05’格式的数据,所以可以直接截取字符串:

key_data['date'] = key_data['register_time'].apply(lambda x:x[5:10])
key_data['time'] = key_data['register_time'].apply(lambda x:x[11:13])

apply函数真的非常好用
统计每天的新增用户

x_data = key_data['date'].value_counts().reset_index() # 统计每天的注册人数,并做成DataFrame格式
x_data.columns = ['date','num']  # 改一下列名

可视化新增数据

# 设置显示中文:
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 使用seaborn画图:
plt.figure(figsize = (18,6)) # 图像大小
sns.set_style()
sns.lineplot(x = x_data['date'],y = x_data['num'],color = 'red')
plt.xticks(rotation = 50)
plt.xlabel('注册日期',fontsize = 15) # 横轴标签
plt.ylabel('新增用户数',fontsize = 15) # 纵轴标签
plt.title('新增用户变化',fontsize = 20) # 图表标题
plt.grid(True)   # 给图增加网格

在这里插入图片描述
就我自己做可视化的话,喜欢python和excel、power bi结合起来,更灵活。
从新增用户一个来月的数据可以出一个题:流量波动问题,请分析为什么2月19日的新增用户出现这么大的波动?请分析原因
我在博客里面提到过流量波动问题的分析,方方面面可能涉及的原因都提到了,这里再复习一遍:国家宏观政策、热点事件、常识判断、竞品行为、本产品行为、用户偏好、版本问题、统计口径和数据计算问题。虽然我们不了解具体业务发生的背景,但是可以稍微判断一下。波动发生的时间2018-02-19,是2018年春节期间(2.15-2.21)。所以2月19日新增用户大增原因可能是:

  • 春节假期效应。2月15日是除夕,春节假期第一天,注册人数出现一个小高峰,假期的拉动效应还是非常强的。
  • 运营商的拉新活动。我翻看了游戏运营方的微博,运营方在游戏中开展了一系列活动,包括舞狮活动、酋长参战、跨服战、爆竹活动等,这些活动和春节效应叠加,带来了注册人数的增加,出现峰值。

3、用户付费分析

3.1 游戏的总体付费转化率、ARPU和ARPPU

数据中用户的注册时间是1月26日-3月6日的,但游戏行为数据是7日的,具体哪7日并没有指明。
(1)总体付费转化率
总体付费转化率 = 付费用户数/活跃用户数
定义活跃用户:这里把平均在线时间超过30分钟的作为周活用户。

# 单独把付费数据提取出来
pay_data = df[['user_id','avg_online_minutes','pay_price','pay_count']]
# 活跃用户(WAU)
active_data = pay_data[pay_data['avg_online_minutes']>30]
# 计算付费转化率
active_data[active_data['pay_price']>0]['user_id'].count()/active_data['user_id'].count()

得到活跃新用户注册后七日内付费转化率为:22.3%
(2)ARPU和ARPPU
ARPU = 总付费金额/活跃用户数
ARPPU = 总付费金额/付费用户数

# 活跃用户(WAU)
active_data = pay_data[pay_data['avg_online_minutes']>30]
# 总付费金额
active_data['pay_price'].sum()
# ARPU
active_data['pay_price'].sum()/active_data['user_id'].count()
# ARPPU
active_data['pay_price'].sum()/active_data[active_data['pay_price']>0]['user_id'].count()

得到该游戏新用户前七天ARPU值为8.29元,ARPPU值为37.17元
然而如果不进行对比,我们就不知道游戏收入的好坏。根据《游戏数据分析实战》书中的说法,ARPU在3元以下较差,3-5元中等,5元以上算是优秀;而根据GameAnalytics2019年发布的《全球手游分析报告》,全球策略类(SLG)手游的ARPU值平均为0.4美元(约合2.83元),头部策略类(SLG)手游的ARPU大约为2.4美元(约合17元)。所以综上对比来看,本文分析案例的SLG手游收入处于优秀行列,但距离头部产品还有较大差距。
需要注意的是,其实很多数据如果不了解产出过程,就不能直接拿来做对比。就以上面的ARPU为例,付费总额基本没有太大歧义,但活跃用户的定义可能因公司、游戏或个人习惯而不同,最后计算出的ARPU值自然就不一样,如果我把活跃用户定义为平均在线时长在10分钟以上、1分钟以上,最后的ARPU又发生变化。不了解数据产出过程而直接进行比较,就失去了严谨性。

3.2 游戏的总体付费转化率、ARPU和ARPPU

(1)不同等级玩家的付费状况
玩过游戏的应该知道,要塞等级是决定玩家采集、战斗、研发、建筑等各项能力的基础,所以要塞等级代表了玩家体验游戏的程度。

  • 不同等级玩家人均付费统计
# 以要塞等级为分组,计算各组的人均付费情况
level_pay = df['pay_price'].groupby(by = df['bd_stronghold_level']).mean().reset_index()
# 可视化展示
plt.figure(figsize = (12,6))
plt.plot(level_pay['pay_price'],color = 'red')
plt.xticks(range(24))
plt.xlabel('要塞等级',fontsize = 13)
plt.ylabel('付费金额',fontsize = 13)
plt.title('各等级玩家人均付费', fontsize = 15)

在这里插入图片描述

  • 不同等级玩家人数统计
# 统计各等级玩家人数
level_user = df['user_id'].groupby(by = df['bd_stronghold_level']).count().reset_index()
# 可视化展示
plt.figure(figsize = (12,6))
plt.plot(level_user['user_id'],color = 'red')
plt.xticks(range(24))
plt.xlabel('要塞等级',fontsize = 13)
plt.ylabel('玩家人数',fontsize = 13)
plt.title('各等级玩家人数', fontsize = 15)

在这里插入图片描述

  • 不同等级玩家付费转化率统计
# 通过循环计算不同等级玩家的付费转化率
pay_rate = []
base_level = []
for i in range(24):level_data = df[df['bd_stronghold_level'] == i][['user_id','pay_price']]r = level_data[level_data['pay_price']>0]['user_id'].count()/level_data['user_id'].count()base_level.append(i)pay_rate.append(r)
# 把结果转成DataFrame表格
pay_rate_data = pd.DataFrame({'base':base_level,'pay':pay_rate})
# 可视化展示
plt.figure(figsize = (13,5))
plt.plot(pay_rate_data['pay'],color = 'red')
plt.xticks(range(24))
plt.xlabel('要塞等级',fontsize = 13)
plt.ylabel('付费率',fontsize = 13)
plt.title('不同等级玩家付费转化率',fontsize = 15)

在这里插入图片描述

  • 不同等级人均付费次数
level_count = df['pay_count'].groupby(by = df['bd_stronghold_level']).mean().reset_index()
plt.figure(figsize = (14,5))
plt.plot(level_count['pay_count'])
plt.xticks(range(24),fontsize = 13)
plt.xlabel('要塞等级',fontsize = 13)
plt.ylabel('付费次数',fontsize = 13)
plt.title('各等级人均付费次数',fontsize = 15)

在这里插入图片描述

  • 结论:
    (1)从人均付费金额(ARPU)来看,玩家在11、12级之后付费金额上升比较明显,尤其是14级之后上升明显加快;等级超过20级之后出现明显的波动,分析原因发现是因为样本量太少,代表性不强(21级12人,22级2人,23级1人)。
    (2)从付费转化率和人均付费次数来看,要塞等级超过8级之后付费转化率陡升,同时人均付费次数也随着等级增加而逐渐攀升。
    (3)低等级玩家数量太多,6级及以下的玩家数量非常庞大,具体来说level_user[:7]['user_id'].sum()/level_user['user_id'].sum(),占比高达92.4%。根据亲身的游戏体验,即使不肝不氪,两三天时间也能轻松达到6级。而数据却显示90%以上的玩家都没有达到6级,这就是问题所在,毕竟8级以后玩家付费才开始发力。

推测原因可能如下:新手前七日游戏体验不深入很大原因是新手引导的问题。根据我亲身体验的结果这个游戏对新手引导还算到位,一步一步指导我升级建筑、训练小兵。但是却没有关于各种资源及用途的介绍,让我有点混乱,如魔法有什么用,天赋、符文的用途等等,各种加速道具的使用等。因为新手期(7天)送的加速道具还是很多的,一两天完全可以帮助玩家轻松到6级。目前的新手引导基本上是一股脑引导玩家修造建筑,试想一直在“建造升级---->等待---->升更高级”来回循环,而不明白升级建筑有什么意义,很容易引起玩家的疲倦。新手期完全可以多加入些剧情动画,配合新手任务,给玩家带来沉浸式体验。

在使用python进行分组聚合计算的时候发现了一个比较有用的函数pivot_table,可以同时处理多列:

result = pd.pivot_table(df,index = ['bd_stronghold_level'],values = ['user_id','avg_online_minutes','pay_price','pay_count'],aggfunc = {'user_id':'count','avg_online_minutes':'mean','pay_price':'mean','pay_count':'mean'})

一行代码,结果全出来了。

4、春节拉新活动效果分析

还记得上面新增用户分析中的2月19日峰值吗,当时运营方推出了一些春节活动,为游戏带来了很多新用户。那么这次活动的效果如何呢?可以结合手边的数据进行一下并不严肃的分析。
一般来说,分析师在公司进行的营销活动分析是一个系统性的工作,绝不单单是看活动后的效果,而是活动前、活动中、活动后三个方面。这里就只从活动后的维度分析,主要包括活动的短期效果和长期效果。由于只有注册用户7天的行为数据,所以只能评估短期效果,主要从拉新量和新增用户质量两个维度分析。

(1)新用户增长量(拉新效果)

spring_data = key_data[key_data['date'] == '02-19']
register_data = key_data['user_id'].groupby(by = key_data['date']).count().reset_index()
register_data['user_id'].mean()
spring_data['user_id'].count()

根据运行结果可知,拉新活动期间新增注册用户117311人,对比平均每天的自然新增57200人,可以简单推算活动带来新用户60111,差不多翻了一倍,所以活动的拉新效果还算可以。当然,实际分析中要对比活动之前的目标。
(2)新用户的质量分析
活动带来的新增用户质量怎么样,这是运营方非常关注的,毕竟都是花钱做活动,谁也不希望带来的新用户全是羊毛党。羊毛党既不会迟到,更不会缺席,但是只要活动能带来足够的高质量用户,那就是非常有意义的。
从手头的数据出发,我们可以从付费率、ARPU、ARPPU、7日留存、平均在线时长等几个指标评价活动效果,对比的是所有新用户相应的平均数据。
先上代码:

# 活动新增活跃用户付费转化率:24.2%
spring_active_data = spring_data[spring_data['avg_online_minutes']>30]
spring_active_data[spring_active_data['pay_price']>0]['user_id'].count()/spring_active_data['user_id'].count()
# 活动新增活跃用户ARPU:12.66
spring_active_data['pay_price'].sum()/spring_active_data['user_id'].count()
# 活动新增活跃用户ARPPU:52.3
spring_active_data['pay_price'].sum()/spring_active_data[spring_active_data['pay_price']>0]['user_id'].count()
# 7日内留存率(注册后7天内活跃时间超过30分钟):2.87%
spring_active_data['user_id'].count()/spring_data['user_id'].count()
# 平均在线时长:4.9分钟
spring_data['avg_online_minutes'].mean()

可视化对比:
在这里插入图片描述
注:本文关于活跃用户的定义是平均在线时长(avg_online_minutes)高于30分钟的用户。

  • 付费转化率
    平均的付费转化率是22.3%,本次活动带来的新用户付费转化率为24.2%,略高于平均水平。

  • ARPU、ARPPU和人均付费次数
    所有用户的ARPU和ARPPU分别为8.29和37.2,本次活动带来的新用户ARPU和ARPPU分别为12.66和52.3,说明本次活动带来的活跃用户的付费水平较高。通过观察人均付费次数也可以看出本次活动的活跃用户人均付费次数1.01次高于平均水平的0.82次。

  • 7日内留存率和平均在线时长
    也就是新注册用户7日内活跃时长超出30分钟的用户比例,可以看出活动带来的新用户活跃度较低,只有2.87%,远低于平均的6.23%。活动拉新必然会流入很多非目标群体,活跃用户的比例相对会较低。同时看平均在线时长数据也可以看出,活动带来的新用户在线时长还不到其他用户的一半,说明活动带来的整体新用户的黏性较低。

  • 要塞等级
    活动带来的新用户中活跃用户的平均要塞等级为7.7级,高于7.1级的平均水平。

(3)结论
首先,活动的拉新效果明显,活动期间新注册用户几乎增长了一倍。
第二,活动拉来的新用户总体来说质量不高,几个指标的得分都不如自然流入的新用户高,这说明受运营活动影响而来的用户中无效用户的比例比较高,并没有为游戏带来多大收益。但是,活动带来的新用户中活跃用户的比例虽然较低,但是活跃用户的质量较高,用户黏性、付费转化率、付费金额、次数等均高于自然流入的用户。说明活动期间的营销行为起到了很好的拉动消费的作用,大大刺激了新玩家充值和消费。

所以,本次活动起到了很好的拉新和付费转化作用,从短期的数据来看为游戏带来了很多高质量用户付费转化、收入等都有所提高。活动效果的好坏跟时间选择也有很大关系,重要节假日做活动能够放大活动效果,毕竟可以借到东风,事半功倍。今年的春节,在疫情阴霾的笼罩之下却也带来了各大游戏的爆炸式增长,影视行业的寒冬却成了很多游戏最好的“春节档”。需要注意的是,在业务场景中,活动之前都会事先埋点,以便精准区分玩家来源,是自然流入还是活动导入,而且除了评价短期效果,还要追踪活动导入用户的长期留存、LTV等。除了单次的活动效果分析,还要做一些活动之间的对比,以便确定什么样的活动才更适合本游戏。


http://chatgpt.dhexx.cn/article/40jS0dnD.shtml

相关文章

python数据分析可视化项目——游戏销售量

python数据分析可视化项目——video游戏销售量 数据来源可视化数据准备游戏出版年份和销量统计——折线图游戏类型、出版商、游玩平台销量统计——柱形图游戏类型比例——饼图 数据来源 本项目数据来源于kaggle数据集,地址https://www.kaggle.com/datasets/gregoru…

【每周一本书】之《游戏数据分析实战》:盛大游戏数据分析专家亲历16年的实战经验分享

【数据猿导读】《游戏数据分析实战》贯穿整个游戏生命周期,提供了丰富的数据分析案例,从预热到封测,再到公测, 均为作者在实际工作中经历的真实案例。案例分析包含数据来源、分析方法、分析过程、分析结论及小结。通过学习本书不但…

大数据开发:基于Hadoop的数据分析平台

互联网的发展,带来了各种数据的爆发式增长,所以接入互联网的相关操作行为,都化为虚拟的数据被记录了下来。大数据时代的带来,一个明显的变化就是全样本数据分析,面对TB/PB级及以上的数据规模,Hadoop始终占据…

移动游戏数据分析(入门篇)

作者:GRG专栏作家 刘异 网龙公司 产品分析经理,专注移动互联网数据分析 前言: 最近一段时间在做部门网游业务的分析沉淀和框架培训,刚好应网大的需求在公司内开设游戏产品数据分析师认证的课程,因此开始尝试把这几年…

从零开始的游戏运营数据分析生活?如何构建数据分析的逻辑框架?

5月30日,数数课堂特邀盛趣游戏数据分析专家黎湘艳老师坐镇第五期直播。 黎湘艳老师向学员们分享了历经超50多款产品沉淀下来的数据分析思维,让大家对数据分析的岗位理解从一个日常节点,展开成为可以预测产品、行业走向的方向标。 /以下为直播当天文字实录/ 我在《游戏数据…

数据分析岗之游戏业务类面试整理学习

⌚️200506 面试某游戏公司数据分析岗的准备 碎碎念 ⚠️部分文字是整理了其他前辈的文章(具体见最后),仅用来学习,这样复习更有体系,也希望能帮助到其他同学,遵纪守法好青年~ 如果哪篇漏了也…

宝可梦数据分析

pokemon_analysis 一、分析背景二、分析步骤三、其他分析特别说明 一、分析背景 宝可梦数据分析-平民最强宝可梦选择方案 二、分析步骤 下载数据集数据预处理数据分析及数据可视化结论 阿里云 导入库 #导入库 import pandas as pd import seaborn as sns import matplotli…

4000字干货 | 如何搭建游戏数据分析平台?

本文作者为数数科技某游戏客户的运营总监,在使用数数科技的产品之前,他们在内部尝试自建数据分析平台,“从入门到放弃”。上线数数科技的大数据分析平台后,该公司一款全球下载量5000W+的休闲游戏每天所有的数据都在平台上流转。 1 为什么需要数据分析 移动游戏已经进入…

电子游戏销售数据分析(基于Python+Tableau)

1 项目简介 1.1 数据描述 (1)数据来源 本次分析所采用的数据来源于kaggle上的Video Game Sales数据集 ,该数据集通过爬虫从vgchartzwangz网站上获取,主要描述了全球市场上电子游戏的一个销售情况。电子游戏(Video G…

游戏数据分析用到的模型(二)留存率预估

本文主要参考了黎湘艳、叶洋的经典著作《游戏数据分析实战》。这本书堪称游戏数据分析的开山之作,这里向两位作者表示感谢。 关于留存率的模型,参考4.4.2节。 我们要先计算出1日留存率,2日留存率,……,N日留存率。 作…

数据分析实战—Video Game Sales电子游戏销售分析

文章目录 一、项目背景及目的1.1项目背景1.2分析目的 二、数据收集与整理2.1数据来源2.2数据说明2.3理解数据 三、数据清洗3.1导入数据3.2列字段重命名3.3缺失值处理3.4数据类型转换3.5异常值处理3.6保存数据为csv格式 四、数据分析4.1 从总体角度4.2 从平台角度4.3从类型角度4…

Python | 英雄联盟游戏数据分析

一、项目背景 EDG夺得2021英雄联盟全球总决赛冠军,这场比赛让所有观赛者热血沸腾,也唤起了我这个沉睡多年老玩家对MOBA游戏的兴趣,兴冲冲地下载了英雄联盟,却发现这并不是一个可以轻松上手的游戏。 对于时下最流行的MOBA类游戏—…

【毕业设计】大数据 - 网络游戏数据分析可视化

文章目录 1. 数据集说明2. 数据处理3. 数据分析可视化3.1 新增用户3.2 用户活跃度3.3 用户消费情况3.4 用户游戏情况 4 最后 🧿 选题指导, 项目分享: https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5…

游戏数据分析方法-活跃向

许多公司都会做数据分析系统。而不同游戏产品,一个产品的不同阶段,不同版本所分析的内容都是会跟进实际需求而不一样的。所以除了一些通用的数据指标外,针对不同的问题,分析方法也不一样,这里举几个案例来展示一般的数…

电子游戏数据分析报告

数据分析报告结论: 1.时间维度分析,从全球各地区的销售额变化趋势来看,全球销售额整体是从1980年开始逐步上升直到2008年达到销量顶峰后逐步降低,2008年后直接逐步下降,局部在2000年及2003年都有稍有下跌,…

python游戏数据分析

python游戏数据分析 数据分析思维导图 1.项目背景简介 本次项目分析所用数据集来源于kaggle steam游戏各地区销售数据,可以通过不同国家、发布者、游戏类型,地区收益等因素,对销售数据进行分析,提出有效的建议,帮助…

游戏数据分析小总结

数据分析步骤 明确要求 数据收集 企业内部数据 企业外部数据 数据处理 数据分析 数据分析即用适当的数据分析方法及工具,对处理过的数据进行分 析,提取有价值的数据,形成有效结论的过程。常用的分析方法有对比分析法、分组分析法、结构…

《游戏数据分析实战》总结思考

对于一个游戏行业的门外汉,这本书对于了解游戏业务具有很强的指导性,通过大量的案例说明了游戏这一具有特殊行业逻辑的行业,如何针对性地进行数据分析。 一、游戏关键数据指标 1、转化率——从点击广告到付费的每一步转化(常使用…

【数据分析项目实战】篇1:游戏数据分析——新增、付费和用户行为评估

目录 0 结论 1 背景介绍 1.1 游戏介绍 1.2 数据集介绍 2 分析思路 3 新增用户分析 3.1 新增用户数: 3.2 每日新增用户数: 3.3 分析 4 活跃度分析 4.1 用户平均在线时长 4.2 付费用户平均在线时长 4.3 日活跃用户(日平均在线时长…

游戏的数据和分析

一、关于数据 数据可以分为两类,一类为运营指标数据。一类为业务行为数据。 1.运营指标数据 比如DAU,PCU,LTV,ROI等常用的代表游戏目前线上运营状态的一些数据指标,用单个指标或者多个指标组合来反映游戏目前的线上运营状态,指标之间一般都有…