💖💖作者:计算机毕业设计江挽
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目
目录
- 基于大数据的游戏玩家行为分析与可视化介绍
- 基于大数据的游戏玩家行为分析与可视化演示视频
- 基于大数据的游戏玩家行为分析与可视化演示图片
- 基于大数据的游戏玩家行为分析与可视化代码展示
- 基于大数据的游戏玩家行为分析与可视化文档展示
基于大数据的游戏玩家行为分析与可视化介绍
本系统名为《基于大数据的游戏玩家行为分析与可视化》,主要围绕游戏玩家在游戏平台中产生的行为数据展开分析与展示。系统采用 Hadoop 与 Spark 作为大数据处理框架,通过 HDFS 完成数据存储,借助 Spark SQL 与 Pandas、NumPy 对玩家行为数据进行清洗、统计与聚合计算,并将处理结果存入 MySQL 数据库。后端分别支持 Python 与 Java 两个版本,Python 版本采用 Django 框架,Java 版本采用 Spring Boot 框架,前端使用 Vue、ElementUI、Echarts、HTML、CSS、JavaScript 与 jQuery 完成页面展示与图表渲染。系统功能涵盖系统首页、玩家行为信息、玩家活跃、玩家活跃分析、付费行为、付费行为分析、玩家画像、玩家画像分析、游戏偏好、游戏偏好分析以及时间趋势等模块。通过对玩家活跃度、付费行为、玩家画像、游戏偏好以及时间趋势等多维度数据的分析与可视化呈现,系统能够较为直观地反映玩家在游戏中的行为特征与变化规律,为游戏运营分析提供一定的数据参考。
基于大数据的游戏玩家行为分析与可视化演示视频
演示视频
基于大数据的游戏玩家行为分析与可视化演示图片
基于大数据的游戏玩家行为分析与可视化代码展示
frompyspark.sqlimportSparkSessionfrompyspark.sql.functionsimportcol,count,sumas_sum,avg,date_format,hour,when,descfromdjango.httpimportJsonResponsefromdjango.views.decorators.csrfimportcsrf_exemptfromdjango.dbimportconnectionimportpandasaspdimportnumpyasnpimportjson spark=SparkSession.builder.appName("GamePlayerBehaviorAnalysis").master("local[*]").config("spark.sql.shuffle.partitions","4").getOrCreate()defplayer_activity_analysis(request):player_df=spark.read.format("csv").option("header","true").option("inferSchema","true").load("hdfs://localhost:9000/game/player_behavior.csv")activity_df=player_df.select("player_id","login_time","online_duration","game_id","active_level")activity_df=activity_df.filter(col("online_duration").isNotNull()).filter(col("online_duration")>0)activity_df=activity_df.withColumn("login_date",date_format(col("login_time"),"yyyy-MM-dd"))activity_df=activity_df.withColumn("login_hour",hour(col("login_time")))daily_active_df=activity_df.groupBy("login_date").agg(count("player_id").alias("active_player_count"),avg("online_duration").alias("avg_online_duration"),_sum("online_duration").alias("total_online_duration"))daily_active_df=daily_active_df.orderBy("login_date")hourly_active_df=activity_df.groupBy("login_hour").agg(count("player_id").alias("hour_active_count"),avg("online_duration").alias("hour_avg_duration"))hourly_active_df=hourly_active_df.orderBy("login_hour")active_level_df=activity_df.groupBy("active_level").agg(count("player_id").alias("level_player_count"),avg("online_duration").alias("level_avg_duration"))daily_pd=daily_active_df.toPandas()hourly_pd=hourly_active_df.toPandas()level_pd=active_level_df.toPandas()daily_result=daily_pd.to_dict(orient="records")hourly_result=hourly_pd.to_dict(orient="records")level_result=level_pd.to_dict(orient="records")conn=connection.cursor()conn.execute("delete from player_activity_analysis")forrowindaily_result:conn.execute("insert into player_activity_analysis(login_date, active_player_count, avg_online_duration, total_online_duration) values(%s,%s,%s,%s)",(row["login_date"],row["active_player_count"],row["avg_online_duration"],row["total_online_duration"]))conn.close()result={"daily_active":daily_result,"hourly_active":hourly_result,"active_level":level_result}returnJsonResponse({"code":200,"msg":"玩家活跃分析完成","data":result})defpayment_behavior_analysis(request):payment_df=spark.read.format("csv").option("header","true").option("inferSchema","true").load("hdfs://localhost:9000/game/payment_behavior.csv")payment_df=payment_df.select("player_id","payment_time","payment_amount","payment_type","game_id","player_level")payment_df=payment_df.filter(col("payment_amount").isNotNull()).filter(col("payment_amount")>0)payment_df=payment_df.withColumn("payment_date",date_format(col("payment_time"),"yyyy-MM-dd"))payment_df=payment_df.withColumn("payment_hour",hour(col("payment_time")))payment_df=payment_df.withColumn("amount_level",when(col("payment_amount")>=500,"高额付费").when(col("payment_amount")>=100,"中额付费").otherwise("低额付费"))daily_payment_df=payment_df.groupBy("payment_date").agg(count("player_id").alias("pay_player_count"),_sum("payment_amount").alias("total_payment_amount"),avg("payment_amount").alias("avg_payment_amount"))daily_payment_df=daily_payment_df.orderBy("payment_date")type_payment_df=payment_df.groupBy("payment_type").agg(count("player_id").alias("type_pay_count"),_sum("payment_amount").alias("type_total_amount"),avg("payment_amount").alias("type_avg_amount"))amount_level_df=payment_df.groupBy("amount_level").agg(count("player_id").alias("level_count"),_sum("payment_amount").alias("level_total_amount"))player_payment_df=payment_df.groupBy("player_id").agg(_sum("payment_amount").alias("player_total_payment"),count("payment_time").alias("player_pay_times"),avg("payment_amount").alias("player_avg_payment"))player_payment_df=player_payment_df.orderBy(desc("player_total_payment"))daily_pd=daily_payment_df.toPandas()type_pd=type_payment_df.toPandas()level_pd=amount_level_df.toPandas()player_pd=player_payment_df.limit(100).toPandas()daily_result=daily_pd.to_dict(orient="records")type_result=type_pd.to_dict(orient="records")level_result=level_pd.to_dict(orient="records")player_result=player_pd.to_dict(orient="records")conn=connection.cursor()conn.execute("delete from payment_behavior_analysis")forrowindaily_result:conn.execute("insert into payment_behavior_analysis(payment_date, pay_player_count, total_payment_amount, avg_payment_amount) values(%s,%s,%s,%s)",(row["payment_date"],row["pay_player_count"],row["total_payment_amount"],row["avg_payment_amount"]))conn.close()result={"daily_payment":daily_result,"type_payment":type_result,"amount_level":level_result,"top_player_payment":player_result}returnJsonResponse({"code":200,"msg":"付费行为分析完成","data":result})defplayer_profile_analysis(request):profile_df=spark.read.format("csv").option("header","true").option("inferSchema","true").load("hdfs://localhost:9000/game/player_profile.csv")profile_df=profile_df.select("player_id","player_age","player_gender","player_level","register_time","game_id","online_duration","payment_amount")profile_df=profile_df.filter(col("player_id").isNotNull()).filter(col("player_age").isNotNull())profile_df=profile_df.withColumn("age_group",when(col("player_age")<=18,"18岁及以下").when(col("player_age")<=25,"19-25岁").when(col("player_age")<=35,"26-35岁").otherwise("35岁以上"))profile_df=profile_df.withColumn("level_group",when(col("player_level")<=10,"新手玩家").when(col("player_level")<=30,"普通玩家").when(col("player_level")<=60,"资深玩家").otherwise("核心玩家"))profile_df=profile_df.withColumn("register_date",date_format(col("register_time"),"yyyy-MM-dd"))gender_df=profile_df.groupBy("player_gender").agg(count("player_id").alias("gender_count"),avg("online_duration").alias("gender_avg_duration"),avg("payment_amount").alias("gender_avg_payment"))age_df=profile_df.groupBy("age_group").agg(count("player_id").alias("age_count"),avg("online_duration").alias("age_avg_duration"),avg("payment_amount").alias("age_avg_payment"))level_df=profile_df.groupBy("level_group").agg(count("player_id").alias("level_count"),avg("online_duration").alias("level_avg_duration"),avg("payment_amount").alias("level_avg_payment"))game_profile_df=profile_df.groupBy("game_id").agg(count("player_id").alias("game_player_count"),avg("player_age").alias("game_avg_age"),avg("online_duration").alias("game_avg_duration"),avg("payment_amount").alias("game_avg_payment"))gender_pd=gender_df.toPandas()age_pd=age_df.toPandas()level_pd=level_df.toPandas()game_pd=game_profile_df.toPandas()gender_result=gender_pd.to_dict(orient="records")age_result=age_pd.to_dict(orient="records")level_result=level_pd.to_dict(orient="records")game_result=game_pd.to_dict(orient="records")conn=connection.cursor()conn.execute("delete from player_profile_analysis")forrowingender_result:conn.execute("insert into player_profile_analysis(profile_type, profile_value, player_count, avg_online_duration, avg_payment_amount) values(%s,%s,%s,%s,%s)",("gender",row["player_gender"],row["gender_count"],row["gender_avg_duration"],row["gender_avg_payment"]))conn.close()result={"gender_profile":gender_result,"age_profile":age_result,"level_profile":level_result,"game_profile":game_result}returnJsonResponse({"code":200,"msg":"玩家画像分析完成","data":result})基于大数据的游戏玩家行为分析与可视化文档展示
💖💖作者:计算机毕业设计江挽
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目