💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目
目录
- 豆瓣电影与影评数据可视化与分析系统介绍
- 豆瓣电影与影评数据可视化与分析系统演示视频
- 豆瓣电影与影评数据可视化与分析系统演示图片
- 豆瓣电影与影评数据可视化与分析系统代码展示
- 豆瓣电影与影评数据可视化与分析系统文档展示
豆瓣电影与影评数据可视化与分析系统介绍
本系统名为《基于大数据的豆瓣电影与影评数据可视化与分析》,主要围绕豆瓣电影、影评、评分、类型、主创和用户行为等数据做离线统计与可视化展示。底层采用Hadoop和HDFS做数据存储,用Spark和Spark SQL完成数据清洗、聚合、统计和指标计算,开发语言按Python方向可选择Django,按Java方向可选择Spring Boot,前端使用Vue、ElementUI、Echarts、HTML、CSS、JavaScript和jQuery,数据库使用MySQL。系统功能包括系统首页、大屏可视化、用户、评分信息、影片信息、影片结构分析、口碑评分分析、主创力量分析、用户行为分析、类型热度分析、观影洞察分析、个人信息和修改密码。它把评分分布、影片口碑、类型热度、主创影响力、用户活跃度和观影偏好等内容整理成图表和大屏页面,方便查看豆瓣电影数据的整体情况和细节变化。后端主要负责数据读取、Spark统计任务、结果落库和接口返回,前端负责图表渲染、条件筛选和页面交互。整体来说,这是一个偏大数据分析方向的毕业设计系统,重点在Spark数据处理、统计分析和可视化呈现,功能比较完整,也比较适合作为计算机专业本科阶段的综合实践项目。
豆瓣电影与影评数据可视化与分析系统演示视频
项目演示视频
豆瓣电影与影评数据可视化与分析系统演示图片
豆瓣电影与影评数据可视化与分析系统代码展示
frompyspark.sqlimportSparkSessionfrompyspark.sqlimportfunctionsasFfrompyspark.sqlimportWindow spark=SparkSession.builder.appName("DoubanMovieBigData").master("local[*]").config("spark.sql.shuffle.partitions","4").getOrCreate()defanalyze_rating_reputation():rating_df=spark.read.option("header","true").csv("hdfs:///douban/rating/rating.csv")movie_df=spark.read.option("header","true").csv("hdfs:///douban/movie/movie.csv")rating_df=rating_df.withColumn("score",F.col("score").cast("double"))movie_df=movie_df.select("movie_id","title","types","director","actors")joined_df=rating_df.join(movie_df,on="movie_id",how="left")result_df=joined_df.groupBy("movie_id","title","types").agg(F.count("user_id").alias("rating_count"),F.round(F.avg("score"),2).alias("avg_score"),F.sum(F.when(F.col("score")>=4,1).otherwise(0)).alias("good_count"),F.sum(F.when(F.col("score")<=2,1).otherwise(0)).alias("bad_count"))result_df=result_df.withColumn("good_rate",F.round(F.col("good_count")/F.col("rating_count")*100,2))result_df=result_df.withColumn("bad_rate",F.round(F.col("bad_count")/F.col("rating_count")*100,2))result_df=result_df.withColumn("reputation_level",F.when(F.col("avg_score")>=4.5,"优秀").when(F.col("avg_score")>=4.0,"良好").when(F.col("avg_score")>=3.0,"一般").otherwise("较差"))result_df=result_df.orderBy(F.desc("avg_score"),F.desc("rating_count"))result_df.write.mode("overwrite").option("header","true").csv("hdfs:///douban/result/rating_reputation")result_df.write.mode("overwrite").format("jdbc").option("url","jdbc:mysql://localhost:3306/douban_bigdata").option("dbtable","rating_reputation").option("user","root").option("password","123456").save()returnresult_dfdefanalyze_type_heat():movie_df=spark.read.option("header","true").csv("hdfs:///douban/movie/movie.csv")rating_df=spark.read.option("header","true").csv("hdfs:///douban/rating/rating.csv")movie_df=movie_df.withColumn("type_array",F.split(F.col("types"),"\\|"))type_df=movie_df.select("movie_id","title",F.explode("type_array").alias("type_name"))rating_stat=rating_df.withColumn("score",F.col("score").cast("double")).groupBy("movie_id").agg(F.count("user_id").alias("user_count"),F.round(F.avg("score"),2).alias("avg_score"))type_join=type_df.join(rating_stat,on="movie_id",how="left")heat_df=type_join.groupBy("type_name").agg(F.countDistinct("movie_id").alias("movie_count"),F.sum("user_count").alias("total_user_count"),F.round(F.avg("avg_score"),2).alias("type_avg_score"),F.round(F.avg("user_count"),2).alias("avg_movie_heat"))heat_df=heat_df.withColumn("heat_score",F.round(F.col("total_user_count")*0.6+F.col("movie_count")*0.4,2))heat_df=heat_df.withColumn("heat_rank",F.row_number().over(Window.orderBy(F.desc("heat_score"))))heat_df=heat_df.orderBy(F.desc("heat_score"))heat_df.write.mode("overwrite").option("header","true").csv("hdfs:///douban/result/type_heat")heat_df.write.mode("overwrite").format("jdbc").option("url","jdbc:mysql://localhost:3306/douban_bigdata").option("dbtable","type_heat").option("user","root").option("password","123456").save()returnheat_dfdefanalyze_user_behavior():rating_df=spark.read.option("header","true").csv("hdfs:///douban/rating/rating.csv")comment_df=spark.read.option("header","true").csv("hdfs:///douban/comment/comment.csv")rating_df=rating_df.withColumn("score",F.col("score").cast("double"))user_rating=rating_df.groupBy("user_id").agg(F.count("movie_id").alias("rating_times"),F.round(F.avg("score"),2).alias("user_avg_score"),F.countDistinct("movie_id").alias("rated_movie_count"))user_comment=comment_df.groupBy("user_id").agg(F.count("comment_id").alias("comment_times"))user_df=user_rating.join(user_comment,on="user_id",how="left").fillna({"comment_times":0})user_df=user_df.withColumn("active_score",F.round(F.col("rating_times")*0.6+F.col("comment_times")*0.4,2))user_df=user_df.withColumn("active_level",F.when(F.col("active_score")>=50,"高活跃").when(F.col("active_score")>=20,"中活跃").otherwise("低活跃"))user_df=user_df.orderBy(F.desc("active_score"))user_df.write.mode("overwrite").option("header","true").csv("hdfs:///douban/result/user_behavior")user_df.write.mode("overwrite").format("jdbc").option("url","jdbc:mysql://localhost:3306/douban_bigdata").option("dbtable","user_behavior").option("user","root").option("password","123456").save()returnuser_df豆瓣电影与影评数据可视化与分析系统文档展示
💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目