Python数据分析之对一个游戏的运营情况进行分析

2023-11-15

Python数据分析之对一个游戏的运营情况进行分析

一、分析目标

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

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

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

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

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

二、数据介绍

数据来源于网络数据,数据主要记录了一段时间内,用户的相关行为数据。

对如下字段给出相关注释

‘user_id’, #玩家唯一ID
‘pay_price’, #付费金额
‘register_time’, #玩家注册时间
‘avg_online_minutes’, #在线时长
‘pvp_battle_count’, #与玩家对战次数
‘pvp_lanch_count’, #主动发起与玩家对战的次数
‘pvp_win_count’, #与玩家对战获胜的次数
‘pve_battle_count’, #与电脑对战次数
‘pve_lanch_count’, #主动发起与电脑对战的次数
‘pve_win_count’ #与电脑对战获胜次数

三、结论

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对战。

四、详细分析

In [33]:

#导入需要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] 
#用来正常显示负号
plt.rcParams['axes.unicode_minus']=False
#忽略警告
import warnings
warnings.filterwarnings('ignore')

In [34]:

df = pd.read_csv('/home/mw/input/game_data8690/game_data.csv')

In [35]:

# 查看数据的前5行
df.head()

Out[35]:

Unnamed: 0 user_id register_time wood_add_value wood_reduce_value stone_add_value stone_reduce_value ivory_add_value ivory_reduce_value meat_add_value sr_rss_help_bonus_level pvp_battle_count pvp_lanch_count pvp_win_count pve_battle_count pve_lanch_count pve_win_count avg_online_minutes pay_price pay_count
0 0 14933 2018-03-08 20:27:57 166415.0 138362.0 0 0 0 0 258522 0 0 0 0 1 1 1 8.0 0.0 0
1 1 14934 2018-03-08 20:29:42 10000.0 600.0 0 0 0 0 10000 0 0 0 0 0 0 0 0.0 0.0 0
2 2 14935 2018-03-08 20:30:13 10000.0 3700.0 0 0 0 0 10000 0 0 0 0 0 0 0 17.0 0.0 0
3 3 14936 2018-03-08 20:31:41 210000.0 0.0 200000 0 200000 0 610000 0 0 0 0 0 0 0 2.0 0.0 0
4 4 14937 2018-03-08 20:32:07 11500.0 3700.0 0 0 0 0 11000 0 0 0 0 0 0 0 0.0 0.0 0

5 rows × 109 columns

In [36]:

# 获取需要的列
reg_sevendays_data = df[
                            [
                             'user_id',                         #玩家唯一ID
                             'pay_price',                       #付费金额
                             'register_time',                   #玩家注册时间
                             'avg_online_minutes',              #在线时长
                             'pvp_battle_count',                #与玩家对战次数
                             'pvp_lanch_count',                 #主动发起与玩家对战的次数
                             'pvp_win_count',                   #与玩家对战获胜的次数
                             'pve_battle_count',                #与电脑对战次数
                             'pve_lanch_count',                 #主动发起与电脑对战的次数
                             'pve_win_count'                    #与电脑对战获胜次数                
                            ]
                       ]               
reg_sevendays_data.head()

Out[36]:

user_id pay_price register_time avg_online_minutes pvp_battle_count pvp_lanch_count pvp_win_count pve_battle_count pve_lanch_count pve_win_count
0 14933 0.0 2018-03-08 20:27:57 8.0 0 0 0 1 1 1
1 14934 0.0 2018-03-08 20:29:42 0.0 0 0 0 0 0 0
2 14935 0.0 2018-03-08 20:30:13 17.0 0 0 0 0 0 0
3 14936 0.0 2018-03-08 20:31:41 2.0 0 0 0 0 0 0
4 14937 0.0 2018-03-08 20:32:07 0.0 0 0 0 0 0 0

In [37]:

# 查看数据信息
reg_sevendays_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 828934 entries, 0 to 828933
Data columns (total 10 columns):
user_id               828934 non-null int64
pay_price             828934 non-null float64
register_time         828934 non-null object
avg_online_minutes    828934 non-null float64
pvp_battle_count      828934 non-null int64
pvp_lanch_count       828934 non-null int64
pvp_win_count         828934 non-null int64
pve_battle_count      828934 non-null int64
pve_lanch_count       828934 non-null int64
pve_win_count         828934 non-null int64
dtypes: float64(2), int64(7), object(1)
memory usage: 63.2+ MB

以上数据统计的是用户注册后七天内的数据汇总表格;
无缺失值;
需要将1-9列转化成datetime,int或float类型;

In [38]:

# 修改数据类型
reg_sevendays_data.pay_price = reg_sevendays_data.pay_price.astype('float')
reg_sevendays_data.register_time = reg_sevendays_data.register_time.astype('datetime64')
reg_sevendays_data.avg_online_minutes = reg_sevendays_data.avg_online_minutes.astype('float')
reg_sevendays_data.pvp_battle_count = reg_sevendays_data.pvp_battle_count.astype('int')
reg_sevendays_data.pvp_lanch_count = reg_sevendays_data.pvp_lanch_count.astype('int')
reg_sevendays_data.pvp_win_count = reg_sevendays_data.pvp_win_count.astype('int')
reg_sevendays_data.pve_battle_count = reg_sevendays_data.pve_battle_count.astype('int')
reg_sevendays_data.pve_lanch_count = reg_sevendays_data.pve_lanch_count.astype('int')
reg_sevendays_data.pve_win_count = reg_sevendays_data.pve_win_count.astype('int')

In [39]:

# 查看数据信息
reg_sevendays_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 828934 entries, 0 to 828933
Data columns (total 10 columns):
user_id               828934 non-null int64
pay_price             828934 non-null float64
register_time         828934 non-null datetime64[ns]
avg_online_minutes    828934 non-null float64
pvp_battle_count      828934 non-null int64
pvp_lanch_count       828934 non-null int64
pvp_win_count         828934 non-null int64
pve_battle_count      828934 non-null int64
pve_lanch_count       828934 non-null int64
pve_win_count         828934 non-null int64
dtypes: datetime64[ns](1), float64(2), int64(7)
memory usage: 63.2 MB

In [40]:

# 将时间变成Y-m-d类型的数据
reg_sevendays_data['register_date'] = reg_sevendays_data.register_time.apply(lambda x : x.strftime('%Y-%m-%d'))

In [41]:

# 查看更改后的数据
reg_sevendays_data.head()

Out[41]:

user_id pay_price register_time avg_online_minutes pvp_battle_count pvp_lanch_count pvp_win_count pve_battle_count pve_lanch_count pve_win_count register_date
0 14933 0.0 2018-03-08 20:27:57 8.0 0 0 0 1 1 1 2018-03-08
1 14934 0.0 2018-03-08 20:29:42 0.0 0 0 0 0 0 0 2018-03-08
2 14935 0.0 2018-03-08 20:30:13 17.0 0 0 0 0 0 0 2018-03-08
3 14936 0.0 2018-03-08 20:31:41 2.0 0 0 0 0 0 0 2018-03-08
4 14937 0.0 2018-03-08 20:32:07 0.0 0 0 0 0 0 0 2018-03-08

1.新增玩家分析

1.1新增玩家数量

In [42]:

# 查看每日的新增玩家数量
reg_sevendays_data.register_date.unique()

Out[42]:

array(['2018-03-08', '2018-03-09', '2018-03-10', '2018-03-11',
       '2018-03-12', '2018-03-13', '2018-03-14', '2018-03-15',
       '2018-03-16', '2018-03-17', '2018-03-18', '2018-03-19',
       '2018-03-20', '2018-03-21', '2018-03-22', '2018-03-07'],
      dtype=object)

In [43]:

# 看用户id是否重复
reg_sevendays_data.user_id.nunique()

Out[43]:

828934

In [44]:

# 用户ID不重复,根据用户ID计算出每天新增的人数
day_grow_num = reg_sevendays_data.groupby('register_date').agg({'user_id':'count'}).reset_index().rename(columns={'user_id':'grow_num'})
day_grow_num

Out[44]:

register_date grow_num
0 2018-03-07 42050
1 2018-03-08 39826
2 2018-03-09 62117
3 2018-03-10 114035
4 2018-03-11 59038
5 2018-03-12 45172
6 2018-03-13 63141
7 2018-03-14 44502
8 2018-03-15 42782
9 2018-03-16 51064
10 2018-03-17 47506
11 2018-03-18 44449
12 2018-03-19 43487
13 2018-03-20 40666
14 2018-03-21 46736
15 2018-03-22 42363

1.2新增付费玩家数量

In [45]:

# 查看付费玩家
paying_num = reg_sevendays_data[reg_sevendays_data['pay_price']>0]
paying_grow_num = paying_num.groupby('register_date').agg({'user_id':'count'}).reset_index().rename(columns={'user_id':'grow_num'})
paying_grow_num

Out[45]:

register_date grow_num
0 2018-03-07 1069
1 2018-03-08 904
2 2018-03-09 1163
3 2018-03-10 1095
4 2018-03-11 1177
5 2018-03-12 1237
6 2018-03-13 1062
7 2018-03-14 1256
8 2018-03-15 1224
9 2018-03-16 1703
10 2018-03-17 1334
11 2018-03-18 1248
12 2018-03-19 1412
13 2018-03-20 1220
14 2018-03-21 1354
15 2018-03-22 1091

In [46]:

# 创建画布
plt.figure(figsize=(15,8))
# 绘制折线图
# 实例化
ax1 = plt.gca()
ax2 = plt.gca()

ax1 = plt.gca() # 获取当前轴域
ax1.set_xlabel('日期') # 设置x轴标签
ax1.set_ylabel('新增玩家人数', color='r') # 设置y轴标签
ax1.plot(day_grow_num.register_date, day_grow_num.grow_num, 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(paying_grow_num.register_date, paying_grow_num.grow_num, color='blue',label='新增付费玩家人数',marker='o',alpha=0.5)
ax2.tick_params(axis='y', labelcolor='blue')

plt.title('新增玩家数量',size=25)
plt.show()

img

观察上图可知,每日新增玩家在3/10日左右新增玩家有一次大高峰增长,在3/13日左右有一次小增长;新增付费用户数在3/16号达到顶峰,但是后续也是持续下降;说明在这次活动过后,玩家的新增数量没有显著提升,可见活动对于提升游戏的人气帮助不大;活动仍然还需要持续一定的时间,让玩家充分了解游戏。

1.3新增付费玩家占比

In [47]:

# 新增玩家数
total_num = day_grow_num.grow_num.sum()
total_num

Out[47]:

828934

In [48]:

# 新增付费玩家数
paying_num = paying_grow_num.grow_num.sum()
paying_num

Out[48]:

19549

In [49]:

# 制作占比的饼状图
plt.figure(figsize=(8,8))
# 绘图
patches,l_text,p_text = plt.pie([total_num-paying_num,paying_num],
                                labels=['未付费','付费'],
                                labeldistance = 0.3,
                                colors=['#87CEFA','#FFC0CB'],
                                explode=[0.01,0.05],
                                autopct='%1.1f%%',
                               pctdistance=1.15)
# 设置标签大小
for t in l_text:
    t.set_size(20)
# 设置百分数字体大小
for t in p_text:
    t.set_size(20)
# 设置标题
plt.title('付费用户仅占新增用户的2.4%',size=25)
plt.show()

img

2.玩家活跃度分析

2.1全部玩家平均在线时长

In [50]:

avg_time = reg_sevendays_data.avg_online_minutes.mean()
avg_time

Out[50]:

11.62811755821332

2.2 付费玩家的平均在线时长

In [51]:

paying_avg_time = reg_sevendays_data[reg_sevendays_data.pay_price > 0].avg_online_minutes.mean()
paying_avg_time

Out[51]:

135.78975906695996

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

2.3 平均在线时长的分布特点

In [52]:

# 全体用户的时长分布特点

In [53]:

# 绘制箱线图
plt.figure(figsize=(10,10))
plt.boxplot(reg_sevendays_data.avg_online_minutes)
plt.show()

img

In [54]:

# 查看描述统计值
reg_sevendays_data.avg_online_minutes.describe()

Out[54]:

count    828934.000000
mean         11.628118
std          42.814941
min           0.000000
25%           0.000000
50%           2.000000
75%           5.000000
max        1606.000000
Name: avg_online_minutes, dtype: float64

In [55]:

# 付费用户的时长分布特点

In [56]:

# 绘制箱线图
plt.figure(figsize=(10,10))
plt.boxplot(reg_sevendays_data[reg_sevendays_data.pay_price > 0].avg_online_minutes)
plt.show()

img

In [57]:

# 查看描述统计值
reg_sevendays_data[reg_sevendays_data.pay_price > 0].avg_online_minutes.describe()

Out[57]:

count    19549.000000
mean       135.789759
std        146.600271
min          0.000000
25%         31.000000
50%         84.000000
75%        191.000000
max       1081.000000
Name: avg_online_minutes, dtype: float64

右上面的数据我们可以发现,75%的用户平均使用时长<=5分钟,也就是说用户流失非常严重;
付费用的75%的用户平均在线时长都超过了31分钟;

3.玩家付费情况分析

关键指标

AU、PU、APA、ARPU、ARPPU、PUR

In [58]:

# 每个活跃玩家收入
# 活跃用户数
AU = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].user_id.count() # 将平均在线时长>=15分钟定义为活跃用户
# 总收入
total_revenue = reg_sevendays_data.pay_price.sum()
# 平均每个活跃用户收入
ARPU = total_revenue/AU
# 活跃付费用户数
APA = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].user_id.count()
# 平均付费玩家收入
ARPPU = total_revenue/APA
# 付费率
PUR = APA/AU
print(f'AU:{AU}')
print(f'total_revenue:{total_revenue}')
print(f'ARPU:{ARPU}')
print(f'APA:{APA}')
print(f'ARPPU:{ARPPU}')
print(f'PUR:{PUR}')

AU:102224
total_revenue:556900.0400000003
ARPU:5.44784042886211
APA:17072
ARPPU:32.620667760074994
PUR:0.16700579120363124

In [59]:

# 将数据可视化

fig,ax = plt.subplots(1,2,figsize=(15,10))
ax1,ax2 = ax.flatten()
ax1.bar(['AU','APA'],[AU,APA],width=0.5,alpha=0.5)
ax1.set_ylabel('活跃人数',size=20)

ax2.bar(['ARPU','ARPPU'],[ARPU,ARPPU],width=0.5,color='r',alpha=0.5)
ax2.set_ylabel('消费金额',size=20)
plt.show()

img

该游戏的人均付费率ARPU很低,说明游戏收入表现较差,但是对比ARPU,平均每个付费用户的ARPPU很高,是ARPU的6倍多,针对这一点,我们可以开发更多的针对鲸鱼用户和海豚用户的玩法,让他们玩的更开心。
付费率偏低,我们可以开展首冲活动,让用户充值少量的钱,开始逐渐付费,例如充值6元获得限量的礼包。付费率高,就可以更多的获得渠道商的青睐。

4.玩家游戏习惯分析

关键指标 PVP/PVE

4.1AU玩家PVP情况

In [60]:

# 活跃用户平均PVP次数
AU_pvp_battle_coun = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].pvp_battle_count.mean()

# 活跃用护pvp总次数
AU_count_pvp = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].pvp_battle_count.sum()
# 活跃用护pvp发起次数
AU_count_lanch_pvp = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].pvp_lanch_count.sum()
# 活跃用户主动发起PVP概率
AU_rate_lanch_pvp = AU_count_lanch_pvp/AU_count_pvp

# 活跃用户PVP胜利总次数
AU_num_win_pvp = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].pvp_win_count.sum()
# 活跃用户PVP胜利概率
AU_rate_win_pvp = AU_num_win_pvp/AU_count_pvp


print(f'活跃用户平均PVP次数:{AU_pvp_battle_coun}')
print(f'活跃用户主动发起PVP概率:{AU_rate_lanch_pvp}')
print(f'活跃用户PVP胜利概率:{AU_rate_win_pvp}')
活跃用户平均PVP次数:14.998982626389106
活跃用户主动发起PVP概率:0.5679058161194217
活跃用户PVP胜利概率:0.5309191680971735

4.2APA玩家PVP情况

In [61]:

# 付费用户平均PVP次数
APA_pvp_battle_coun = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].pvp_battle_count.mean()

# 付费用护pvp总次数
APA_count_pvp = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].pvp_battle_count.sum()
# 付费用护pvp发起次数
APA_count_lanch_pvp = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].pvp_lanch_count.sum()
# 付费用户主动发起PVP概率
APA_rate_lanc_pvp = APA_count_lanch_pvp/APA_count_pvp

# 付费用户PVP胜利总次数
APA_num_win_pvp = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].pvp_win_count.sum()
# 付费用户PVP胜利概率
APA_rate_win_pvp = APA_num_win_pvp/APA_count_pvp

print(f'付费用户平均PVP次数:{APA_pvp_battle_coun}')
print(f'付费用户主动发起PVP概率:{APA_rate_lanc_pvp}')
print(f'付费用户PVP胜利概率:{APA_rate_win_pvp}')
付费用户平均PVP次数:27.22176663542643
付费用户主动发起PVP概率:0.6550900522884255
付费用户PVP胜利概率:0.6868289114109267

4.3AU玩家PVE情况

In [62]:

# 活跃用户平均PVP次数
AU_pve_battle_coun = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].pve_battle_count.mean()

# 活跃用护pvp总次数
AU_count_pve = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].pve_battle_count.sum()
# 活跃用护pvp发起次数
AU_count_lanch_pve = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].pve_lanch_count.sum()
# 活跃用户主动发起PVP概率
AU_rate_lanch_pve = AU_count_lanch_pve/AU_count_pve

# 活跃用户PVP胜利总次数
AU_num_win_pve = reg_sevendays_data[reg_sevendays_data.avg_online_minutes>=15].pve_win_count.sum()
# 活跃用户PVP胜利概率
AU_rate_win_pve = AU_num_win_pve/AU_count_pve


print(f'活跃用户平均PVP次数:{AU_pve_battle_coun}')
print(f'活跃用户主动发起PVP概率:{AU_rate_lanch_pve}')
print(f'活跃用户PVP胜利概率:{AU_rate_win_pve}')
活跃用户平均PVP次数:27.781333150727814
活跃用户主动发起PVP概率:0.9967407521130004
活跃用户PVP胜利概率:0.904104307200311

4.4APA玩家PVE情况

In [63]:

# 付费用户平均PVe次数
APA_pve_battle_coun = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].pve_battle_count.mean()

# 付费用护pve总次数
APA_count_pve = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].pve_battle_count.sum()
# 付费用护pvp发起次数
APA_count_lanch_pve = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].pve_lanch_count.sum()
# 付费用户主动发起PVe概率
APA_rate_lanc_pve = APA_count_lanch_pve/APA_count_pve

# 付费用户PVe胜利总次数
APA_num_win_pve = reg_sevendays_data[(reg_sevendays_data.avg_online_minutes>=15) & (reg_sevendays_data.pay_price>0)].pve_win_count.sum()
# 付费用户PVe胜利概率
APA_rate_win_pve = APA_num_win_pve/APA_count_pve

print(f'付费用户平均PVE次数:{APA_pve_battle_coun}')
print(f'付费用户主动发起PVE概率:{APA_rate_lanc_pve}')
print(f'付费用户PVE胜利概率:{APA_rate_win_pve}')
付费用户平均PVE次数:51.773605904404874
付费用户主动发起PVE概率:0.9957120827624596
付费用户PVE胜利概率:0.9110330712688048

In [64]:

# 可视化
plt.figure(figsize=(15,8))
# AU玩家
plt.bar([0.75,2.75,4.75,6.75],[AU_rate_lanch_pve,AU_rate_win_pve,AU_rate_lanch_pvp,AU_rate_win_pvp],width=0.5,alpha=0.5,label='AU玩家')
plt.bar([1.25,3.25,5.25,7.25],[APA_rate_lanc_pve,APA_rate_win_pve,APA_rate_lanc_pvp,APA_rate_win_pvp],width=0.5,color='r',alpha=0.5,label='APA玩家')
plt.xticks([1,3,5,7],['主动发起PVE的概率','PVE获胜概率','主动发起PVP的概率','PVP获胜概率'])
plt.legend()
plt.show()

img

在PVE活动中,APA玩家发起进攻的概率和胜利的概率与AU玩家基本持平;另外游戏的PVE难度不高,玩家的PVE胜率为90%,可以开展多种PVE的挑战难度。
在PVP活动中,APA玩家主动发起挑战的概率明显高于AU玩家,并且在对战中获胜的概率更高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python数据分析之对一个游戏的运营情况进行分析 的相关文章

随机推荐

  • 今天来尝试一下docker

    1 先在服务器上下载docker 这儿使用官方安装脚本自动安装 阿里 curl fsSL https get docker com bash s docker mirror aliyun 我这儿还查看了一下版本 这个就安装成功了 2 环境配
  • Python3.6+RobotFramework自动化测试框架环境搭建-学习笔记

    Python3 6 RobotFramework自动化测试框架环境搭建 学习笔记 一 Appium服务端 1 JDK安装 1 1 推荐JDK版本 1 2 下载地址 1 3 下载方法 1 4 安装方法 2 安卓SDK 2 1 下载方法 2 3
  • 【学习记录】STM32利用定时器中断实现定时闪烁指示灯

    任务 定时闪烁指示灯 任务目标 掌握 CubeMX 软件配置定时器实现定时功能的方法 任务内容 控制开发板上的指示灯LED每隔1s闪烁 任务实现 使用的STM32芯片是STM32F407ZET6 第一步 设置高速时钟 设置LED 第二步 配
  • java使用反射修改注解参数值内容

    方法一 该方法不太灵活 过程 使用反射获取指定method上方的指定注解 拿到该注解的String类型的参数值 使用反射修改该String对象内字符数组的地址 import java lang annotation import java
  • mysql查询json字段中value值,mysql查询字段不包含某个字符串

    工作中遇到问题 需要查询表中某个字段不包含某个指定字符串的问题 以及查询json数据中某个key对应的value值 问题1 查询 user id 不包含 字符的数据 数据如下 id user id 51 jingi ctfo com 52
  • 逻辑思维三大定律

    逻辑思维三大定律 同一律 矛盾律 排中律 同一律 A 是 A 前后思维中 概念要同一 白马非马论违反同一律 商家的买一赠一 前后两个一不是同一个概念 违反同一律 同一律是逻辑思维的基础 矛盾律 A 是 B A 不是B 这两句话矛盾 对同一事
  • c盘那些文件可以删除

    c盘那些文件可以删除 http www xitongzhijia net xtjc 20150507 47691 html
  • OSPF笔记(一):OSPF基本特点、自治系统、区域、RID冲突

    一 OSPF基本特点 1 1 支持无类域间路由 CIDR 1 2 无环路 1 区域内 100 无环 2 区域间 不一定无环 1 3 收敛速度快 1 4 使用组播收发协议数据 224 0 0 5 224 0 0 6 1 5 支持多条等价路由
  • MySQL数据库 学习笔记 零基础入门 面试 整理

    一 MySQL基础篇 1 数据库技术的基本概念和方法 1 1 数据库基本概念 1 数据 数据 Data 指对客观事物进行描述并可以鉴别的符号 这些符号是可识别的 抽象的 不仅仅指狭义上的数字 而是有多种表现形式 字母 文字 文本 图形 音频
  • 【笔试强训选择题】Day32.习题(错题)解析

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 笔试强训选择题 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 前言 一 Day32习题 错题 解析 总结 前言 今天是笔试强训第32天 一 Day32习题
  • React Native API

    Dimensions 面对现代手机五花八门的屏占比 不知道宽度的情况下可以使用 import Dimensions from react native const DimenStyle Dimensions get window 屏幕宽度
  • 深度学习研究思路

    研究思路 一 数字图像 基础研究 图像的文件格式 图片有常见的bmp jpg png 等 三种图像之间的差别 位图和矢量图区别 矢量图又叫向量图 是用一系列计算机指令来描述和记录一幅图 一幅图可以解为一系列由点 线 面等到组成的子图 它所记
  • Vue ECharts y轴设置固定分段 + makerline设置为不同的样式作为区分 - 附完整示例

    echarts 一个基于 JavaScript 的开源可视化图表库 官方文档 Apache ECharts Apache EChartsApache ECharts 一款基于JavaScript的数据可视化图表库 提供直观 生动 可交互 可
  • JS_随机选取指定数组中的颜色值

    思路 定义需要的颜色 生成已定数组长度范围内的随机数 随机数与i对比 let colorList 1882f8 f95757 FFBF11 11BBEC FB7C26 46BE1A let colorMath Math floor Math
  • 使用命令行编译和运行java程序

    前言 现在很多IDE都可以自动编译和运行java程序了 但是我觉得还是有必要学会用命令行编译和运行java程序 这样就能更好理解java程序运行的机制 为了不依赖IDE 我用记事本作为编辑器 1 安装JDK 安装过程我就不仔细讲了 网上很多
  • C++ 中 static 静态对象的使用总结

    背景 全局 静态数据区主要用于存放全局变量和静态变量 在程序启动时 全局 静态数据已经分配了存储空间 全局 静态数据区中的数据在程序结束后由操作系统释放 未初始化的静态变量会被程序自动初始化为 0 静态局部变量在程序执行到该对象的声明处时被
  • 回文串(algorithm)

    题目 回文子串的个数 中心扩展 给你一个字符串 s 请你统计并返回这个字符串中 回文子串 的数目 回文字符串 是正着读和倒过来读一样的字符串 子字符串 是字符串中的由连续字符组成的一个序列 具有不同开始位置或结束位置的子串 即使是由相同的字
  • Nacos简单使用及相关配置注意点

    1 Nacos安装 本文采用 docker 方式进行安装 docker 安装较为简单便捷 自己学习推荐采用此方式进行 docker 基本命令就不再赘述了 此处附上主要命令 此处nacos安装版本采用2 0 3 拉取 2 0 3 版本的 na
  • 【极验黑科技】文生图大模型在极验人机对抗领域的应用

    自极验于2013年开创性地提出新一代的智能验证码概念开始 就始终在人机对抗领域不停地升级迭代 极验全球首创的 行为式验证 在十多年来 为全球近40万的开发者使用 如小米 新浪微博 东方航空 国家工商局等企业携手极验验证码进行升级 使得现在传
  • Python数据分析之对一个游戏的运营情况进行分析

    Python数据分析之对一个游戏的运营情况进行分析 文章目录 Python数据分析之对一个游戏的运营情况进行分析 一 分析目标 二 数据介绍 三 结论 1 新增用户分析 2 玩家活跃度分析 3 玩家付费情况分析 4 玩家游戏习惯分析 四 详