【数据分析】基于大数据的诺贝尔学奖可视化分析系统 | 大数据毕业实战项目 数据可视化大屏 大数据专业 调试部署 hadoop SPark
💖💖作者:计算机毕业设计杰瑞
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学校实战项目
计算机毕业设计选题推荐
目录
基于大数据的诺贝尔学奖可视化分析系统系统介绍
基于大数据的诺贝尔学奖可视化分析系统是一个综合运用Hadoop分布式存储与Spark大数据处理技术的数据分析平台。系统采用Hadoop+Spark作为核心大数据框架,利用HDFS进行海量诺贝尔奖历史数据的分布式存储,通过Spark SQL实现高效的数据查询与统计分析,结合Pandas和NumPy进行数据清洗与特征提取。后端提供Django和Spring Boot两种技术栈选择,前端采用Vue+ElementUI构建交互界面,通过Echarts实现多维度数据可视化展示。系统涵盖学科维度综合分析、获奖地理分布分析、获奖学者特征分析、奖项时序演变分析等9大功能模块,能够从时间、空间、学科、人物等多个角度对诺贝尔奖数据进行深度挖掘,为用户提供直观的可视化分析结果,帮助理解诺贝尔奖百年发展趋势与规律。
基于大数据的诺贝尔学奖可视化分析系统系统演示视频
基于大数据的诺贝尔学奖可视化分析系统系统演示图片








基于大数据的诺贝尔学奖可视化分析系统系统代码展示
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, count, year, avg, desc, when, sum as spark_sum
from django.http import JsonResponse
from django.views import View
import json
spark = SparkSession.builder.appName("NobelPrizeAnalysis").config("spark.sql.warehouse.dir", "/user/hive/warehouse").enableHiveSupport().getOrCreate()
class SubjectDimensionAnalysis(View):
def post(self, request):
data = json.loads(request.body)
start_year = data.get('start_year', 1901)
end_year = data.get('end_year', 2024)
df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/nobel_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "nobel_prize").option("user", "root").option("password", "123456").load()
filtered_df = df.filter((col("year") >= start_year) & (col("year") <= end_year))
subject_stats = filtered_df.groupBy("category").agg(count("*").alias("total_count"), avg("year").alias("avg_year")).orderBy(desc("total_count"))
subject_gender = filtered_df.groupBy("category", "gender").agg(count("*").alias("count")).orderBy("category", desc("count"))
pivot_gender = subject_gender.groupBy("category").pivot("gender").agg(spark_sum("count")).fillna(0)
subject_country = filtered_df.groupBy("category", "country").agg(count("*").alias("count")).orderBy("category", desc("count"))
top_countries = subject_country.groupBy("category").agg(count("country").alias("country_count"))
subject_age = filtered_df.filter(col("age").isNotNull()).groupBy("category").agg(avg("age").alias("avg_age"), count("*").alias("count")).orderBy("category")
result_stats = subject_stats.collect()
result_gender = pivot_gender.collect()
result_country = subject_country.collect()
result_age = subject_age.collect()
stats_list = [{"category": row["category"], "total": row["total_count"], "avg_year": round(row["avg_year"], 2)} for row in result_stats]
gender_list = [{"category": row["category"], "male": row.get("Male", 0), "female": row.get("Female", 0)} for row in result_gender]
country_dict = {}
for row in result_country:
if row["category"] not in country_dict:
country_dict[row["category"]] = []
country_dict[row["category"]].append({"country": row["country"], "count": row["count"]})
age_list = [{"category": row["category"], "avg_age": round(row["avg_age"], 2), "count": row["count"]} for row in result_age]
return JsonResponse({"stats": stats_list, "gender": gender_list, "country": country_dict, "age": age_list}, safe=False)
class GeographicDistributionAnalysis(View):
def post(self, request):
data = json.loads(request.body)
category_filter = data.get('category', None)
year_range = data.get('year_range', [1901, 2024])
df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/nobel_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "nobel_prize").option("user", "root").option("password", "123456").load()
filtered_df = df.filter((col("year") >= year_range[0]) & (col("year") <= year_range[1]))
if category_filter and category_filter != "all":
filtered_df = filtered_df.filter(col("category") == category_filter)
country_stats = filtered_df.groupBy("country").agg(count("*").alias("prize_count")).orderBy(desc("prize_count"))
country_category = filtered_df.groupBy("country", "category").agg(count("*").alias("count")).orderBy("country", desc("count"))
country_year = filtered_df.groupBy("country", "year").agg(count("*").alias("count")).orderBy("country", "year")
continent_mapping = filtered_df.select("country", "continent").distinct()
continent_stats = filtered_df.join(continent_mapping, "country", "left").groupBy("continent").agg(count("*").alias("total")).orderBy(desc("total"))
top_countries = country_stats.limit(20).collect()
category_dist = country_category.collect()
year_trend = country_year.collect()
continent_data = continent_stats.collect()
top_list = [{"country": row["country"], "count": row["prize_count"]} for row in top_countries]
category_dict = {}
for row in category_dist:
if row["country"] not in category_dict:
category_dict[row["country"]] = {}
category_dict[row["country"]][row["category"]] = row["count"]
year_dict = {}
for row in year_trend:
if row["country"] not in year_dict:
year_dict[row["country"]] = []
year_dict[row["country"]].append({"year": row["year"], "count": row["count"]})
continent_list = [{"continent": row["continent"], "total": row["total"]} for row in continent_data]
return JsonResponse({"top_countries": top_list, "category_distribution": category_dict, "year_trend": year_dict, "continent_stats": continent_list}, safe=False)
class ScholarCharacteristicAnalysis(View):
def post(self, request):
data = json.loads(request.body)
gender_filter = data.get('gender', None)
category_filter = data.get('category', None)
df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/nobel_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "nobel_prize").option("user", "root").option("password", "123456").load()
filtered_df = df.filter(col("age").isNotNull())
if gender_filter and gender_filter != "all":
filtered_df = filtered_df.filter(col("gender") == gender_filter)
if category_filter and category_filter != "all":
filtered_df = filtered_df.filter(col("category") == category_filter)
age_distribution = filtered_df.select(when((col("age") < 40), "under_40").when((col("age") >= 40) & (col("age") < 50), "40_50").when((col("age") >= 50) & (col("age") < 60), "50_60").when((col("age") >= 60) & (col("age") < 70), "60_70").otherwise("over_70").alias("age_group")).groupBy("age_group").agg(count("*").alias("count")).orderBy("age_group")
gender_stats = filtered_df.groupBy("gender").agg(count("*").alias("total"), avg("age").alias("avg_age")).orderBy(desc("total"))
category_age = filtered_df.groupBy("category").agg(avg("age").alias("avg_age"), count("*").alias("count")).orderBy("category")
education_stats = filtered_df.filter(col("education").isNotNull()).groupBy("education").agg(count("*").alias("count")).orderBy(desc("count"))
multi_winner = filtered_df.groupBy("laureate_id").agg(count("*").alias("win_count")).filter(col("win_count") > 1).orderBy(desc("win_count"))
age_dist = age_distribution.collect()
gender_data = gender_stats.collect()
category_data = category_age.collect()
education_data = education_stats.collect()
multi_data = multi_winner.collect()
age_list = [{"age_group": row["age_group"], "count": row["count"]} for row in age_dist]
gender_list = [{"gender": row["gender"], "total": row["total"], "avg_age": round(row["avg_age"], 2)} for row in gender_data]
category_list = [{"category": row["category"], "avg_age": round(row["avg_age"], 2), "count": row["count"]} for row in category_data]
education_list = [{"education": row["education"], "count": row["count"]} for row in education_data]
multi_list = [{"laureate_id": row["laureate_id"], "win_count": row["win_count"]} for row in multi_data]
return JsonResponse({"age_distribution": age_list, "gender_stats": gender_list, "category_age": category_list, "education": education_list, "multi_winners": multi_list}, safe=False)
基于大数据的诺贝尔学奖可视化分析系统系统文档展示

💖💖作者:计算机毕业设计杰瑞
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学校实战项目
计算机毕业设计选题推荐
更多推荐




所有评论(0)