【数据分析】基于大数据的体脂数据可视化分析系统 | 大数据毕设实战项目 数据可视化大屏 毕设选题推荐 Hadoop SPark java Python

39 阅读6分钟

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

基于大数据的体脂数据可视化分析系统介绍

基于大数据的体脂数据可视化分析系统是一个面向健康数据分析领域的毕业设计项目,整个系统采用Hadoop+Spark作为大数据处理框架,通过HDFS实现海量体脂数据的分布式存储,利用Spark SQL完成数据的快速查询与分析。后端开发提供SpringBoot和Django两种技术选型,前端采用Vue+ElementUI构建用户界面,结合Echarts实现数据可视化展示。系统核心功能涵盖9个分析模块,包括核心指标分布分析、年龄结构体脂分析、BMI健康评估分析、BMI与体脂率一致性分析以及腰臀比健康风险分析等,通过Pandas和NumPy进行数据预处理,最终将分析结果以图表形式呈现给用户。整个系统从数据采集、存储、计算到可视化形成完整的技术链路,既能体现大数据技术栈的实际应用,又能解决健康数据分析的实际需求,非常适合作为计算机专业学生的毕业设计选题。

基于大数据的体脂数据可视化分析系统演示视频

演示视频

基于大数据的体脂数据可视化分析系统演示图片

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

基于大数据的体脂数据可视化分析系统代码展示

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, count, avg, when, sum as spark_sum, round as spark_round
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, FloatType
import pandas as pd
import numpy as np

spark = SparkSession.builder.appName("BodyFatAnalysisSystem").master("local[*]").config("spark.sql.warehouse.dir", "/user/hive/warehouse").config("spark.executor.memory", "2g").config("spark.driver.memory", "1g").getOrCreate()

def core_indicator_distribution_analysis(data_path):
    schema = StructType([
        StructField("user_id", StringType(), True),
        StructField("age", IntegerType(), True),
        StructField("gender", StringType(), True),
        StructField("height", FloatType(), True),
        StructField("weight", FloatType(), True),
        StructField("body_fat_rate", FloatType(), True),
        StructField("bmi", FloatType(), True),
        StructField("waist_circumference", FloatType(), True),
        StructField("hip_circumference", FloatType(), True)
    ])
    df = spark.read.csv(data_path, header=True, schema=schema)
    df = df.filter(col("body_fat_rate").isNotNull() & col("bmi").isNotNull())
    df = df.withColumn("bmi_category", 
        when(col("bmi") < 18.5, "偏瘦")
        .when((col("bmi") >= 18.5) & (col("bmi") < 24), "正常")
        .when((col("bmi") >= 24) & (col("bmi") < 28), "偏胖")
        .otherwise("肥胖"))
    df = df.withColumn("body_fat_category",
        when((col("gender") == "男") & (col("body_fat_rate") < 15), "偏低")
        .when((col("gender") == "男") & (col("body_fat_rate") >= 15) & (col("body_fat_rate") < 25), "正常")
        .when((col("gender") == "男") & (col("body_fat_rate") >= 25), "偏高")
        .when((col("gender") == "女") & (col("body_fat_rate") < 20), "偏低")
        .when((col("gender") == "女") & (col("body_fat_rate") >= 20) & (col("body_fat_rate") < 30), "正常")
        .otherwise("偏高"))
    bmi_distribution = df.groupBy("bmi_category").agg(
        count("user_id").alias("count"),
        spark_round(avg("bmi"), 2).alias("avg_bmi"),
        spark_round(avg("body_fat_rate"), 2).alias("avg_body_fat")
    )
    body_fat_distribution = df.groupBy("body_fat_category", "gender").agg(
        count("user_id").alias("count"),
        spark_round(avg("body_fat_rate"), 2).alias("avg_body_fat_rate")
    )
    overall_stats = df.agg(
        spark_round(avg("body_fat_rate"), 2).alias("overall_avg_body_fat"),
        spark_round(avg("bmi"), 2).alias("overall_avg_bmi")
    )
    bmi_pandas = bmi_distribution.toPandas()
    body_fat_pandas = body_fat_distribution.toPandas()
    overall_pandas = overall_stats.toPandas()
    result = {
        "bmi_distribution": bmi_pandas.to_dict(orient="records"),
        "body_fat_distribution": body_fat_pandas.to_dict(orient="records"),
        "overall_statistics": overall_pandas.to_dict(orient="records")[0]
    }
    return result

def age_structure_body_fat_analysis(data_path):
    schema = StructType([
        StructField("user_id", StringType(), True),
        StructField("age", IntegerType(), True),
        StructField("gender", StringType(), True),
        StructField("body_fat_rate", FloatType(), True),
        StructField("bmi", FloatType(), True)
    ])
    df = spark.read.csv(data_path, header=True, schema=schema)
    df = df.filter(col("age").isNotNull() & col("body_fat_rate").isNotNull())
    df = df.withColumn("age_group",
        when(col("age") < 20, "20岁以下")
        .when((col("age") >= 20) & (col("age") < 30), "20-30岁")
        .when((col("age") >= 30) & (col("age") < 40), "30-40岁")
        .when((col("age") >= 40) & (col("age") < 50), "40-50岁")
        .otherwise("50岁以上"))
    age_body_fat_stats = df.groupBy("age_group", "gender").agg(
        count("user_id").alias("user_count"),
        spark_round(avg("body_fat_rate"), 2).alias("avg_body_fat_rate"),
        spark_round(avg("bmi"), 2).alias("avg_bmi")
    ).orderBy("age_group")
    age_trend_male = df.filter(col("gender") == "男").groupBy("age_group").agg(
        spark_round(avg("body_fat_rate"), 2).alias("male_avg_body_fat")
    ).orderBy("age_group")
    age_trend_female = df.filter(col("gender") == "女").groupBy("age_group").agg(
        spark_round(avg("body_fat_rate"), 2).alias("female_avg_body_fat")
    ).orderBy("age_group")
    high_risk_users = df.filter(
        ((col("gender") == "男") & (col("body_fat_rate") > 25)) |
        ((col("gender") == "女") & (col("body_fat_rate") > 30))
    ).groupBy("age_group").agg(
        count("user_id").alias("high_risk_count")
    )
    age_stats_pandas = age_body_fat_stats.toPandas()
    male_trend_pandas = age_trend_male.toPandas()
    female_trend_pandas = age_trend_female.toPandas()
    high_risk_pandas = high_risk_users.toPandas()
    result = {
        "age_body_fat_statistics": age_stats_pandas.to_dict(orient="records"),
        "male_trend": male_trend_pandas.to_dict(orient="records"),
        "female_trend": female_trend_pandas.to_dict(orient="records"),
        "high_risk_distribution": high_risk_pandas.to_dict(orient="records")
    }
    return result

def bmi_body_fat_consistency_analysis(data_path):
    schema = StructType([
        StructField("user_id", StringType(), True),
        StructField("gender", StringType(), True),
        StructField("bmi", FloatType(), True),
        StructField("body_fat_rate", FloatType(), True),
        StructField("age", IntegerType(), True)
    ])
    df = spark.read.csv(data_path, header=True, schema=schema)
    df = df.filter(col("bmi").isNotNull() & col("body_fat_rate").isNotNull())
    df = df.withColumn("bmi_status",
        when(col("bmi") < 18.5, "偏瘦")
        .when((col("bmi") >= 18.5) & (col("bmi") < 24), "正常")
        .when((col("bmi") >= 24) & (col("bmi") < 28), "偏胖")
        .otherwise("肥胖"))
    df = df.withColumn("body_fat_status",
        when((col("gender") == "男") & (col("body_fat_rate") < 15), "偏低")
        .when((col("gender") == "男") & (col("body_fat_rate") >= 15) & (col("body_fat_rate") < 25), "正常")
        .when((col("gender") == "男") & (col("body_fat_rate") >= 25), "偏高")
        .when((col("gender") == "女") & (col("body_fat_rate") < 20), "偏低")
        .when((col("gender") == "女") & (col("body_fat_rate") >= 20) & (col("body_fat_rate") < 30), "正常")
        .otherwise("偏高"))
    df = df.withColumn("is_consistent",
        when(
            ((col("bmi_status") == "正常") & (col("body_fat_status") == "正常")) |
            ((col("bmi_status") == "偏胖") & (col("body_fat_status") == "偏高")) |
            ((col("bmi_status") == "偏瘦") & (col("body_fat_status") == "偏低")) |
            ((col("bmi_status") == "肥胖") & (col("body_fat_status") == "偏高")),
            "一致"
        ).otherwise("不一致"))
    consistency_rate = df.groupBy("is_consistent").agg(
        count("user_id").alias("count")
    )
    total_count = df.count()
    consistency_rate = consistency_rate.withColumn(
        "percentage",
        spark_round((col("count") / total_count) * 100, 2)
    )
    inconsistent_details = df.filter(col("is_consistent") == "不一致").groupBy("bmi_status", "body_fat_status", "gender").agg(
        count("user_id").alias("inconsistent_count")
    )
    bmi_body_fat_correlation = df.groupBy("bmi_status").agg(
        spark_round(avg("body_fat_rate"), 2).alias("avg_body_fat_rate"),
        count("user_id").alias("user_count")
    )
    consistency_pandas = consistency_rate.toPandas()
    inconsistent_pandas = inconsistent_details.toPandas()
    correlation_pandas = bmi_body_fat_correlation.toPandas()
    result = {
        "consistency_statistics": consistency_pandas.to_dict(orient="records"),
        "inconsistent_details": inconsistent_pandas.to_dict(orient="records"),
        "bmi_body_fat_correlation": correlation_pandas.to_dict(orient="records")
    }
    return result

基于大数据的体脂数据可视化分析系统文档展示

在这里插入图片描述

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