Python数据分析之对一个游戏的运营情况进行分析
文章目录
- **Python数据分析之对一个游戏的运营情况进行分析**
- 一、分析目标
- 二、数据介绍
- 三、结论
- 1.新增用户分析
- 2.玩家活跃度分析
- 3.玩家付费情况分析
- 4.玩家游戏习惯分析
- 四、详细分析
- 1.新增玩家分析
- 1.1新增玩家数量
- 1.2新增付费玩家数量
- 1.3新增付费玩家占比
- 2.玩家活跃度分析
- 2.1全部玩家平均在线时长
- 2.2 付费玩家的平均在线时长
- 2.3 平均在线时长的分布特点
- 3.玩家付费情况分析
- 关键指标
- 4.玩家游戏习惯分析
- 关键指标 PVP/PVE
- 4.1AU玩家PVP情况
- 4.2APA玩家PVP情况
- 4.3AU玩家PVE情况
- 4.4APA玩家PVE情况
一、分析目标
为了了解当前游戏的运营情况,对游戏从以下四个方面进行分析
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 |
14933 | 2018-03-08 20:27:57 | 166415.0 | 138362.0 | 258522 | … | 1 | 1 | 1 | 8.0 | 0.0 | ||||||||||
1 | 1 | 14934 | 2018-03-08 20:29:42 | 10000.0 | 600.0 | 10000 | … | 0.0 | 0.0 | |||||||||||
2 | 2 | 14935 | 2018-03-08 20:30:13 | 10000.0 | 3700.0 | 10000 | … | 17.0 | 0.0 | |||||||||||
3 | 3 | 14936 | 2018-03-08 20:31:41 | 210000.0 | 0.0 | 200000 | 200000 | 610000 | … | 2.0 | 0.0 | |||||||||
4 | 4 | 14937 | 2018-03-08 20:32:07 | 11500.0 | 3700.0 | 11000 | … | 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 |
14933 | 0.0 | 2018-03-08 20:27:57 | 8.0 | 1 | 1 | 1 | |||
1 | 14934 | 0.0 | 2018-03-08 20:29:42 | 0.0 | |||||
2 | 14935 | 0.0 | 2018-03-08 20:30:13 | 17.0 | |||||
3 | 14936 | 0.0 | 2018-03-08 20:31:41 | 2.0 | |||||
4 | 14937 | 0.0 | 2018-03-08 20:32:07 | 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 |
14933 | 0.0 | 2018-03-08 20:27:57 | 8.0 | 1 | 1 | 1 | 2018-03-08 | |||
1 | 14934 | 0.0 | 2018-03-08 20:29:42 | 0.0 | 2018-03-08 | |||||
2 | 14935 | 0.0 | 2018-03-08 20:30:13 | 17.0 | 2018-03-08 | |||||
3 | 14936 | 0.0 | 2018-03-08 20:31:41 | 2.0 | 2018-03-08 | |||||
4 | 14937 | 0.0 | 2018-03-08 20:32:07 | 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 | |
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 | |
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()
观察上图可知,每日新增玩家在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()
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()
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()
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()
该游戏的人均付费率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()