游戏运营分析

项目概况

  • 为了了解当前游戏的运营情况,对游戏从以下四个方面进行分析:

    • 1.新增玩家分析:从玩家数量、付费玩家占比、每日新增玩家数。

    • 2.玩家活跃度分析:从不同用户在线时长、分布特征展开分析。

    • 3.玩家付费情况分析:从PUR,ARPPU、ARPU等关键指标进行分析。

    • 4.玩家游戏习惯分析:从不同玩家的PVP、PVE这两个指标得出的情况展开分析。

字段说明

在这里插入图片描述

数据加载

#导入需要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#忽略警告
import warnings
warnings.filterwarnings('ignore')

#中文乱码的处理
#plt.rcParams['font.sans-serif']=['PingFang HK'] #mac系统使用
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']# windows使用设置微软雅黑字体
plt.rcParams['axes.unicode_minus'] = False # 避免坐标轴不能正常的显示负号

#./gamedata.csv
df = pd.read_csv('./gamedata.csv').drop(columns='Unnamed: 0')
df.head()

在这里插入图片描述

df.shape

(2288007, 10)

df.info()

在这里插入图片描述

数据预处理

#将register_time转换为时间类型
df['register_time'] = pd.to_datetime(df['register_time'])

#将注册时间中的日期提取出来:strftime返回的是字符串类型的数据
df['register_time'] = df['register_time'].map(lambda x:x.strftime('%Y-%m-%d'))

df['register_time'] = pd.to_datetime(df['register_time'])

#查看缺失值
df.isnull().any(axis=0)

在这里插入图片描述

#查看重复数据
df.duplicated().sum()

0

#查看异常数据
df.describe().T

在这里插入图片描述

新增玩家分析

新增玩家数量
  • 查看每日新增玩家数量
    • 查看不同注册日期的用户数量
day_grow_df = df.groupby(by='register_time')['user_id'].nunique().reset_index().rename(columns={'register_time':'注册时间','user_id':'新增用户'})
day_grow_df.head()

在这里插入图片描述

plt.figure(figsize=(15,5))
plt.plot(day_grow_df['注册时间'],day_grow_df['新增用户'])
plt.xticks(rotation=30)

在这里插入图片描述

新增付费玩家用户数量
  • 查看每日新增付费玩家数量
pay_df = df.loc[df['pay_price'] > 0]
pay_grow_df = pay_df.groupby(by='register_time')['user_id'].nunique().reset_index().rename(columns={'register_time':'注册时间','user_id':'新增用户'})
pay_grow_df.head()

在这里插入图片描述

plt.figure(figsize=(15,5))
plt.plot(pay_grow_df['注册时间'],pay_grow_df['新增用户'])
x = plt.xticks(rotation=30)

在这里插入图片描述

  • 结论:
    • 每日新增玩家在2月18日左右有一次大高峰增长,在1月27,2月1和2月15日各自有几次小幅度增长。
    • 付费用户量在1月26日后,用户量出现浮动式的下滑。可能是用户对游戏了解不够或者游戏活动策划出现了问题。
新增付费玩家占比
#查看新增用户数量
grow_sum = day_grow_df['新增用户'].sum()

#查看新增付费玩家用户数量
pay_count_sum = pay_grow_df['新增用户'].sum()

#绘制图例显示新增用户总数和新增付费用户总数的占比情况
plt.figure(figsize=(8,8))
x = plt.pie([grow_sum,pay_count_sum],labels=['未付费','付费'],autopct='%.2f%%')

在这里插入图片描述

玩家活跃度分析

全部玩家平均在线时长
avg_time = df['avg_online_minutes'].mean()
avg_time

10.207489627790176

付费玩家的平均在线时长
pay_avg_time = df.loc[df['pay_price']>0]['avg_online_minutes'].mean()
pay_avg_time

140.18774584526693
结论:可以看出,付费玩家的平均在线时长要远远大于全体玩家的平均值,活跃度比他们高得多。

平均在线时长的分布特点
  • 全部玩家在线时长的分布特点
plt.figure(figsize=(15,7))
ret = plt.hist(df['avg_online_minutes'],bins=500)
ret[0][[0,1]],ret[1][[0,1,2]]

在这里插入图片描述

df['avg_online_minutes'].describe()

在这里插入图片描述

结论:在所有游戏玩家中,75%的玩家平均在线时长<=5分钟,说明用户流失非常严重。

  • 付费玩家在线时长的分布特点
pay_df = df.loc[df['pay_price'] > 0]
ret = plt.hist(pay_df['avg_online_minutes'],bins=50)
ret[0][[0,1]],ret[1][[0,1,2]]

在这里插入图片描述

pay_df['avg_online_minutes'].describe()

在这里插入图片描述

结论:付费用户中,75%的用户平均在线时长都超过了33分钟。在线时长0-33分钟的用户数量最多为10479,其次为在线33-66分钟,人数为6757。

玩家付费情况分析

关键指标
  • AU:活跃用户数
    • 平均在线时长超过15分钟的用户数量
  • ARPU:平均每个活跃用户的收入
    • 总收入 / AU活跃用户数
  • APA:活跃付费用户数
    • 是活跃用户并且也是付费用户的用户数量
  • ARPPU:平均付费玩家收入
    • 总收入 / APA活跃付费用户数
  • PUR:付费率
    • APA活跃付费用户数 / AU活跃用户数
指标计算
  • 活跃用户数AU
    • 平均在线时长超过15分钟的用户数量
au_df = df.loc[df['avg_online_minutes'] > 15]
AU = au_df['user_id'].count()
AU

227059

  • 平均每个活跃用户的收入ARPU
    • 总收入 / AU活跃用户数
#总收入
total_amount = df['pay_price'].sum()
total_amount = float(format(total_amount,'.2f'))
total_amount

1223326.66

ARPU = total_amount / AU
ARPU = float(format(ARPU,'.2f'))
ARPU

5.39

  • 活跃付费用户数APA
    • 是活跃用户并且也是付费用户的用户数量
ex = (df['avg_online_minutes'] > 15) & (df['pay_price'] > 0)
au_pay_df = df.loc[ex] #找到活跃且付费的行数据
APA = au_pay_df['user_id'].count()
APA

36293

  • 平均付费玩家收入ARPPU
    • 总收入 / APA活跃付费用户数
ARPPU = total_amount / APA
  • 付费率PUR:
    • APA活跃付费用户数 / AU活跃用户数
PUR = APA / AU
PUR

0.15983951307809866

  • 核心指标数据可视化
plt.figure(figsize=(8,5))
ax1 = plt.subplot(1,2,1)
ax1.bar(['AU','APA'],[AU,APA],width=0.5,alpha=0.5)
ax1.set_ylabel('活跃人数')

ax2 = plt.subplot(1,2,2)
ax2.bar(['ARPU','ARPPU'],[ARPU,ARPPU],width=0.5,color='red',alpha=0.5)
ax2.set_ylabel('消费金额')

在这里插入图片描述

  • 结论:
    • APA活跃付费用户远低于活跃用户数AU。并且该游戏的活跃用户的人均付费率ARPU很低,说明游戏收入表现较差,但是对比ARPU,平均每个付费用户的ARPPU很高,是ARPU的6倍多,说明游戏对活跃用户的体验感较差。
    • 付费率为0.15偏低,因此可以开展首冲活动,让用户充值少量的钱,开始逐渐付费,例如充值6元获得限量的礼包。付费率高,就可以更多的获得渠道商的青睐。

玩家游戏习惯分析

关键指标:
  • PVP:与玩家对战次数
  • PVE:与电脑对战次数
AU活跃用户玩家的PVP情况
  • 活跃用户平均的PVP次数
au_pvp_bettle_mean = au_df['pvp_battle_count'].mean()
au_pvp_bettle_mean

15.320026953346927

  • 活跃用户PVP的总次数(与玩家主动和被动发起对战的总次数和)
au_pvp_battle_sum = au_df['pvp_battle_count'].sum()
au_pvp_battle_sum

3478550

  • 活跃用户PVP发起的总次数(主动与玩家对战次数)
au_pvp_lanch_sum = au_df['pvp_lanch_count'].sum()
au_pvp_lanch_sum

2060611

  • 活跃用户主动发起PVP的概率
    • 活跃用户发起对战的总次数 / 活跃用户PVP的总次数
au_lanch_rate = au_pvp_lanch_sum / au_pvp_battle_sum
au_lanch_rate

0.5923764212099869

  • 活跃用户PVP胜利的总次数
au_pvp_win_sum = au_df['pvp_win_count'].sum()
au_pvp_win_sum

2019277

  • 活跃用户PVP的胜率
    • PVP胜利的总次数 / 活跃用户PVP的总次数
pvp_win_rate = au_pvp_win_sum / au_pvp_battle_sum
pvp_win_rate

0.580493883945897

print(f'活跃用户平均PVP次数:{au_pvp_bettle_mean}')
print(f'活跃用户主动发起PVP概率:{au_lanch_rate}')
print(f'活跃用户PVP胜利概率:{pvp_win_rate}')

活跃用户平均PVP次数:15.320026953346927
活跃用户主动发起PVP概率:0.5923764212099869
活跃用户PVP胜利概率:0.580493883945897

APA玩家(活跃付费用户)的PVP情况
#找到活跃且付费的行数据
au_pay_df = df.loc[ex] 

#活跃付费用户平均的PVP次数
buy_au_pvp_battle_mean = au_pay_df['pvp_battle_count'].mean()

#活跃付费用户PVP的总次数(与玩家主动和被动发起对战的总次数和)
buy_au_pvp_battle_sum = au_pay_df['pvp_battle_count'].sum()

#活跃付费用户PVP发起的总次数(主动与玩家对战次数)
buy_au_pvp_lanch_sum = au_pay_df['pvp_lanch_count'].sum()

#活跃付费用户主动发起PVP的概率:活跃付费用户发起对战的总次数 / 活跃付费用户PVP的总次数
buy_au_lanch_rate = buy_au_pvp_lanch_sum / buy_au_pvp_battle_sum

#活跃付费用户PVP胜利的总次数
buy_au_pvp_win_sum = au_pay_df['pvp_win_count'].sum()

#活跃付费用户PVP的胜率:PVP胜利的总次数 / 活跃付费用户PVP的总次数
buy_pvp_win_rate = buy_au_pvp_win_sum / buy_au_pvp_battle_sum

print(f'活跃付费用户平均PVP次数:{buy_au_pvp_battle_mean}')
print(f'活跃付费用户主动发起PVP概率:{buy_au_lanch_rate}')
print(f'活跃付费用户PVP胜利概率:{buy_pvp_win_rate}')

活跃付费用户平均PVP次数:28.335023282726695
活跃付费用户主动发起PVP概率:0.6934000931577663
活跃付费用户PVP胜利概率:0.7348251541527652

  • 结论:在PVP活动中,APA玩家主动发起挑战的概率明显高于AU玩家,并且在对战中获胜的概率更高。
同理可以分析得到:

AU活跃用户玩家的PVE(玩家与电脑对战的次数)情况和APA玩家(活跃付费用户)的PVE情况。并且发现:在PVE活动中,APA玩家发起进攻的概率和胜利的概率与AU玩家基本持平;另外游戏的PVE难度不高,玩家的PVE胜率为90%,可以开展多种PVE的挑战难度。

内容来自大数据分析课程。

  • 33
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ak2111

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值