某策略游戏(SLG)数据分析:新增、付费和活动效果评估 您所在的位置:网站首页 新增用户留存分析 某策略游戏(SLG)数据分析:新增、付费和活动效果评估

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

2024-07-05 13:00| 来源: 网络整理| 查看: 265

之前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等。除了单次的活动效果分析,还要做一些活动之间的对比,以便确定什么样的活动才更适合本游戏。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有