基于大数据的肥胖风险因素数据分析系统 【python、Hadoop、spark、数据可视化、高分毕设项目、python项目、vue前端、课程毕设】

51 阅读7分钟

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目

@TOC

基于大数据的肥胖风险因素数据分析系统介绍

本《基于大数据的肥胖风险因素数据分析系统》是一套完整的前后端分离、面向海量健康数据处理与深度分析的综合性解决方案。在技术架构层面,系统以Hadoop分布式文件系统(HDFS)作为底层数据存储基石,用以支撑大规模肥胖相关原始数据的可靠存储,并采用业界主流的高性能内存计算框架Spark作为核心数据处理与分析引擎。通过运用Spark SQL对结构化数据进行高效的查询、聚合与统计,并结合Python数据科学生态中的Pandas与NumPy库,对数据进行精细化的清洗、转换与特征工程,从而为上层业务分析提供高质量的数据支撑。后端服务层提供了两种主流技术栈实现,即基于Java语言的Spring Boot框架或基于Python语言的Django框架,负责实现全部业务逻辑、数据接口封装以及与数据处理引擎的交互,并通过MySQL数据库对系统用户信息、配置等关键元数据进行持久化管理。前端展示层则采用现代化的Vue框架进行构建,配合ElementUI组件库快速开发出友好、规范的用户交互界面,其核心亮点在于深度集成了Echarts可视化图表库,能够将后台复杂的分析结果,通过数据大屏、人口特征分析、饮食习惯分析、生活方式分析以及最终的肥胖画像分析等多个功能模块,以动态、多维度的图表形式进行直观呈现,从而实现了从数据存储、处理、分析到最终可视化洞察的全链路数据应用,充分展现了大数据技术在公共健康领域的应用价值。

基于大数据的肥胖风险因素数据分析系统演示视频

演示视频

基于大数据的肥胖风险因素数据分析系统演示图片

肥胖画像分析.png

人口特征分析.png

生活方式分析.png

数据大屏.png

数据大屏上.png

饮食习惯分析.png

基于大数据的肥胖风险因素数据分析系统代码展示

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, when, avg, count, desc, corr, lit, mode
# 初始化SparkSession,这是所有大数据处理的入口点
spark = SparkSession.builder.appName("ObesityRiskFactorAnalysisSystem").master("local[*]").getOrCreate()
def analyze_demographics(file_path: str):
    """
    核心功能一:人口特征分析
    处理逻辑:加载数据,对性别、年龄、职业等维度进行分组统计和交叉分析。
    """
    # 1. 从HDFS或本地加载数据集(此处为示例路径)
    df = spark.read.option("header", "true").option("inferSchema", "true").csv(file_path)
    # 2. 性别分布统计
    gender_distribution = df.groupBy("Gender").agg(count("*").alias("count")).collect()
    # 3. 创建年龄分段,进行更精细的分析
    df_with_age_group = df.withColumn("AgeGroup",
        when(col("Age") < 30, "青年 (Under 30)")
        .when((col("Age") >= 30) & (col("Age") < 50), "中年 (30-49)")
        .otherwise("老年 (50+)"))
    # 4. 各年龄段人群数量统计
    age_group_analysis = df_with_age_group.groupBy("AgeGroup").agg(count("*").alias("count")).orderBy("AgeGroup").collect()
    # 5. 分析不同职业人群的平均身体质量指数(BMI),探究职业与肥胖的关联
    occupation_bmi_analysis = df.groupBy("Occupation").agg(avg("BMI").alias("average_bmi")).orderBy(desc("average_bmi")).collect()
    # 6. 统计不同肥胖等级(如NObesity_Level)下的人口性别构成
    obesity_gender_cross_analysis = df.groupBy("NObesity_Level", "Gender").agg(count("*").alias("count")).orderBy("NObesity_Level", "Gender").collect()
    # 7. 组装最终结果,模拟返回给前端API的数据结构
    result = {
        "genderDistribution": [{"gender": row["Gender"], "value": row["count"]} for row in gender_distribution],
        "ageGroupAnalysis": [{"ageGroup": row["AgeGroup"], "value": row["count"]} for row in age_group_analysis],
        "occupationBmiAnalysis": [{"occupation": row["Occupation"], "averageBmi": round(row["average_bmi"], 2)} for row in occupation_bmi_analysis],
        "obesityGenderCrossAnalysis": [{"obesityLevel": row["NObesity_Level"], "gender": row["Gender"], "count": row["count"]} for row in obesity_gender_cross_analysis]
    }
    # 8. 在实际应用中,这里会返回JSON格式的响应
    return result
def analyze_dietary_habits(file_path: str):
    """
    核心功能二:饮食习惯分析
    处理逻辑:分析高热量食物摄入频率、蔬菜摄入习惯等与肥胖等级的关联性。
    """
    # 1. 加载数据集
    df = spark.read.option("header", "true").option("inferSchema", "true").csv(file_path)
    # 2. 分析不同肥胖等级人群,其高热量食物(FAVC)的摄入频率
    # FAVC列可能的值为 'yes''no'
    high_calorie_habit = df.groupBy("NObesity_Level", "FAVC").agg(count("*").alias("count")).orderBy("NObesity_Level")
    # 3. 计算各肥胖等级下,选择“是”(经常吃高热量食物)的比例
    total_per_level = df.groupBy("NObesity_Level").agg(count("*").alias("total"))
    high_calorie_ratio = high_calorie_habit.join(total_per_level, "NObesity_Level") \
        .where(col("FAVC") == "yes") \
        .withColumn("ratio", col("count") / col("total")) \
        .select("NObesity_Level", "ratio").collect()
    # 4. 分析主餐之间是否吃零食(CAEC)与肥胖等级的关系
    snacking_habit = df.groupBy("NObesity_Level", "CAEC").agg(count("*").alias("count")).orderBy("NObesity_Level", desc("count")).collect()
    # 5. 计算每日饮水量(CH2O)与身体质量指数(BMI)之间的皮尔逊相关系数
    water_bmi_correlation = df.stat.corr("CH2O", "BMI")
    # 6. 分析蔬菜摄入量(FCVC)作为正餐一部分的习惯与肥胖等级的关系
    vegetable_consumption_habit = df.groupBy("NObesity_Level").agg(avg("FCVC").alias("avg_vegetable_consumption")).orderBy(desc("avg_vegetable_consumption")).collect()
    # 7. 组装最终分析结果
    result = {
        "highCalorieHabitRatio": [{"obesityLevel": row["NObesity_Level"], "consumeHighCalorieRatio": round(row["ratio"], 2)} for row in high_calorie_ratio],
        "snackingHabitAnalysis": [{"obesityLevel": row["NObesity_Level"], "snackingFrequency": row["CAEC"], "count": row["count"]} for row in snacking_habit],
        "waterAndBmiCorrelation": water_bmi_correlation,
        "vegetableConsumptionHabit": [{"obesityLevel": row["NObesity_Level"], "avgVegetableConsumption": round(row["avg_vegetable_consumption"], 2)} for row in vegetable_consumption_habit]
    }
    return result
def analyze_obesity_profile(file_path: str):
    """
    核心功能三:肥胖画像分析
    处理逻辑:筛选出特定肥胖等级的人群,并对他们的共性特征进行深度画像。
    """
    # 1. 加载数据集
    df = spark.read.option("header", "true").option("inferSchema", "true").csv(file_path)
    # 2. 筛选出肥胖等级为“Obesity_Type_III”(重度肥胖)的样本群体进行画像
    obese_population_df = df.filter(col("NObesity_Level") == "Obesity_Type_III")
    # 3. 如果没有该类别的样本,则返回空信息
    if obese_population_df.count() == 0:
        return {"message": "No data found for the specified obesity level."}
    # 4. 分析该群体的平均年龄
    avg_age = obese_population_df.agg(avg("Age").alias("avg_age")).collect()[0]["avg_age"]
    # 5. 分析该群体的性别构成
    gender_profile = obese_population_df.groupBy("Gender").agg(count("*").alias("count")).orderBy(desc("count")).collect()
    # 6. 分析该群体最常见的交通方式(MTRANS)
    # 使用自定义函数或更复杂逻辑来找到众数,这里简化为分组计数取最大值
    transport_mode = obese_population_df.groupBy("MTRANS").agg(count("*").alias("count")).orderBy(desc("count")).first()
    # 7. 分析该群体的平均每日运动频率(FAF)
    avg_physical_activity = obese_population_df.agg(avg("FAF").alias("avg_faf")).collect()[0]["avg_faf"]
    # 8. 分析该群体使用电子设备的时长(TUE)
    avg_tech_usage = obese_population_df.agg(avg("TUE").alias("avg_tue")).collect()[0]["avg_tue"]
    # 9. 组装成一个清晰的“用户画像”对象
    profile = {
        "targetGroup": "Obesity_Type_III",
        "sampleSize": obese_population_df.count(),
        "averageAge": round(avg_age, 1),
        "genderProfile": [{"gender": row["Gender"], "count": row["count"]} for row in gender_profile],
        "mostCommonTransport": {"mode": transport_mode["MTRANS"], "count": transport_mode["count"]},
        "averagePhysicalActivityLevel": round(avg_physical_activity, 2),
        "averageTechnologyUsageTime": round(avg_tech_usage, 2)
    }
    return profile

基于大数据的肥胖风险因素数据分析系统文档展示

文档.png

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目