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

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

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

相关推荐
奈斯先生Vector1 小时前
AIGC 视频生成换个拍法:用 Kling Video 把一张人物图变成可剪辑的短故事
开发语言·人工智能·windows·python·aigc·音视频
卷无止境1 小时前
当"精简主义"住进AI编程助手:Ponytail深度解读
后端·python·fastapi
2601_962298271 小时前
交易开拓者通常使用什么编程语言?这种语言如何帮助自动化交易?
java·c++·python·编程语言·自动化交易
心易行者1 小时前
用html在线运行做数据可视化大屏,5个实战场景从入门到上线
大数据·前端·数据库·人工智能·python
用户298698530141 小时前
Python 实现 Word 文档转 PDF 的自动化方案
后端·python·api
Pocker_Spades_A1 小时前
Python快速入门专业版(五十九):re实战——用正则爬取豆瓣电影Top250(全流程解析)
开发语言·python
旖旎夜光1 小时前
【LangChain实战】LangChain 学习笔记(二):结构化输出、流式传输与消息管理
人工智能·笔记·python·学习·ai·langchain
the局外人2 小时前
学习 FastAPI 的 Day 1:看懂接口与请求流程
后端·python·fastapi
晴天162 小时前
ES 标准、V8 引擎与 Node.js 版本联动关系全解与实战踩坑
大数据·elasticsearch·node.js