💖💖作者:计算机毕业设计杰瑞
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学校实战项目
计算机毕业设计选题推荐
目录
- 基于大数据的全国各地景点指数数据可视化分析介绍
- 基于大数据的全国各地景点指数数据可视化分析演示视频
- 基于大数据的全国各地景点指数数据可视化分析演示图片
- 基于大数据的全国各地景点指数数据可视化分析代码展示
- 基于大数据的全国各地景点指数数据可视化分析文档展示
基于大数据的全国各地景点指数数据可视化分析介绍
本系统名为《基于大数据的全国各地景点指数数据可视化分析》,是一套面向旅游景点数据的采集、存储、计算与可视化展示平台。系统以 Hadoop 分布式文件系统作为底层数据存储支撑,将全国各地景点的基础信息、游客流量、热度评分、季节波动等多源数据统一上传至 HDFS 进行管理,再借助 Spark 与 Spark SQL 完成数据清洗、聚合统计与指标计算,通过 Pandas 与 NumPy 对计算结果做进一步整理,最终将处理后的景点指数结果写入 MySQL 数据库,并由 Django 或 Spring Boot 提供后端接口,前端采用 Vue、ElementUI、ECharts、HTML、CSS、JavaScript 与 jQuery 完成页面渲染与图表展示。系统整体包含系统首页、用户管理、景区信息管理和景点指数分析四大模块,用户可以通过首页快速了解平台整体数据概况,在景区信息模块中查看各景点的详细资料,在景点指数分析模块中按照地区、时间、热度等维度观察景点指数的变化趋势,从而直观感受到大数据计算在旅游数据分析场景中的实际作用。
基于大数据的全国各地景点指数数据可视化分析演示视频
演示视频
基于大数据的全国各地景点指数数据可视化分析演示图片
基于大数据的全国各地景点指数数据可视化分析代码展示
frompyspark.sqlimportSparkSessionfrompyspark.sql.functionsimportcol,sum,avg,count,desc,whenfromdjango.httpimportJsonResponsefromdjango.views.decorators.csrfimportcsrf_exemptfromdjango.dbimportconnectionimportpandasaspdimportnumpyasnpimportjson spark=SparkSession.builder.appName("ScenicIndexAnalysis").master("local[*]").config("spark.sql.shuffle.partitions","4").enableHiveSupport().getOrCreate()defscenic_info_manage(request):ifrequest.method=="POST":body=json.loads(request.body)scenic_name=body.get("scenic_name")province=body.get("province")city=body.get("city")level=body.get("level")ifnotscenic_nameornotprovince:returnJsonResponse({"code":400,"msg":"景区名称和省份不能为空"})withconnection.cursor()ascursor:cursor.execute("SELECT id FROM scenic_info WHERE scenic_name=%s AND province=%s",[scenic_name,province])exist=cursor.fetchone()ifexist:returnJsonResponse({"code":409,"msg":"该景区已存在"})cursor.execute("INSERT INTO scenic_info(scenic_name, province, city, level) VALUES(%s,%s,%s,%s)",[scenic_name,province,city,level])returnJsonResponse({"code":200,"msg":"景区信息添加成功"})elifrequest.method=="GET":page=int(request.GET.get("page",1))size=int(request.GET.get("size",10))offset=(page-1)*sizewithconnection.cursor()ascursor:cursor.execute("SELECT COUNT(*) FROM scenic_info")total=cursor.fetchone()[0]cursor.execute("SELECT id, scenic_name, province, city, level FROM scenic_info LIMIT %s OFFSET %s",[size,offset])rows=cursor.fetchall()result=[{"id":r[0],"scenic_name":r[1],"province":r[2],"city":r[3],"level":r[4]}forrinrows]returnJsonResponse({"code":200,"total":total,"data":result})defscenic_index_analysis(request):province=request.GET.get("province","")start_date=request.GET.get("start_date","")end_date=request.GET.get("end_date","")df=spark.read.format("csv").option("header","true").option("inferSchema","true").load("hdfs://localhost:9000/scenic/index_data.csv")df=df.filter(col("dt").isNotNull())ifprovince:df=df.filter(col("province")==province)ifstart_dateandend_date:df=df.filter((col("dt")>=start_date)&(col("dt")<=end_date))df.createOrReplaceTempView("scenic_index")result_df=spark.sql("SELECT province, city, scenic_name, SUM(visitor_count) AS total_visitor, AVG(heat_score) AS avg_heat, AVG(comment_score) AS avg_comment, COUNT(DISTINCT dt) AS days FROM scenic_index GROUP BY province, city, scenic_name ORDER BY total_visitor DESC")pdf=result_df.toPandas()pdf["avg_heat"]=pdf["avg_heat"].round(2)pdf["avg_comment"]=pdf["avg_comment"].round(2)pdf["heat_level"]=np.where(pdf["avg_heat"]>=80,"高热",np.where(pdf["avg_heat"]>=50,"中热","低热"))data_list=pdf.to_dict(orient="records")withconnection.cursor()ascursor:cursor.execute("DELETE FROM scenic_index_result WHERE dt=%s",[end_date])forrowindata_list:cursor.execute("INSERT INTO scenic_index_result(province, city, scenic_name, total_visitor, avg_heat, avg_comment, heat_level, dt) VALUES(%s,%s,%s,%s,%s,%s,%s,%s)",[row["province"],row["city"],row["scenic_name"],int(row["total_visitor"]),float(row["avg_heat"]),float(row["avg_comment"]),row["heat_level"],end_date])returnJsonResponse({"code":200,"data":data_list})defindex_chart_data(request):province=request.GET.get("province","")df=spark.read.format("csv").option("header","true").option("inferSchema","true").load("hdfs://localhost:9000/scenic/index_data.csv")ifprovince:df=df.filter(col("province")==province)df.createOrReplaceTempView("scenic_index_chart")trend_df=spark.sql("SELECT dt, SUM(visitor_count) AS total_visitor, AVG(heat_score) AS avg_heat FROM scenic_index_chart GROUP BY dt ORDER BY dt")trend_pdf=trend_df.toPandas()trend_pdf["avg_heat"]=trend_pdf["avg_heat"].round(2)dates=trend_pdf["dt"].tolist()visitors=trend_pdf["total_visitor"].tolist()heats=trend_pdf["avg_heat"].tolist()rank_df=spark.sql("SELECT scenic_name, SUM(visitor_count) AS total_visitor FROM scenic_index_chart GROUP BY scenic_name ORDER BY total_visitor DESC LIMIT 10")rank_pdf=rank_df.toPandas()rank_names=rank_pdf["scenic_name"].tolist()rank_values=rank_pdf["total_visitor"].tolist()chart_data={"trend":{"dates":dates,"visitors":visitors,"heats":heats},"rank":{"names":rank_names,"values":rank_values}}returnJsonResponse({"code":200,"chart_data":chart_data})基于大数据的全国各地景点指数数据可视化分析文档展示
💖💖作者:计算机毕业设计杰瑞
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学校实战项目
计算机毕业设计选题推荐