Python 玩转百万级游戏数据(附练手源数据)_python如何输出玩家功力值案例-程序员宅基地

今天分享的一个实战案例是关于游戏行业的,数据量级比较大,数据包含近229万条记录和 109个字段 ,以下取较重要的字段进行说明。

相关数据已经给大家打包好,感兴趣的同学后台回复 “游戏数据” ,即可获取完整数据集,做更多有趣探索分析。

字段说明

  • user_id :用户编码,用户唯一标识
  • bd_stronghold_level :要塞等级,相当于游戏账号等级
  • wood_reduce_value :木头消耗数量
  • stone_reduce_value :石头消耗数量
  • ivory_reduce_value :象牙消耗数量
  • meat_reduce_value :肉消耗数量
  • magic_reduce_value :魔法消耗数量
  • general_acceleration_reduce_value :通用加速消耗数量
  • building_acceleration_reduce_valu :建筑加速消耗数量
  • reaserch_acceleration_reduce_value :科研加速消耗数量
  • training_acceleration_reduce_value :训练加速消耗数量
  • treatment_acceleration_reduce_value :治疗加速消耗数量
  • pvp_battle_count :玩家对玩家次数
  • pve_battle_count :玩家对机器次数
  • avg_online_minutes :日均在线时间
  • pay_price  : 消费金额
  • pay_count :消费次数

分析思路

  • 用户注册时间分布情况?
  • 用户的付费情况(付费率,ARPU,ARPPU)?
  • 各等级用户的付费情况?
  • 用户的消费习惯?
  • 可视化数据

分析过程

1. 导入数据

import numpy as npimport pandas as pdfrom pandas import read_csvfrom sklearn.cluster import KMeansimport matplotlib.pyplotas pltimport pylab as plfrom matplotlib.font_managerimport FontManager, FontPropertiespd.set_option('display.max_columns',None)#为了数据安全,copy一份数据df=df0#检查是否有空值print(df.isnull().any().any())#观察数据构成print(df.head())

2. 清洗数据

#以user_id为维度,删除重复数据,并查看用户总数df=df.drop_duplicates(subset='user_id')print('用户总数:',len(df['user_id']))→用户总数:2288007

3. 计算用户注册时间分布

#首先将注册时间精确到天register_date=[]for i in df['register_time']:    date=i[5:10]    register_date.append(date)df['register_time']=register_date#计算每天的注册人数df_register=df.groupby('register_time').size()df_register.columns=['日期','注册人数']print(df_register)(可视化)plt.plot(df_register)plt.grid(True)pl.xticks(rotation=90)font=FontProperties(fname='/System/Libra
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43881394/article/details/106925999

智能推荐

1. SimMechanics/Multibody入门-程序员宅基地

文章浏览阅读9.8k次,点赞43次,收藏167次。这篇博客主要介绍利用Matlab的SimMechanics/Multibody实现简单的单摆运动仿真。_simmechanics

Android 性能优化探究,作为移动开发程序员-程序员宅基地

文章浏览阅读870次,点赞22次,收藏28次。总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关在这我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。

Delphi防止多实例运行的两种方法《转》-程序员宅基地

文章浏览阅读83次。在学习Delphi时,遇到需要程序单实例运行的时候,经过查阅,暂时发现以下两种比较简单的方法,可以防止程序多实例运行,各有优劣,据需选择。方法一,添加以下unit即可,优点是可激活已存在的程序窗口,即使已最小化(包括最小化到托盘),缺点是可能存在与其他程序的互斥(可自行修改STR_UNIQUE的值以尽量减少该可能性)。代码如下://工程引用此单元就能防止同时出现多个实例u..._delphi 多实例

曼彻斯特编码与解码(含驱动源码)-程序员宅基地

文章浏览阅读875次,点赞27次,收藏23次。曼彻斯特编码方式, 这种编码方式利用信号的边沿来表示二进制数据“0”和“1”,比如信号的上身沿表示“1”,下降沿表示“0”,而这种跳变一般发生在位帧的中间。

2020 DevOps工程技术实践类教程-程序员宅基地

文章浏览阅读162次。你好,我是泽阳,在DevOps领域实践了多年,借助公司项目机会从端到端的对项目进行实施改造。在经过实践后,项目通过了信通院发布的《DevOps持续交付标准三级》评估。在此过程中不断的实施..._泽阳 devops

网安学习记录1 ms17010漏洞-程序员宅基地

文章浏览阅读56次。使用nmap对win7进行端口扫描。

随便推点

WPF DataGrid 单元格实现下拉框选项_wpf datagrid 双击编辑时变下拉列表-程序员宅基地

文章浏览阅读3.1k次,点赞11次,收藏2次。WPF DataGrid 单元格实现下拉框选项提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录WPF DataGrid 单元格实现下拉框选项前言一、问题二、示例1.实现效果2.描述三、解决方法四、总结前言需要实现DataGrid控件单元格下拉框选项,DataGrid数据来源是数据库中的表第一次写博客,尝试一下一、问题网上有很多关于DataGridComboBoxColumn以及DataGridTemplateColumn模板列的教程,需要在前台XAML中进行添加,这_wpf datagrid 双击编辑时变下拉列表

2023年互联网黑灰产研究年度报告-程序员宅基地

文章浏览阅读54次。下载报告去公众号:硬核刘大后台回复“黑灰产”,即可下载完整PDF文件。更多报告内容,可加微信:chanpin628领取。(ps:加过微信:chanpin628 的不要再加,分享的内容一样,有一个号就行。)申明:报告版权威胁猎人所有,此处仅限分享学习使用,如有侵权,请联系小编做删除处理。..._【威胁猎人】2023年互联网黑灰产研究年度报告.pdf

[C/C++]游戏地图制作_c++ 如何做地图-程序员宅基地

文章浏览阅读705次。利用二维数组实现游戏地图_c++ 如何做地图

Ubuntu 12.04.4 LTS 部署cap-程序员宅基地

文章浏览阅读715次。一.系统环境jim@mode:~$ cat /etc/issueUbuntu 12.04.4 LTS \n \ljim@mode:~$ uname -raLinux mode 3.11.0-15-generic#25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux二..._after this operation, 2,048 b of additional disk space will be used.

我见过最全的剖析QEMU原理的文章[Z]_no qemu-程序员宅基地

文章浏览阅读1.2w次。转自:http://people.cs.nctu.edu.tw/~chenwj/dokuwiki/doku.php?id=qemu How To Become A Hacker 写给新手程序员的一封信目录建置 QEMUUser ModeSPARCPowerP_no qemu

Dart —— 基础数据类型 Number String Boolean List Map Set Rune Symbol_dart number-程序员宅基地

文章浏览阅读714次。内建类型文章目录Dart 语言支持以下内建类型:NumberStringBooleanListSetMapRuneSymbolDart 语言支持以下内建类型:NumberStringBooleanList (也被称为 Array)MapSetRune (用于在字符串中表示 Unicode 字符)Symbol这些类型都可以被初始化为字面量。 例如, 'this is a s..._dart number