作者计算机毕业设计小途个人简介曾长期从事计算机专业培训教学本人也热爱上课教学语言擅长Java、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法也喜欢交流技术大家有技术代码这一块的问题可以问我想说的话感谢大家的关注与支持网站实战项目安卓/小程序实战项目大数据实战项目深度学习实战项目目录景点热度数据分析与可视化系统介绍景点热度数据分析与可视化系统演示视频景点热度数据分析与可视化系统演示图片景点热度数据分析与可视化系统代码展示景点热度数据分析与可视化系统文档展示景点热度数据分析与可视化系统介绍本系统名为《基于大数据的景点热度数据分析与可视化》主要围绕景点热度相关数据做离线分析与可视化展示。后端采用 PythonDjango 版本实现借助 HadoopHDFS 存放景点数据使用 Spark 与 Spark SQL 完成数据清洗、聚合和指标计算同时结合 Pandas、NumPy 做结果整理前端用 Vue、ElementUI、ECharts、HTML、CSS、JavaScript、jQuery 做页面展示数据库用 MySQL 保存分析结果和基础信息。系统功能包括系统首页、大屏可视化、用户、景点信息、景点类型分析、游客流量分析、季节特征分析、区域分布分析、热度等级分析、价格消费分析、群体画像分析、个人信息和修改密码。用户登录后可以查看景点基础信息也能在大屏上看到游客流量、季节特征、区域分布、热度等级、价格消费和群体画像等分析结果管理员可以对用户和景点信息做维护。整个系统重点放在大数据分析流程和可视化表达上用 Spark 处理景点热度数据再把聚合结果落到 MySQL最后由前端图表展示帮助使用者比较直观地观察不同景点、不同区域和不同时间段的热度变化。景点热度数据分析与可视化系统演示视频项目演示视频景点热度数据分析与可视化系统演示图片景点热度数据分析与可视化系统代码展示sparkSparkSession.builder.appName(ScenicHeatBigData).master(yarn).config(spark.sql.shuffle.partitions,8).getOrCreate()deftourist_flow_analysis(request):dfspark.read.option(header,True).option(inferSchema,True).csv(hdfs:///scenic/spot_heat.csv)df.createOrReplaceTempView(spot_heat)flow_dfspark.sql(SELECT spot_name, visit_date, SUM(visitor_count) AS total_visitor, AVG(visitor_count) AS avg_visitor FROM spot_heat GROUP BY spot_name, visit_date)flow_pdflow_df.toPandas()flow_pd[visit_date]pd.to_datetime(flow_pd[visit_date])flow_pd[weekday]flow_pd[visit_date].dt.dayofweek flow_pd[day_type]np.where(flow_pd[weekday]5,周末,工作日)resultflow_pd.groupby([spot_name,day_type])[total_visitor].sum().reset_index()result[ratio]result.groupby(spot_name)[total_visitor].transform(lambdax:x/x.sum())result[avg_visitor]flow_pd.groupby([spot_name,day_type])[avg_visitor].mean().values resultresult.sort_values([spot_name,total_visitor],ascending[True,False])connpymysql.connect(hostlocalhost,userroot,password123456,databasescenic_heat,charsetutf8)cursorconn.cursor()for_,rowinresult.iterrows():cursor.execute(REPLACE INTO tourist_flow(spot_name, day_type, total_visitor, avg_visitor, ratio) VALUES(%s,%s,%s,%s,%s),(row[spot_name],row[day_type],int(row[total_visitor]),float(row[avg_visitor]),float(row[ratio])))conn.commit()cursor.close()conn.close()returnJsonResponse(result.to_dict(orientrecords),safeFalse)defheat_level_analysis(request):dfspark.read.option(header,True).option(inferSchema,True).csv(hdfs:///scenic/spot_heat.csv)df.createOrReplaceTempView(spot_heat)heat_dfspark.sql(SELECT spot_name, AVG(heat_score) AS avg_heat, SUM(visitor_count) AS total_visitor, AVG(price) AS avg_price FROM spot_heat GROUP BY spot_name)heat_pdheat_df.toPandas()heat_pd[heat_norm](heat_pd[avg_heat]-heat_pd[avg_heat].min())/(heat_pd[avg_heat].max()-heat_pd[avg_heat].min())heat_pd[level]np.select([heat_pd[heat_norm]0.8,heat_pd[heat_norm]0.6,heat_pd[heat_norm]0.4],[高热度,中热度,低热度],default冷门)level_countheat_pd.groupby(level).agg(spot_count(spot_name,count),total_visitor(total_visitor,sum),avg_price(avg_price,mean)).reset_index()level_count[visitor_ratio]level_count[total_visitor]/level_count[total_visitor].sum()level_count[level_rank]level_count[total_visitor].rank(ascendingFalse,methoddense)level_countlevel_count.sort_values(level_rank)connpymysql.connect(hostlocalhost,userroot,password123456,databasescenic_heat,charsetutf8)cursorconn.cursor()for_,rowinlevel_count.iterrows():cursor.execute(REPLACE INTO heat_level(level_name, spot_count, total_visitor, avg_price, visitor_ratio, level_rank) VALUES(%s,%s,%s,%s,%s,%s),(row[level],int(row[spot_count]),int(row[total_visitor]),float(row[avg_price]),float(row[visitor_ratio]),int(row[level_rank])))conn.commit()cursor.close()conn.close()returnJsonResponse(level_count.to_dict(orientrecords),safeFalse)defregion_distribution_analysis(request):dfspark.read.option(header,True).option(inferSchema,True).csv(hdfs:///scenic/spot_heat.csv)df.createOrReplaceTempView(spot_heat)region_dfspark.sql(SELECT region, spot_type, COUNT(DISTINCT spot_name) AS spot_count, SUM(visitor_count) AS total_visitor, AVG(heat_score) AS avg_heat FROM spot_heat GROUP BY region, spot_type)region_pdregion_df.toPandas()region_summaryregion_pd.groupby(region).agg(total_spot(spot_count,sum),total_visitor(total_visitor,sum),avg_heat(avg_heat,mean)).reset_index()region_summary[visitor_rank]region_summary[total_visitor].rank(ascendingFalse,methoddense)region_summary[heat_rank]region_summary[avg_heat].rank(ascendingFalse,methoddense)region_summary[score]region_summary[visitor_rank]*0.6region_summary[heat_rank]*0.4region_summary[type_count]region_pd.groupby(region)[spot_type].nunique().values top_regionregion_summary.sort_values(score).head(10)connpymysql.connect(hostlocalhost,userroot,password123456,databasescenic_heat,charsetutf8)cursorconn.cursor()for_,rowintop_region.iterrows():cursor.execute(REPLACE INTO region_distribution(region, total_spot, total_visitor, avg_heat, type_count, score) VALUES(%s,%s,%s,%s,%s,%s),(row[region],int(row[total_spot]),int(row[total_visitor]),float(row[avg_heat]),int(row[type_count]),float(row[score])))conn.commit()cursor.close()conn.close()returnJsonResponse(top_region.to_dict(orientrecords),safeFalse)景点热度数据分析与可视化系统文档展示作者计算机毕业设计小途个人简介曾长期从事计算机专业培训教学本人也热爱上课教学语言擅长Java、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法也喜欢交流技术大家有技术代码这一块的问题可以问我想说的话感谢大家的关注与支持网站实战项目安卓/小程序实战项目大数据实战项目深度学习实战项目