计算机毕设选题做什么好?基于大数据的用户美食数据分析与可视化,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对用户的多维行为特征进行异常检测,自动标定互动结构偏离常规的用户。系统同时支持管理端与用户端双角色,两端图表展示与数据查询功能一致,仅后台权限做隔离。测试结果表明,本系统能够帮助运营者快速定位不同城市、年龄段、性别用户的互动偏好与口味差异,为菜品优化、内容推送和用户分层运营提供数据支撑,对餐饮数据化决策具有一定实用价值。

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

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

相关推荐
张张123y3 小时前
后端第一课:输入 URL 后发生了什么?我用手写 Socket 把全链路跑通了
python·websocket·ai·socket·url·后端开发
全栈弄潮儿5 小时前
Python实战第7期:字典与集合
后端·python·编程语言
2603_965148116 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
Geeys6 小时前
拼多多单品推广完整方案(可直接落地)
大数据·人工智能
生态学者6 小时前
Global Change Biology | 森林越“步调一致”,反而越怕干旱?树木生长与叶片活动的同步之谜
大数据·人工智能·算法·r语言·微信公众平台
xixiaoyunya6 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
lsswear6 小时前
Agent 框架新手入门与实战部署指南
大数据·人工智能·算法
samFuB6 小时前
【数据集】地级市一般性转移支付、专项转移支付数据(2010-2024年)
大数据
把我格子衫拿来6 小时前
Dice 很高就够了吗?分割评价中的 IoU、表面距离与 HD95
python·图像分割·模型评估·医学影像·dice
曲径海盗7 小时前
【Python 学习第 31 天】复习:变量与数据类型 等 3 题
python·学习笔记·编程入门