✍✍计算机毕设指导师**
⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。
⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!
⚡⚡有什么问题可以在主页上或文末下联系咨询博客~~
⚡⚡Java、Python、小程序、大数据实战项目集](https://blog.csdn.net/2301_80395604/category_12487856.html)
⚡⚡文末获取源码
温馨提示:文末有CSDN平台官方提供的博客联系方式!
温馨提示:文末有CSDN平台官方提供的博客联系方式!
温馨提示:文末有CSDN平台官方提供的博客联系方式!
奥斯卡奖获奖数据可视化分析系统-简介
本系统是一个基于Hadoop与Django框架构建的奥斯卡奖获奖数据可视化分析平台,通过大数据技术对历年奥斯卡获奖及提名记录进行整体分析。系统底层采用Hadoop生态体系中的HDFS进行海量数据存储,并利用Spark与Spark SQL进行高效的数据清洗与计算,结合Pandas和NumPy完成数据处理,以提升数据分析的效率与稳定性。后端采用Django框架提供稳定可靠的数据接口服务,前端则通过Vue结合ElementUI构建响应式用户界面,并利用Echarts实现图表的动态渲染。在功能层面,系统涵盖了奖项门类比、历年提名量趋势、影片获奖与提名榜单、影人提名排行、门类转化率、年代奖项结构占比等基础统计分析;同时引入FP-Growth算法挖掘奖项共现关系,探寻影片同时提名的关联规则,并运用K-Means算法对影片进行群体画像划分,结合Isolation Forest识别异常提名影片。整体系统完成了从数据采集、清洗、存储到分析与可视化展示的完整流程,为理解奥斯卡奖项分布规律与电影产业发展趋势提供了直观的数据支撑。
奥斯卡奖获奖数据可视化分析系统-技术
大数据框架:Hadoop+Spark(本次没用Hive,支持定制)
开发语言:Python+Java(两个版本都支持)
后端框架:Django+Spring Boot(Spring+SpringMVC+Mybatis)(两个版本都支持)
前端:Vue+ElementUI+Echarts+HTML+CSS+JavaScript+jQuery
数据库:MySQL
奥斯卡奖获奖数据可视化分析系统-背景
每年奥斯卡金像奖不仅是电影界的盛会,也是大众关注的焦点。随着历年赛事的推进,积累了从早期到现在的上万条提名与获奖记录,涵盖了影片、影人、导演、配乐等众多门类。面对这样庞大且维度丰富的历史数据,单靠人工翻阅或简单的表格统计很难看出其中的规律,比如哪些门类常年占据主导,或者不同年代奖项结构有什么变化。这时候大数据技术的优势就体现出来了。借助Hadoop和Spark的大数据处理能力,我们可以把过去零散的奥斯卡记录集中起来做整体分析,把那些隐藏在历史长河里的数据关系找出来,这也是当下很多影视文化研究开始尝试的新方向,让我们能用更理性的数据视角去回顾这些经典电影和影人的发展轨迹。
做这个系统其实挺有实际价值的。一方面,对于影视爱好者或者研究者来说,把抽象的数据变成直观的图表,比如历年提名量折线图或者影片获奖榜单,能让大家更轻松地了解奥斯卡的偏好变化和影片的历史地位,不用再去一条条翻旧资料。另一方面,从咱们学习技术的角度看,把这个系统做出来能真正把Hadoop、Spark这些大数据框架和Django后端技术串起来用一遍。平时学这些技术可能只是停留在理论层面,但通过处理真实的奥斯卡数据,跑通数据清洗、分析再到前端Echarts展示的整个流程,对个人动手能力的提升帮助很大。虽然它只是个毕业设计,但这种把业务需求和底层技术结合的实践,能给以后处理类似的数据分析项目打下一个挺不错的基础。
奥斯卡奖获奖数据可视化分析系统-视频展示
基于Hadoop的奥斯卡奖获奖数据可视化分析系统
奥斯卡奖获奖数据可视化分析系统-图片展示







奥斯卡奖获奖数据可视化分析系统-代码展示
python
from pyspark.sql import SparkSession
from pyspark.sql.functions import explode, split, col, count, collect_set, expr, avg, sum as _sum
from pyspark.ml.fpm import FPGrowth
from pyspark.ml.feature import VectorAssembler, StandardScaler
from pyspark.ml.clustering import KMeans
import pandas as pd
from django.http import JsonResponse
spark = SparkSession.builder.appName("OscarAnalysisSystem").getOrCreate()
def analyze_film_win_rank(request):
raw_df = spark.read.csv("hdfs://namenode:8020/data/oscarrecord.csv", header=True, inferSchema=True)
raw_df.createOrReplaceTempView("oscar_raw")
filter_sql = "SELECT Film, Winner, Class FROM oscar_raw WHERE Film IS NOT NULL AND Class NOT IN ('科技', '特别')"
valid_data_df = spark.sql(filter_sql)
split_film_df = valid_data_df.withColumn("single_film", explode(split(col("Film"), r"\|")))
win_count_df = split_film_df.filter(col("Winner") == True).groupBy("single_film").agg(count("*").alias("win_count"))
nom_count_df = split_film_df.groupBy("single_film").agg(count("*").alias("nomination_count"))
rank_df = win_count_df.join(nom_count_df, "single_film", "left_outer").na.fill(0)
sorted_rank_df = rank_df.orderBy(col("win_count").desc(), col("nomination_count").desc()).limit(20)
sorted_rank_df = sorted_rank_df.withColumnRenamed("single_film", "film_title")
pandas_df = sorted_rank_df.toPandas()
pandas_df.to_csv("output/OscarAwardViz_analysis/film_win_rank.csv", index=False)
return JsonResponse({"msg": "A03 done"})
def analyze_category_association(request):
raw_df = spark.read.csv("hdfs://namenode:8020/data/oscarrecord.csv", header=True, inferSchema=True)
raw_df.createOrReplaceTempView("oscar_raw")
filter_sql = "SELECT Film, CanonicalCategory FROM oscar_raw WHERE Film IS NOT NULL AND Class NOT IN ('科技', '特别')"
valid_data_df = spark.sql(filter_sql)
split_film_df = valid_data_df.withColumn("single_film", explode(split(col("Film"), r"\|")))
basket_df = split_film_df.groupBy("single_film").agg(collect_set("CanonicalCategory").alias("category_items"))
fpGrowth = FPGrowth(itemsCol="category_items", minSupport=0.05, minConfidence=0.3)
model = fpGrowth.fit(basket_df)
rules_df = model.associationRules
filtered_rules_df = rules_df.filter((col("lift") > 1.0) & (col("confidence") > 0.3))
sorted_rules_df = filtered_rules_df.orderBy(col("lift").desc(), col("confidence").desc()).limit(25)
format_rules_df = sorted_rules_df.withColumn("antecedent_str", expr("concat_ws('|', antecedent)")).withColumn("consequent_str", expr("concat_ws('|', consequent)"))
pandas_df = format_rules_df.select("antecedent_str", "consequent_str", "support", "confidence", "lift").toPandas()
pandas_df.to_csv("output/OscarAwardViz_analysis/category_association.csv", index=False)
return JsonResponse({"msg": "A13 done"})
def analyze_film_cluster(request):
raw_df = spark.read.csv("hdfs://namenode:8020/data/oscarrecord.csv", header=True, inferSchema=True)
raw_df.createOrReplaceTempView("oscar_raw")
filter_sql = "SELECT Film, Class FROM oscar_raw WHERE Film IS NOT NULL AND Class NOT IN ('科技', '特别')"
valid_data_df = spark.sql(filter_sql)
split_film_df = valid_data_df.withColumn("single_film", explode(split(col("Film"), r"\|")))
pivot_df = split_film_df.groupBy("single_film").pivot("Class").agg(count("*")).na.fill(0)
pivot_cols = [c for c in pivot_df.columns if c != "single_film"]
pivot_df = pivot_df.withColumn("total_nom", _sum([col(c) for c in pivot_cols]))
filtered_df = pivot_df.filter(col("total_nom") >= 3)
assembler = VectorAssembler(inputCols=pivot_cols, outputCol="raw_features")
vec_df = assembler.transform(filtered_df)
scaler = StandardScaler(inputCol="raw_features", outputCol="scaled_features", withMean=True, withStd=True)
scaled_df = scaler.fit(vec_df).transform(vec_df)
kmeans = KMeans(k=4, featuresCol="scaled_features", predictionCol="cluster_id", seed=42)
model = kmeans.fit(scaled_df)
clustered_df = model.transform(scaled_df)
cluster_summary = clustered_df.groupBy("cluster_id").avg(*pivot_cols).withColumnRenamed("cluster_id", "cluster_id")
pandas_df = cluster_summary.toPandas()
pandas_df.to_csv("output/OscarAwardViz_analysis/film_cluster_profile.csv", index=False)
return JsonResponse({"msg": "A14 done"})
奥斯卡奖获奖数据可视化分析系统-结语
大数据方向的毕业设计确实容易在技术选型与功能设计环节遇到瓶颈,如果这套系统对正在准备 本届计算机毕设的你有所帮助,欢迎在评论区留言交流讨论。大家如果觉得这套 Hadoop+Django 的技术方案有参考价值,可以点赞、收藏、关注支持一下,也欢迎在评论区说说你们遇到的技术问题,或者想看哪个方向的系统实现,后续会持续分享更多实用的计算机毕设技术内容,帮助大家顺利完成计算机毕业设计。
实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!
如果遇到具体的技术问题或其他需求,你也可以问我,我会尽力帮你分析和解决问题所在,支持我记得点赞、收藏,再点个关注,学习不迷路!~~