💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
基于大数据的上海餐饮数据分析与可视化系统介绍
本系统全称为《基于大数据的上海餐饮数据分析与可视化系统》,是一个专注于城市餐饮行业数据价值挖掘的综合性平台。在技术架构上,系统后端核心采用了Hadoop分布式文件系统(HDFS)作为海量数据的存储基础,并利用Spark框架及其内置的Spark SQL组件,结合Pandas、NumPy等数据科学库,进行高效的分布式数据处理与深度分析。应用服务层支持Java和Python两种主流开发语言,分别提供了基于Spring Boot框架(集成Spring、SpringMVC、MyBatis)和Django框架的实现版本,为系统提供了稳定可靠的业务逻辑支撑。前端则采用现代化的Vue.js框架与ElementUI组件库构建用户交互界面,并深度集成了强大的Echarts图表库,将复杂的分析结果以直观、动态的图表形式呈现给用户。在功能模块方面,系统实现了全面的数据洞察能力,包括集成了核心指标的【数据大屏可视化】、洞察行业全貌的【市场宏观分析】、评估商户声誉的【质量口碑分析】、解析用户偏好的【消费行为分析】、展示商家区位特征的【地理空间分析】以及实现精准营销的【客群细分分析】。同时,系统也包含了完善的【用户信息】管理和【上海餐饮数据管理】功能,构成了一个从数据采集、处理、分析到最终可视化的完整闭环解决方案。
基于大数据的上海餐饮数据分析与可视化系统演示视频
基于大数据的上海餐饮数据分析与可视化系统演示图片
基于大数据的上海餐饮数据分析与可视化系统代码展示
from pyspark.sql import SparkSession, functions as F
from pyspark.sql.window import Window
spark = SparkSession.builder.appName("ShanghaiCateringAnalysis").master("local[*]").getOrCreate()
def process_market_macro_analysis(data_path='hdfs:///data/shanghai_restaurants.csv'):
"""
市场宏观分析核心处理函数
"""
df = spark.read.option("header", "true").option("inferSchema", "true").csv(data_path)
total_restaurants = df.count()
avg_stats_row = df.agg(
F.round(F.avg("price"), 2).alias("average_price"),
F.round(F.avg("taste_score"), 2).alias("average_taste"),
F.round(F.avg("env_score"), 2).alias("average_environment"),
F.round(F.avg("service_score"), 2).alias("average_service")
).first()
region_distribution_df = df.groupBy("region").count().orderBy(F.col("count").desc())
category_distribution_df = df.groupBy("category").count().orderBy(F.col("count").desc()).limit(10)
region_distribution = [row.asDict() for row in region_distribution_df.collect()]
category_distribution = [row.asDict() for row in category_distribution_df.collect()]
result = {
"total_restaurants": total_restaurants,
"average_price": avg_stats_row["average_price"],
"average_taste": avg_stats_row["average_taste"],
"average_environment": avg_stats_row["average_environment"],
"average_service": avg_stats_row["average_service"],
"region_distribution": region_distribution,
"category_distribution": category_distribution
}
return result
def process_quality_reputation_analysis(data_path='hdfs:///data/shanghai_restaurants.csv'):
"""
质量口碑分析核心处理函数
"""
df = spark.read.option("header", "true").option("inferSchema", "true").csv(data_path)
df_with_overall_score = df.withColumn("overall_score",
F.round((F.col("taste_score") * 0.5 + F.col("env_score") * 0.25 + F.col("service_score") * 0.25), 2)
)
top_10_restaurants_df = df_with_overall_score.select("name", "region", "category", "overall_score", "price")\
.orderBy(F.col("overall_score").desc(), F.col("price").asc())\
.limit(10)
bottom_10_restaurants_df = df_with_overall_score.select("name", "region", "category", "overall_score", "price")\
.orderBy(F.col("overall_score").asc(), F.col("price").desc())\
.limit(10)
window_spec = Window.partitionBy("category").orderBy(F.col("overall_score").desc())
category_champions_df = df_with_overall_score.withColumn("rank", F.rank().over(window_spec))\
.filter(F.col("rank") == 1)\
.select("category", "name", "overall_score")\
.orderBy("category")
top_10_list = [row.asDict() for row in top_10_restaurants_df.collect()]
bottom_10_list = [row.asDict() for row in bottom_10_restaurants_df.collect()]
category_champions_list = [row.asDict() for row in category_champions_df.collect()]
result = {
"top_10_restaurants": top_10_list,
"bottom_10_restaurants": bottom_10_list,
"category_champions": category_champions_list
}
return result
def process_consumer_behavior_analysis(data_path='hdfs:///data/shanghai_restaurants.csv'):
"""
消费行为分析核心处理函数
"""
df = spark.read.option("header", "true").option("inferSchema", "true").csv(data_path)
df_with_price_range = df.withColumn("price_range",
F.when(F.col("price") < 50, "50元以下")
.when((F.col("price") >= 50) & (F.col("price") < 100), "50-100元")
.when((F.col("price") >= 100) & (F.col("price") < 200), "100-200元")
.when((F.col("price") >= 200) & (F.col("price") < 500), "200-500元")
.otherwise("500元以上")
)
price_range_order = F.array(F.lit("50元以下"), F.lit("50-100元"), F.lit("100-200元"), F.lit("200-500元"), F.lit("500元以上"))
price_range_distribution_df = df_with_price_range.groupBy("price_range")\
.count()\
.withColumn("order", F.array_position(price_range_order, F.col("price_range")))\
.orderBy("order")\
.select("price_range", "count")
price_score_correlation_df = df_with_price_range.groupBy("price_range")\
.agg(
F.round(F.avg("taste_score"), 2).alias("avg_taste_score"),
F.round(F.avg("env_score"), 2).alias("avg_env_score"),
F.round(F.avg("service_score"), 2).alias("avg_service_score")
)\
.withColumn("order", F.array_position(price_range_order, F.col("price_range")))\
.orderBy("order")\
.select("price_range", "avg_taste_score", "avg_env_score", "avg_service_score")
price_range_distribution = [row.asDict() for row in price_range_distribution_df.collect()]
price_score_correlation = [row.asDict() for row in price_score_correlation_df.collect()]
result = {
"price_range_distribution": price_range_distribution,
"price_score_correlation": price_score_correlation
}
return result
基于大数据的上海餐饮数据分析与可视化系统文档展示
💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目