计算机毕设选题做什么好?基于大数据的用户美食数据分析与可视化,PySpark预处理+ECharts大屏,含Isolation Forest异常检测算法

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻

💖🔥作者主页 :计算机毕设木哥🔥 💖

文章目录

一、项目介绍

移动互联网催生了大量用户饮食行为数据,这些数据背后隐藏着品类偏好、时段活跃度与地域口味差异等规律。传统餐饮运营多依赖经验判断,缺乏对行为数据的系统挖掘与利用。本文通过开发基于大数据的用户美食数据分析与可视化系统,用以帮助运营者从行为数据中识别用户画像与消费倾向,支撑精细化决策。

系统以Hadoop存储原始行为数据,PySpark完成清洗、派生与聚合计算,后端采用Flask提供API,前端Vue结合ECharts绘制可视化大屏。系统设计了用户行为、美食品类、地域分布、人群画像、时段活跃、口味偏好、群体洞察七个分析模块,群体洞察模块包含K-Means用户分群、FP-Growth行为品类关联挖掘和Isolation Forest异常互动检测三类算法,分析结果以图表与标签形式在前端展示。

经过系统测试,本系统能帮助餐饮运营者快速了解不同城市、年龄段、性别用户的互动偏好与口味差异,为内容推送、菜品优化和用户分层提供数据参考,对餐饮数据化运营有一定实用价值。

二、视频展示

计算机毕设选题做什么好?基于大数据的用户美食数据分析与可视化

三、开发环境

  • 大数据技术:Hadoop、Spark、Hive
  • 开发技术:Python、Django框架、Vue、Echarts
  • 软件工具:Pycharm、DataGrip、Anaconda
  • 可视化 工具 Echarts

四、系统展示

系统页面模块展示:

五、代码展示

bash 复制代码
# preprocess.py
from pyspark.sql import SparkSession
from pyspark.sql.functions import (
    col, hour, dayofweek, date_format, when, 
    count, sum as _sum, avg, max, min, round as _round
)
from pyspark.sql.types import IntegerType, FloatType
import os

spark = SparkSession.builder \
    .appName("FoodBehaviorPreprocess") \
    .config("spark.sql.adaptive.enabled", "true") \
    .getOrCreate()

# 读取原始数据
df = spark.read.csv(
    "dataset/美食_behavior_data_0202_1006.csv", 
    header=True, 
    encoding="utf-8-sig"
)

print(f"原始数据行数: {df.count()}")
df.printSchema()

# ---- 1. 时间字段解析与派生 ----
df = df.withColumn("hour", hour(col("behavior_time")))
df = df.withColumn("weekday", dayofweek(col("behavior_time")))
df = df.withColumn("date", date_format(col("behavior_time"), "yyyy-MM-dd"))

# 时段划分:早(6-10) / 午(10-14) / 晚(14-19) / 夜(19-6)
df = df.withColumn(
    "period", 
    when((col("hour") >= 6) & (col("hour") < 10), "早")
    .when((col("hour") >= 10) & (col("hour") < 14), "午")
    .when((col("hour") >= 14) & (col("hour") < 19), "晚")
    .otherwise("夜")
)

# ---- 2. 年龄分箱 ----
df = df.withColumn(
    "age_group", 
    when(col("user_age") <= 22, "16-22")
    .when(col("user_age") <= 30, "23-30")
    .when(col("user_age") <= 40, "31-40")
    .otherwise("41+")
)

# ---- 3. 派生行为权重(用于后续加权计算) ----
action_weight = {
    "点赞": 1.0,
    "分享": 1.5,
    "收藏": 2.0,
    "推荐": 3.0
}

for action, weight in action_weight.items():
    df = df.withColumn(
        f"weight_{action}", 
        when(col("action") == action, weight).otherwise(0.0)
    )

df = df.withColumn("behavior_weight", 
    col("weight_点赞") + col("weight_分享") + 
    col("weight_收藏") + col("weight_推荐")
)

# ---- 4. 派生深度互动标识 ----
df = df.withColumn(
    "is_deep_action",
    when((col("action") == "收藏") | (col("action") == "推荐"), 1).otherwise(0)
)

# ---- 5. 数据质量校验 ----
print("缺失值统计:")
for field in df.columns:
    null_count = df.filter(col(field).isNull()).count()
    print(f"  {field}: {null_count}")

# 年龄范围校验
age_stats = df.select(
    min("user_age").alias("min_age"),
    max("user_age").alias("max_age"),
    avg("user_age").alias("avg_age")
).collect()[0]
print(f"年龄范围: {age_stats['min_age']} - {age_stats['max_age']}, 均值: {age_stats['avg_age']:.1f}")

# ---- 6. 写入预处理结果 ----
output_path = "output/food_behavior_preprocessed_data.csv"
df.coalesce(1).write.csv(output_path, header=True, mode="overwrite")

print(f"预处理完成,数据已写入: {output_path}")
spark.stop()

六、项目文档展示

七、项目总结

本课题围绕餐饮行为数据的多维度分析与可视化展开,以5000条真实用户互动记录为基础,构建了覆盖用户行为、美食品类、地域分布、人群画像、时段活跃、口味偏好及群体洞察七个分析维度的可视化系统。技术实现上,采用PySpark完成数据清洗、时间特征派生与聚合统计,通过HDFS进行原始数据存储,后端Flask提供API接口,前端Vue配合ECharts绘制大屏图表。算法层面,群体洞察模块集成了K-Means用户行为分群,依据互动深度与品类偏好将用户划分为高深度互动型、高频推荐型等画像群体;FP-Growth挖掘品类与行为之间的关联规则,揭示中餐加收藏与小吃加点赞等交叉运营机会;Isolation Forest对用户的多维行为特征进行异常检测,自动标定互动结构偏离常规的用户。系统同时支持管理端与用户端双角色,两端图表展示与数据查询功能一致,仅后台权限做隔离。测试结果表明,本系统能够帮助运营者快速定位不同城市、年龄段、性别用户的互动偏好与口味差异,为菜品优化、内容推送和用户分层运营提供数据支撑,对餐饮数据化决策具有一定实用价值。

大家可以帮忙点赞、收藏、关注、评论啦 👇🏻

💖🔥作者主页 :计算机毕设木哥🔥 💖

相关推荐
玖米GEO运营王总监5 分钟前
2026年账号矩阵协同效应怎么量化:三个指标与公式结构
java·大数据·数据库
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:Bellman-Ford与SPFA含负权最短路及负环检测全解析
c++·python·算法·bfs·信息学竞赛
小小张说故事1 小时前
Python 的 __init__ 到底是不是构造函数?拆开 __new__ 先造对象、那次被跳过的初始化和必须返回 None 的规矩
python
拖累斯2 小时前
Jenkins + Python 全自动跑通「禅道任务/BUG 导出 → 月度开发考核表」
python·jenkins·bug
特立独行的猫A2 小时前
13MB 单文件、一条命令变服务:把仓颉写的 cjh 内嵌进你的应用,当它的 AI 大脑
java·后端·python
deepseek232 小时前
Agent任务中途断线,怎么避免重复执行?SQLite检查点实测
python·sqlite·任务调度·幂等性·ai agent
叼烟扛炮3 小时前
Linux 学习笔记(六十一):网络编程毕业设计——Reactor 反应堆模式
linux·网络·笔记·学习·课程设计
2401_868534783 小时前
【网络安全
网络·python
飞飞传输12 小时前
飞驰云联文件交换建设方法论:从单点传输到持续治理
大数据·运维·安全
得帆低代码PaaS13 小时前
企业级 Agent 架构:MCP、Integration、数据与治理能力
大数据·人工智能·架构·ai agent·企业数字化·mcp