Python 代码解析:计算游戏用户平均日胜率并可视化展示
这段代码主要用于计算游戏中 PVP 和 PVE 两种模式下用户的平均日胜率,并将结果可视化展示出来。
首先定义了一个函数 help_cal(a, b),用来计算两个数相除的结果。如果除数 b > 0,则返回 a / b,否则返回 0。
def help_cal(a, b):
if b > 0:
return a / b
else:
return 0
然后使用 apply() 函数对数据框 df 的 'pvp_win_count' 和 'pvp_battle_count' 两列进行逐行计算,得出每个用户在 PVP 模式下的胜率;对 'pve_win_count' 和 'pve_battle_count' 两列进行逐行计算,得出每个用户在 PVE 模式下的胜率。将结果保存到 df 的新列 'pvp_win_ratio' 和 'pve_win_ratio' 中。
# 图5 用户胜率
df['pvp_win_ratio'] = df.apply(lambda x: help_cal(x['pvp_win_count'], x['pvp_battle_count']), axis=1)
df['pve_win_ratio'] = df.apply(lambda x: help_cal(x['pve_win_count'], x['pve_battle_count']), axis=1)
print(df)
接下来,使用 resample() 函数对 df 进行按日重采样,计算出每天所有用户的 PVP 和 PVE 胜率之和,并保存到 d5_1 和 d5_2 中。
d5_1 = df.resample('D').sum()['pvp_win_ratio']
d5_2 = df.resample('D').sum()['pve_win_ratio']
# PVP用户平均日胜率
print(d5_1)
# PVE用户平均日胜率
print(d5_1)
然后将每天的日期保存到列表 l1 中,将 PVP 和 PVE 的胜率数据保存到列表 l2_1 和 l2_2 中。使用 Bar() 函数创建柱状图 bar,分别将日期和 PVP、PVE 胜率数据添加到图表中,并进行一些美化设置,最后将图表保存到本地文件 '图5 用户平均日胜率2.html' 中。
l1 = []
for d in d5_1.index:
l1.append(d)
l2_1 = d5_1.to_list()
l2_2 = d5_2.to_list()
bar = (
Bar()
.add_xaxis(l1)
.add_yaxis('PVP胜率', [round(x / df.shape[0], 3) for x in l2_1])
.add_yaxis('PVE胜率', [round(x / df.shape[0], 3) for x in l2_2])
.set_global_opts(title_opts=opts.TitleOpts(title='用户平均日胜率'),
toolbox_opts=opts.BrushOpts(), )
.render('图5 用户平均日胜率2.html')
)
最后,使用 print() 函数分别输出 PVP 和 PVE 的平均日胜率。
原文地址: https://www.cveoy.top/t/topic/oHbB 著作权归作者所有。请勿转载和采集!