一、个人简介
💖💖作者:计算机编程果茶熊 💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 计算机毕业设计选题 💕💕文末获取源码联系计算机编程果茶熊
二、系统介绍
大数据框架:Hadoop+Spark(Hive需要定制修改) 开发语言:Java+Python(两个版本都支持) 数据库:MySQL 后端框架:SpringBoot(Spring+SpringMVC+Mybatis)+Django(两个版本都支持) 前端:Vue+Echarts+HTML+CSS+JavaScript+jQuery
《王者荣耀账号交易信息可视化分析系统》是一个综合性的数据分析与展示平台,旨在为用户提供一个透明、直观的账号交易决策支持环境。本系统技术架构以后端Django框架为核心,负责处理业务逻辑、用户认证及API接口服务,并与MySQL数据库进行交互,实现用户数据和账号信息的持久化存储。在数据处理层面,我们引入了Hadoop生态系统作为底层支撑,利用HDFS进行海量账号交易数据的分布式存储,并通过强大的内存计算框架Spark及其Spark SQL组件,对这些数据进行高效的清洗、转换和深度分析,其中广泛运用了Pandas和NumPy库来辅助进行精细化的数据操作与科学计算。系统前端则采用Vue.js构建单页应用,结合ElementUI组件库快速开发出美观且交互友好的用户界面,所有分析结果最终通过Echarts图表库以动态、多维度的可视化大屏形式呈现。系统的核心功能覆盖了从基础的用户管理、账号数据录入与检索,到高级的账号安全评估(分析账号绑定情况、历史风险等)、账号价值分析(基于英雄、皮肤、段位等多维属性建立估值模型)、市场供需关系洞察以及综合维度对比分析,最终将复杂的后台数据处理结果转化为清晰易懂的图表和指标,帮助用户全面掌握市场动态,做出更明智的交易决策。
三、视频解说
四、部分功能展示
五、部分代码展示
# 导入必要的库,实际项目中应放在文件顶部
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, when, lit, avg, count, max, min, round as spark_round
# 初始化SparkSession,这是与Spark交互的入口点
# 在Django项目中,通常会将其封装成一个单例或在应用启动时初始化
spark = SparkSession.builder \
.appName("KingOfGloryAccountAnalysis") \
.master("local[*]") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
def analyze_account_value(hdfs_path="hdfs://localhost:9000/kingofglory/accounts_data.csv"):
"""
账号价值分析核心函数
从HDFS读取数据,根据多个维度计算账号的综合价值评分。
"""
# 1. 从HDFS读取数据到Spark DataFrame
df = spark.read.csv(hdfs_path, header=True, inferSchema=True)
# 2. 定义各维度的权重
skin_weight = 0.45
hero_weight = 0.20
rank_weight = 0.25
vip_weight = 0.10
# 3. 对段位进行数值化映射,段位越高分值越高
rank_mapping = {
'倔强青铜': 10, '秩序白银': 20, '荣耀黄金': 30,
'尊贵铂金': 40, '永恒钻石': 50, '至尊星耀': 65,
'最强王者': 80, '荣耀王者': 100
}
# 4. 使用when().otherwise()链式调用实现映射
df_with_rank_score = df.withColumn("rank_score",
when(col("rank_level") == '荣耀王者', 100)
.when(col("rank_level") == '最强王者', 80)
.when(col("rank_level") == '至尊星耀', 65)
.when(col("rank_level") == '永恒钻石', 50)
.when(col("rank_level") == '尊贵铂金', 40)
.when(col("rank_level") == '荣耀黄金', 30)
.when(col("rank_level") == '秩序白银', 20)
.otherwise(10)
)
# 5. 计算综合价值评分 (Value Score)
# 公式: VS = (皮肤数 * 权重 + 英雄数 * 权重 + 段位分 * 权重 + VIP等级 * 10 * 权重)
# 假设VIP等级是1-10的数字
df_with_value = df_with_rank_score.withColumn("value_score",
spark_round(
(col("skin_count") * skin_weight) +
(col("hero_count") * hero_weight) +
(col("rank_score") * rank_weight) +
(col("vip_level") * 10 * vip_weight), 2
)
)
# 6. 增加一个基于价值评分的推荐价格区间
df_final = df_with_value.withColumn("suggested_price_range",
when(col("value_score") > 85, "2000-5000元")
.when(col("value_score") > 70, "1000-2000元")
.when(col("value_score") > 50, "500-1000元")
.when(col("value_score") > 30, "200-500元")
.otherwise("200元以下")
)
# 7. 返回处理后的结果,可以转换为Pandas DataFrame或JSON给Django
return df_final.select("account_id", "value_score", "suggested_price_range").toJSON().collect()
def analyze_account_security(hdfs_path="hdfs://localhost:9000/kingofglory/accounts_data.csv"):
"""
账号安全分析核心函数
评估账号的安全性,并给出风险等级。
"""
df = spark.read.csv(hdfs_path, header=True, inferSchema=True)
# 1. 初始化安全评分为100分
df_with_security = df.withColumn("security_score", lit(100))
# 2. 根据不同风险项扣分
# 风险项1: 已实名认证且不可更改,是最大风险,扣50分
df_with_security = df_with_security.withColumn("security_score",
when(col("is_real_name_verified") == True, col("security_score") - 50)
.otherwise(col("security_score"))
)
# 风险项2: 绑定了手机号,但可以换绑,中等风险,扣15分
df_with_security = df_with_security.withColumn("security_score",
when(col("is_phone_bound") == True, col("security_score") - 15)
.otherwise(col("security_score"))
)
# 风险项3: 存在历史找回记录,高风险,扣40分
df_with_security = df_with_security.withColumn("security_score",
when(col("has_recovery_history") == True, col("security_score") - 40)
.otherwise(col("security_score"))
)
# 风险项4: 账号注册时间小于半年,潜在风险,扣10分
df_with_security = df_with_security.withColumn("security_score",
when(col("registration_days") < 180, col("security_score") - 10)
.otherwise(col("security_score"))
)
# 3. 确保分数不低于0
df_with_security = df_with_security.withColumn("security_score",
when(col("security_score") < 0, 0).otherwise(col("security_score"))
)
# 4. 根据最终安全评分,给出风险等级描述
df_final = df_with_security.withColumn("risk_level",
when(col("security_score") >= 85, "安全")
.when(col("security_score") >= 60, "较低风险")
.when(col("security_score") >= 40, "中等风险")
.otherwise("高风险")
)
# 5. 选择需要的字段并返回结果
return df_final.select("account_id", "security_score", "risk_level").toJSON().collect()
def analyze_market_supply(hdfs_path="hdfs://localhost:9000/kingofglory/accounts_data.csv", group_by_cols=["server_name", "rank_level"]):
"""
市场供给分析核心函数
按指定维度(如服务器、段位)对市场上的账号进行聚合分析。
"""
df = spark.read.csv(hdfs_path, header=True, inferSchema=True)
# 1. 确保价格列是数值类型,便于计算
df = df.withColumn("price", col("price").cast("double"))
# 2. 按指定的列进行分组
grouped_df = df.groupBy(group_by_cols)
# 3. 执行聚合计算
# - 计算每个分组中的账号数量(市场供给量)
# - 计算平均价格
# - 计算最高价和最低价
# - 计算该分类下账号的平均皮肤数和英雄数
market_analysis_df = grouped_df.agg(
count("*").alias("account_count"),
spark_round(avg("price"), 2).alias("average_price"),
max("price").alias("highest_price"),
min("price").alias("lowest_price"),
spark_round(avg("skin_count"), 1).alias("average_skin_count"),
spark_round(avg("hero_count"), 1).alias("average_hero_count"),
spark_round(avg("vip_level"), 1).alias("average_vip_level")
)
# 4. 对结果进行排序,例如按账号数量降序排列
sorted_df = market_analysis_df.orderBy(col("account_count").desc())
# 5. 将分析结果转换为JSON格式,方便前端Echarts使用
# collect()会将所有数据拉取到Driver节点,对于大规模结果需要谨慎使用
# 在实际生产中可能会写入到另一个表或中间存储
return sorted_df.toJSON().collect()
六、部分文档展示
七、END
💕💕文末获取源码联系计算机编程果茶熊