💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目
目录
- 动漫评分和人气数据可视化与分析系统介绍
- 动漫评分和人气数据可视化与分析系统演示视频
- 动漫评分和人气数据可视化与分析系统演示图片
- 动漫评分和人气数据可视化与分析系统代码展示
- 动漫评分和人气数据可视化与分析系统文档展示
动漫评分和人气数据可视化与分析系统介绍
本系统《基于大数据的动漫评分和人气数据可视化与分析》面向动漫评分、人气等数据做集中整理、统计和可视化展示,后端采用Python+Django版本,大数据部分用Hadoop与Spark,借助HDFS存放原始数据,用Spark、Spark SQL完成数据清洗、聚合和指标计算,Pandas、NumPy辅助做数值处理,MySQL保存用户、动漫信息与部分分析结果,前端用Vue、ElementUI、Echarts、HTML、CSS、JavaScript和jQuery搭建页面与图表。功能上包含系统首页、大屏可视化、用户、动漫信息、评分分布分析、人气热度分析、类型对比分析、年代趋势分析、体量结构分析、价值分群分析、个人信息和修改密码。用户登录后可以查看动漫基础信息,也能在大屏上看到评分分布、热度排行、类型差异、年代变化、体量结构和价值分群等图表,后台可维护动漫数据与用户数据。系统把原本分散的评分、人气、类型、年代等字段按分析主题组织起来,用Spark做批量统计,再由前端图表呈现,帮助使用者更直观地观察动漫评分和人气之间的关系。整体实现以毕业设计可落地为目标,不追求复杂架构,重点把大数据处理流程和可视化分析功能串起来。
动漫评分和人气数据可视化与分析系统演示视频
项目演示视频
动漫评分和人气数据可视化与分析系统演示图片
动漫评分和人气数据可视化与分析系统代码展示
spark=SparkSession.builder.appName("AnimeRatingPopularityAnalysis").master("local[*]").config("spark.sql.shuffle.partitions","4").getOrCreate()defrating_distribution(request):df=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/anime_db").option("dbtable","anime_info").option("user","root").option("password","123456").option("driver","com.mysql.cj.jdbc.Driver").load()df.createOrReplaceTempView("anime_rating")result=spark.sql("SELECT CAST(FLOOR(rating) AS INT) AS score_floor, COUNT(*) AS anime_count, ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2) AS ratio FROM anime_rating WHERE rating IS NOT NULL GROUP BY CAST(FLOOR(rating) AS INT) ORDER BY score_floor")rows=result.collect()labels=[]counts=[]ratios=[]forrowinrows:start=row["score_floor"]labels.append(str(start)+"-"+str(start+1))counts.append(row["anime_count"])ratios.append(row["ratio"])total=sum(counts)max_count=max(counts)ifcountselse0max_range=labels[counts.index(max_count)]ifcountselse""avg_rating=df.selectExpr("AVG(rating)").first()[0]returnJsonResponse({"labels":labels,"counts":counts,"ratios":ratios,"total":total,"maxRange":max_range,"avgRating":round(avg_rating,2)ifavg_ratingelse0,"msg":"评分分布分析完成"})defpopularity_heat(request):df=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/anime_db").option("dbtable","anime_info").option("user","root").option("password","123456").option("driver","com.mysql.cj.jdbc.Driver").load()df.createOrReplaceTempView("anime_popularity")result=spark.sql("SELECT type_name, COUNT(*) AS anime_count, ROUND(AVG(popularity), 2) AS avg_popularity, ROUND(AVG(rating), 2) AS avg_rating, SUM(popularity) AS total_heat FROM anime_popularity WHERE popularity IS NOT NULL GROUP BY type_name ORDER BY total_heat DESC")rows=result.collect()top_list=[]heat_values=[row["total_heat"]forrowinrows]min_heat=min(heat_values)ifheat_valueselse0max_heat=max(heat_values)ifheat_valueselse0forrowinrows[:10]:heat=row["total_heat"]ifmax_heat==min_heat:score=100.0else:score=round((heat-min_heat)*100.0/(max_heat-min_heat),2)top_list.append({"type":row["type_name"],"count":row["anime_count"],"avgPopularity":row["avg_popularity"],"avgRating":row["avg_rating"],"totalHeat":heat,"heatScore":score})returnJsonResponse({"top10":top_list,"typeCount":len(rows),"minHeat":min_heat,"maxHeat":max_heat,"msg":"人气热度分析完成"})deftype_compare(request):df=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/anime_db").option("dbtable","anime_info").option("user","root").option("password","123456").option("driver","com.mysql.cj.jdbc.Driver").load()df.createOrReplaceTempView("anime_type")result=spark.sql("SELECT type_name, COUNT(*) AS total, ROUND(AVG(rating), 2) AS avg_rating, ROUND(AVG(popularity), 2) AS avg_popularity, ROUND(SUM(CASE WHEN rating >= 8 THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) AS high_rate_ratio FROM anime_type WHERE type_name IS NOT NULL GROUP BY type_name HAVING COUNT(*) >= 5 ORDER BY avg_rating DESC, avg_popularity DESC")rows=result.collect()labels=[]avg_ratings=[]avg_popularities=[]high_ratios=[]totals=[]forrowinrows:labels.append(row["type_name"])avg_ratings.append(row["avg_rating"])avg_popularities.append(row["avg_popularity"])high_ratios.append(row["high_rate_ratio"])totals.append(row["total"])best_type=labels[0]iflabelselse""best_rating=avg_ratings[0]ifavg_ratingselse0returnJsonResponse({"labels":labels,"avgRatings":avg_ratings,"avgPopularities":avg_popularities,"highRatios":high_ratios,"totals":totals,"bestType":best_type,"bestRating":best_rating,"msg":"类型对比分析完成"})动漫评分和人气数据可视化与分析系统文档展示
💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目