基于python的游戏玩家行为数据分析与预测_python有付费数据如何做简单预测

基于python的游戏玩家行为数据分析与预测_python有付费数据如何做简单预测先自我介绍一下 小编浙江大学毕业 去过华为 字节跳动等大厂 目前阿里 P7 深知大多数程序员 想要提升技能 往往是自己摸索成长 但自己不成体系的自学效果低效又漫长 而且极易碰到天花板技术停滞不前 因此收集整理了一份 2024 年最新 Python 全套学习资料

大家好,我是讯享网,很高兴认识大家。

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
讯享网
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

本次数据集一共包涵两万余条数据,110个特征。为了便于分析选取其中的11个特征进行分析。

 ‘user\_id’ 玩家唯一ID ‘avg\_online\_minutes’, 平均在线时长 ‘pvp\_battle\_count’ 与玩家对战次数 ‘pvp\_lanch\_count’ 主动发起与玩家对战的次数 'pvp\_win\_count 与玩家对战获胜的次数 ‘pve\_battle\_count’ 与电脑对战次数 ‘pve\_lanch\_count’, 主动发起与电脑对战的次数 ‘pve\_win\_count’ 与电脑对战获胜次数 user\_id 玩家唯一ID pay\_price 充值金额 pay\_count 充值次数 prediction\_pay\_price 预测充值金额 三、大数据分析技术的应用 1、数据预处理的代码、注释说明及运行结果 1.导入数据集和库 df = pd.read\_csv(’./data/game\_player.csv’,encoding=‘gbk’) ![在这里插入图片描述](https://img-blog.csdnimg.cn/951b37c3d8464a3ea4b8bc69e1b68b96.png) 2.对需要的特征进行切片, #切片提取需要的特征,并命名为data data = df[ [ ‘user\_id’, #玩家唯一ID 

讯享网
讯享网 'avg_online_minutes', #在线时长 'pvp_battle_count', #与玩家对战次数 'pvp_lanch_count', #主动与玩家对战的次数 'pvp_win_count', #与玩家对战获胜的次数 'pve_battle_count', #与电脑对战次数 'pve_lanch_count', #主动发起与电脑对战的次数 'pve_win_count' #与电脑对战获胜次数 ] ] 
 Data ![在这里插入图片描述](https://img-blog.csdnimg.cn/a7da5c21eb5945a08ea63fed963f2573.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/6240b5524a4e459a9aa46f54b.png) 3.删除缺失值,并且去重 #删除缺失值 print(‘去除缺失的行前数据集形状为:’, data.shape) data\_1 = data.dropna(axis=0,how=‘any’) print(‘去除缺失的行后数据集形状为:’, data\_1.shape) #如果使用shape会导致data1数组变为str字符串类型 #data1 = data\_1[‘user\_id’].drop\_duplicates() data1 = data\_1.drop\_duplicates() print(‘使用drop\_duplicates方法去重后游戏ID总数:’,len(data1)) 并把处理出的数据集命名为data1 ![在这里插入图片描述](https://img-blog.csdnimg.cn/70feba4a5fb340f7bb8a81cb1.png) 4.三特征的相似度矩阵 #求出与玩家对战次数,主动发起与玩家对战的次数,与玩家对战获胜的次数,三特征的pearson法相似度矩阵 corr\_data1 = data[[‘pvp\_battle\_count’,‘pvp\_lanch\_count’,‘pvp\_win\_count’]].corr(method=‘pearson’) print(‘与玩家对战次数,主动发起与玩家对战的次数,与玩家对战获胜的次数:\n’, corr\_data1) ![在这里插入图片描述](https://img-blog.csdnimg.cn/d93bc84ba3af23f31e4afef1dc.png) 5.切出需要的新特征,命名为data2 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d4a2c14266a884e5bb03a665b4.png) 6. 离差标准化 #离差标准化 #自定义离差标准化函数 def min\_max\_scale(data1): data1 = (data1 - data1.min())/ (data1.max()- data1.min()) return data1 #对平均在线时间的离差标准化 time\_min\_max = min\_max\_scale(data1[‘avg\_online\_minutes’]) print(‘离差标准化前在线时间数据为:\n’,data1[‘avg\_online\_minutes’]) print(‘离差标准化后在线时间数据为:\n’,time\_min\_max) ![在这里插入图片描述](https://img-blog.csdnimg.cn/40a74837bbbd3f86f2ef32834c.png) 7.内连接,外连接,保存预处理之后的数据集 #对数据1,2进行合并 print(‘外连接合并后的数据框大小’, pd.concat([data1,data2],axis=1,join=‘outer’).shape) #对数据1,2进行合并 print(‘内连接合并后的数据框大小’, pd.concat([data1,data2],axis=1,join=‘inner’).shape) data3 = pd.merge(data1,data2,how=‘inner’,on=‘user\_id’) data3.to\_csv(’./data/吴硕秋8.csv’,sep=’;’,index=False) ![在这里插入图片描述](https://img-blog.csdnimg.cn/5934bf8a43594ad69786ecdf2679fa93.png) 二. 数据探索与特征构建 1.玩家活跃度分析 (1)计算全部玩家平均在线时长 avg\_time = data3.avg\_online\_minutes.mean() avg\_time ![在这里插入图片描述](https://img-blog.csdnimg.cn/5c5ee4a4a97fe9599f01a8b07.png) (2)#计算付费玩家平均在线时长 pay\_avg\_time = data3[data3.pay\_price > 0].avg\_online\_minutes.mean() pay\_avg\_time ![在这里插入图片描述](https://img-blog.csdnimg.cn/9dd244ae6ee34ecd978eb.png) #利用等宽离散法记录充值次数分布 pay\_cut = pd.cut(data2[‘pay\_count’],40) print(‘离散化后充值次数分布:\n’,pay\_cut.value\_counts()) ![在这里插入图片描述](https://img-blog.csdnimg.cn/f49bfa958e7443ea19de2ded0.png) (3) 绘制玩家平均在线时间箱线图 绘制全部玩家平均在线时间箱线图 plt.figure(figsize=(10,10)) plt.boxplot(data3.avg\_online\_minutes) plt.rcParams[‘font.sans-serif’]=[‘Microsoft YaHei’] plt.rcParams[‘axes.unicode\_minus’]=False plt.title(‘全部玩家平均在线时间箱线图’) plt.show() ![在这里插入图片描述](https://img-blog.csdnimg.cn/f66ef84b84ab271b09f69aa56f.png) 绘制付费玩家平均在线时间箱线图 plt.figure(figsize=(10,10)) plt.boxplot(data3[data3.pay\_price > 0].avg\_online\_minutes) plt.rcParams[‘font.sans-serif’]=[‘Microsoft YaHei’] plt.rcParams[‘axes.unicode\_minus’]=False plt.title(‘付费玩家平均在线时间箱线图’) plt.show() ![在这里插入图片描述](https://img-blog.csdnimg.cn/315cbddbecc34a20ac11127c2806cdca.png) 计算玩过玩家对抗游戏的玩家 pvp\_avg\_time =data3[data3.pvp\_battle\_count > 0].avg\_online\_minutes.mean() ![在这里插入图片描述](https://img-blog.csdnimg.cn/0b41d6736f8940ffbdaec51.png) 评价 全部玩家的平均在线时长为9.6分钟,付费玩家的平均在线时长是135.8分钟,约是普通玩家的11倍,付费玩家拥有更高的活跃度。 2.玩家付费率分析 (1)获取付费次数超过0的玩家数量 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b143f80239e045608a7f4b96aabaf25b.png) (2)绘制饼图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ffb3f45acaacde.png) 3.玩家付费情况分析与关联性探索 (1)定义HY, total\_pay, HY\_AVG, HY\_PAY\_COUNT, PAY\_AVG, PAY\_PRO 含义分别为 活跃玩家数量, 总收入, 平均每个活跃玩家的收入, 活跃的付费玩家数量, 平均每个付费玩家的收入, 付费率 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e805c15881d0440bb7dc199f126dd45d.png) (2)活跃玩家与充值金额的关系 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e8ee09236e7e406c8a26d03d5a39acb3.png) 该游戏付费率较低,还有进一步提高的空间,可以开展相关活动提高付费率。 该游戏付费玩家人均消费32,说明付费用户整体的消费能力强,后续可以对付费用户进一步分析,已保证它们的持续付费; 4.玩家游戏习惯分析 活跃用户平均PVP次数 HY\_pvp\_battle\_coun = data3[data3.avg\_online\_minutes> 10].pvp\_battle\_count.mean() 活跃用护pvp总次数 HY\_count\_pvp = data3[data3.avg\_online\_minutes> 10].pvp\_battle\_count.sum() 活跃用护pvp发起次数 HY\_count\_lanch\_pvp = data3[data3.avg\_online\_minutes> 10].pvp\_lanch\_count.sum() 活跃用户主动发起PVP概率 HY\_rate\_lanch\_pvp = HY\_count\_lanch\_pvp/HY\_count\_pvp 活跃用户PVP胜利总次数 HY\_num\_win\_pvp = data3[data3.avg\_online\_minutes> 10].pvp\_win\_count.sum() 活跃用户PVP胜利概率 HY\_rate\_win\_pvp = HY\_num\_win\_pvp/HY\_count\_pvp print(f’活跃用户平均PVP次数:{HY\_pvp\_battle\_coun}’) print(f’活跃用户主动发起PVP概率:{HY\_rate\_lanch\_pvp}’) print(f’活跃用户PVP胜利概率:{HY\_rate\_win\_pvp}’) ![在这里插入图片描述](https://img-blog.csdnimg.cn/c79de4f9d11d497a814fead2ca037ea7.png) (2) 活跃用户平均PVE次数 HY\_pve\_battle\_coun = data3[data3.avg\_online\_minutes> 10].pve\_battle\_count.mean() 活跃用护PVE总次数 HY\_count\_pve = data3[data3.avg\_online\_minutes> 10].pve\_battle\_count.sum() 活跃用护PVE发起次数 HY\_count\_lanch\_pve = data3[data3.avg\_online\_minutes> 10].pve\_lanch\_count.sum() 活跃用户主动发起PVE概率 HY\_rate\_lanch\_pve = HY\_count\_lanch\_pve/HY\_count\_pve 活跃用户PVE胜利总次数 HY\_num\_win\_pve = data3[data3.avg\_online\_minutes>=15].pve\_win\_count.sum() 活跃用户PVE胜利概率 HY\_rate\_win\_pve = HY\_num\_win\_pve/HY\_count\_pve print(f’活跃用户平均PVE次数:{HY\_pve\_battle\_coun}’) print(f’活跃用户主动发起PVE概率:{HY\_rate\_lanch\_pve}’) print(f’活跃用户PVE胜利概率:{HY\_rate\_win\_pve}’) ![在这里插入图片描述](https://img-blog.csdnimg.cn/e0a7bba7aa44446bb0181e1cfc1b9102.png) (3) 活跃付费用户平均PVP次数 HY\_PAY\_COUNT\_pvp\_battle\_coun = data3[(data3.avg\_online\_minutes>10) & (data3.pay\_price>0)].pvp\_battle\_count.mean() 活跃付费用护pvp总次数 HY\_PAY\_COUNT\_count\_pvp = data3[(data3.avg\_online\_minutes>10) & (data3.pay\_price>0)].pvp\_battle\_count.sum() 活跃付费用护pvp发起次数 HY\_PAY\_COUNT\_count\_lanch\_pvp = data3[(data3.avg\_online\_minutes>10) & (data3.pay\_price>0)].pvp\_lanch\_count.sum() 活跃付费用户主动发起PVP概率 HY\_PAY\_COUNT\_rate\_lanc\_pvp = HY\_PAY\_COUNT\_count\_lanch\_pvp/HY\_PAY\_COUNT\_count\_pvp 活跃付费用户PVP胜利总次数 HY\_PAY\_COUNT\_num\_win\_pvp = data3[(data3.avg\_online\_minutes>10) & (data3.pay\_price>0)].pvp\_win\_count.sum() 活跃付费用户PVP胜利概率 HY\_PAY\_COUNT\_rate\_win\_pvp = HY\_PAY\_COUNT\_num\_win\_pvp/HY\_PAY\_COUNT\_count\_pvp print(f’活跃付费用户平均PVP次数:{HY\_PAY\_COUNT\_pvp\_battle\_coun}’) print(f’活跃付费用户主动发起PVP概率:{HY\_PAY\_COUNT\_rate\_lanc\_pvp}’) print(f’活跃付费用户PVP胜利概率:{HY\_PAY\_COUNT\_rate\_win\_pvp}’) ![在这里插入图片描述](https://img-blog.csdnimg.cn/304f34e16a4b4490a7de3a21de.png) (4) 活跃付费用户平均PVe次数 HY\_PAY\_COUNT\_pve\_battle\_coun = data3[(data3.avg\_online\_minutes>10) & (data3.pay\_price>0)].pve\_battle\_count.mean() 付费用护pve总次数 HY\_PAY\_COUNT\_count\_pve = data3[(data3.avg\_online\_minutes>10) & (data3.pay\_price>0)].pve\_battle\_count.sum() 付费用护pvp发起次数 HY\_PAY\_COUNT\_count\_lanch\_pve = data3[(data3.avg\_online\_minutes>10) & (data3.pay\_price>0)].pve\_lanch\_count.sum() 付费用户主动发起PVe概率 HY\_PAY\_COUNT\_rate\_lanc\_pve = HY\_PAY\_COUNT\_count\_lanch\_pve/HY\_PAY\_COUNT\_count\_pve 付费用户PVe胜利总次数 HY\_PAY\_COUNT\_num\_win\_pve = data3[(data3.avg\_online\_minutes>10) & (data3.pay\_price>0)].pve\_win\_count.sum() 付费用户PVe胜利概率 HY\_PAY\_COUNT\_rate\_win\_pve = HY\_PAY\_COUNT\_num\_win\_pve/HY\_PAY\_COUNT\_count\_pve print(f’付费用户平均PVE次数:{HY\_PAY\_COUNT\_pve\_battle\_coun}’) print(f’付费用户主动发起PVE概率:{HY\_PAY\_COUNT\_rate\_lanc\_pve}’) print(f’付费用户PVE胜利概率:{HY\_PAY\_COUNT\_rate\_win\_pve}’) ![在这里插入图片描述](https://img-blog.csdnimg.cn/aa2d36eafded483dae1d9a4d350c1675.png) 可视化 ![在这里插入图片描述](https://img-blog.csdnimg.cn/80b5ab593c5d4bb59886cdc0e5c6da6d.png) 简评 1)活跃付费玩家的平均PVE次数和PVP次数都高于活跃玩家的,活跃付费玩家更愿意花时间在这个游戏上; 2)在PVP对战中,活跃付费玩家的获胜还率远超于活跃玩家,说明我们的游戏道具可以让APA享受到对战的获胜的乐趣; 三、分类模型的构建与评估的源代码、注释说明及运行结果 1.先构建特征热力矩阵图,了解各特征之间关系。 本部分需要完成回归模型和分类模型以及比较,故了解各特征关系尤为重要。在此之前创建一个新特征feature,将在线时间不满全体玩家平均在线时间一半的玩家定义为feature。并导入data3作为最后位一个特征。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ae44f58cc5c6af2c775fa1.png) 2.模型的构建数据集划分 选用上部分创建的新特征进行分析。 此部分划分数据标签,训练集测试集,并且标准化数据集,将数据集设置为算法可以直接调用的状态。 顺带绘制混淆矩阵。 划分数据标签 data3\_data = data3.iloc[:, :-1] data3\_target = data3.iloc[:, -1] #划分训练集和测试集 from sklearn.model\_selection import train\_test\_split data3\_data\_train, data3\_data\_test, data3\_target\_train, data3\_target\_test = train\_test\_split(data3\_data, data3\_target, test\_size=0.2, random\_state=66) 标准化数据集 from sklearn.preprocessing import StandardScaler stdScale = StandardScaler().fit(data3\_data\_train) data3\_trainScaler = stdScale.transform(data3\_data\_train) data3\_testScaler = stdScale.transform(data3\_data\_test) #混淆矩阵 (1)Python所有方向的学习路线(新版) 这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。 最近我才对这些路线做了一下新的更新,知识体系更全面了。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1fe039481faabf71d796.png#pic_center) (2)Python学习视频 包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d66e3ad5592f4cdcb197de0dc0438ec5.png#pic_center) (3)100多个练手项目 我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f5aeb4050ab547cf90b1a028d1aacb1d.png#pic_center) 网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。 需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python) ![img](https://img-blog.csdnimg.cn/img_convert/42cd61eaa296d5c1dbcf824ea32aa393.png) 一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! dnimg.cn/d66e3ad5592f4cdcb197de0dc0438ec5.png#pic_center) (3)100多个练手项目 我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f5aeb4050ab547cf90b1a028d1aacb1d.png#pic_center) 网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。 需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python) [外链图片转存中...(img-v4n2bjp1-34)] 一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! 
小讯
上一篇 2025-01-07 09:54
下一篇 2025-03-13 08:43

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/42683.html