前言
💖💖作者:计算机程序员小杨
💙💙个人简介:我是一名计算机相关专业的从业者,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。热爱技术,喜欢钻研新工具和框架,也乐于通过代码解决实际问题,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💕💕文末获取源码联系 计算机程序员小杨
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目
计算机毕业设计选题
💜💜
一.开发工具简介
大数据框架:Hadoop+Spark(本次没用Hive,支持定制)
开发语言:Python+Java(两个版本都支持)
后端框架:Django+Spring Boot(Spring+SpringMVC+Mybatis)(两个版本都支持)
前端:Vue+ElementUI+Echarts+HTML+CSS+JavaScript+jQuery
详细技术点:Hadoop、HDFS、Spark、Spark SQL、Pandas、NumPy
数据库:MySQL
二.系统内容简介
肥胖风险因素数据分析系统是一个基于大数据技术的健康数据分析平台,通过Hadoop+Spark分布式计算框架对海量肥胖相关数据进行深度挖掘和智能分析。系统采用Python作为主要开发语言,结合Django后端框架构建稳定的数据处理服务,前端使用Vue+ElementUI+Echarts技术栈实现直观的用户交互界面和丰富的数据可视化展示。系统核心功能涵盖用户管理、肥胖风险因素数据管理、人口特征分析、饮食习惯分析、生活方式分析、肥胖画像分析以及可视化大屏等模块。通过Spark SQL对存储在HDFS中的数据进行快速查询和统计分析,结合Pandas和NumPy进行精细化的数据处理和科学计算,系统能够从多维度识别影响肥胖的关键因素,构建个性化的肥胖风险评估模型,为健康管理决策提供数据支撑,实现对肥胖风险的预测分析和预警提醒。
三.系统功能演示
【大数据】肥胖风险因素数据分析系统 计算机毕业设计项目 Hadoop+Spark环境配置 数据科学与大数据技术 附源码+文档+讲解
四.系统界面展示
五.系统源码展示
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, count, avg, sum, when, desc, asc
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import pandas as pd
import numpy as np
import json
spark = SparkSession.builder.appName("ObesityRiskAnalysis").config("spark.sql.adaptive.enabled", "true").getOrCreate()
def population_characteristic_analysis(request):
user_data = spark.read.option("header", "true").csv("hdfs://localhost:9000/obesity_data/user_profiles.csv")
user_data = user_data.withColumn("age", col("age").cast("int")).withColumn("weight", col("weight").cast("float")).withColumn("height", col("height").cast("float"))
age_distribution = user_data.groupBy("age_group").agg(count("*").alias("count"), avg("weight").alias("avg_weight"), avg("height").alias("avg_height"))
gender_analysis = user_data.groupBy("gender").agg(count("*").alias("total"), avg("bmi").alias("avg_bmi"))
regional_stats = user_data.groupBy("region").agg(count("*").alias("population"), avg("income").alias("avg_income"))
obesity_by_age = user_data.filter(col("bmi") >= 30).groupBy("age_group").agg(count("*").alias("obesity_count"))
total_by_age = user_data.groupBy("age_group").agg(count("*").alias("total_count"))
obesity_rate = obesity_by_age.join(total_by_age, "age_group").withColumn("obesity_rate", col("obesity_count") / col("total_count"))
education_impact = user_data.groupBy("education_level").agg(avg("bmi").alias("avg_bmi"), count("*").alias("count")).orderBy(desc("avg_bmi"))
occupation_analysis = user_data.groupBy("occupation").agg(avg("bmi").alias("avg_bmi"), avg("income").alias("avg_income")).filter(col("count") > 10)
marriage_status_effect = user_data.groupBy("marriage_status").agg(avg("bmi").alias("avg_bmi"), avg("stress_level").alias("avg_stress"))
age_bmi_correlation = user_data.select("age", "bmi").toPandas()
correlation_coeff = np.corrcoef(age_bmi_correlation['age'], age_bmi_correlation['bmi'])[0, 1]
high_risk_groups = user_data.filter((col("bmi") >= 30) | (col("waist_circumference") >= 90)).groupBy("age_group", "gender").agg(count("*").alias("high_risk_count"))
lifestyle_factors = user_data.groupBy("smoking_status", "drinking_status").agg(avg("bmi").alias("avg_bmi"), count("*").alias("count"))
result_data = {
'age_distribution': age_distribution.collect(),
'gender_analysis': gender_analysis.collect(),
'regional_stats': regional_stats.collect(),
'obesity_rate': obesity_rate.collect(),
'education_impact': education_impact.collect(),
'correlation_coefficient': correlation_coeff,
'high_risk_groups': high_risk_groups.collect()
}
return JsonResponse(result_data)
def dietary_habits_analysis(request):
dietary_data = spark.read.option("header", "true").csv("hdfs://localhost:9000/obesity_data/dietary_records.csv")
dietary_data = dietary_data.withColumn("daily_calories", col("daily_calories").cast("float")).withColumn("sugar_intake", col("sugar_intake").cast("float"))
calorie_groups = dietary_data.withColumn("calorie_level", when(col("daily_calories") < 1800, "Low").when(col("daily_calories") < 2500, "Medium").otherwise("High"))
calorie_bmi_relation = calorie_groups.groupBy("calorie_level").agg(avg("bmi").alias("avg_bmi"), count("*").alias("count"))
meal_frequency_analysis = dietary_data.groupBy("meal_frequency").agg(avg("bmi").alias("avg_bmi"), avg("daily_calories").alias("avg_calories"))
food_preference_impact = dietary_data.groupBy("food_preference").agg(avg("bmi").alias("avg_bmi"), avg("vegetable_servings").alias("avg_vegetables"))
sugar_intake_analysis = dietary_data.withColumn("sugar_level", when(col("sugar_intake") < 25, "Low").when(col("sugar_intake") < 50, "Medium").otherwise("High"))
sugar_obesity_correlation = sugar_intake_analysis.groupBy("sugar_level").agg(avg("bmi").alias("avg_bmi"), count("*").alias("count"))
fast_food_frequency = dietary_data.groupBy("fast_food_frequency").agg(avg("bmi").alias("avg_bmi"), avg("daily_calories").alias("avg_calories"))
water_intake_effect = dietary_data.groupBy("water_intake_level").agg(avg("bmi").alias("avg_bmi"), avg("metabolism_rate").alias("avg_metabolism"))
cooking_method_analysis = dietary_data.groupBy("cooking_method").agg(avg("oil_consumption").alias("avg_oil"), avg("bmi").alias("avg_bmi"))
snack_habits = dietary_data.groupBy("snack_frequency").agg(avg("bmi").alias("avg_bmi"), avg("sugar_intake").alias("avg_sugar"))
portion_size_impact = dietary_data.groupBy("portion_size").agg(avg("daily_calories").alias("avg_calories"), avg("bmi").alias("avg_bmi"))
dietary_patterns = dietary_data.groupBy("dietary_pattern").agg(avg("fiber_intake").alias("avg_fiber"), avg("protein_intake").alias("avg_protein"), avg("bmi").alias("avg_bmi"))
nutrient_balance = dietary_data.select("protein_intake", "carb_intake", "fat_intake", "bmi").toPandas()
protein_correlation = np.corrcoef(nutrient_balance['protein_intake'], nutrient_balance['bmi'])[0, 1]
high_calorie_users = dietary_data.filter(col("daily_calories") > 3000).select("user_id", "daily_calories", "bmi", "food_preference")
result_data = {
'calorie_bmi_relation': calorie_bmi_relation.collect(),
'meal_frequency_analysis': meal_frequency_analysis.collect(),
'sugar_obesity_correlation': sugar_obesity_correlation.collect(),
'fast_food_frequency': fast_food_frequency.collect(),
'water_intake_effect': water_intake_effect.collect(),
'protein_correlation': protein_correlation,
'dietary_patterns': dietary_patterns.collect(),
'high_calorie_users': high_calorie_users.collect()
}
return JsonResponse(result_data)
def obesity_profile_analysis(request):
profile_data = spark.read.option("header", "true").csv("hdfs://localhost:9000/obesity_data/obesity_profiles.csv")
profile_data = profile_data.withColumn("bmi", col("bmi").cast("float")).withColumn("body_fat_percentage", col("body_fat_percentage").cast("float"))
obesity_classification = profile_data.withColumn("obesity_level", when(col("bmi") < 18.5, "Underweight").when(col("bmi") < 25, "Normal").when(col("bmi") < 30, "Overweight").otherwise("Obese"))
risk_level_distribution = obesity_classification.groupBy("obesity_level").agg(count("*").alias("count"), avg("body_fat_percentage").alias("avg_body_fat"))
metabolic_risk_factors = profile_data.groupBy("metabolic_syndrome").agg(avg("bmi").alias("avg_bmi"), avg("waist_circumference").alias("avg_waist"))
genetic_predisposition = profile_data.groupBy("family_history").agg(avg("bmi").alias("avg_bmi"), count("*").alias("count"))
hormonal_factors = profile_data.groupBy("hormonal_status").agg(avg("bmi").alias("avg_bmi"), avg("insulin_resistance").alias("avg_insulin"))
physical_measurements = profile_data.select("waist_circumference", "hip_circumference", "bmi").withColumn("waist_hip_ratio", col("waist_circumference") / col("hip_circumference"))
body_composition = physical_measurements.withColumn("body_type", when(col("waist_hip_ratio") > 0.9, "Apple").otherwise("Pear"))
body_type_analysis = body_composition.groupBy("body_type").agg(avg("bmi").alias("avg_bmi"), count("*").alias("count"))
comorbidity_analysis = profile_data.groupBy("diabetes_status", "hypertension_status").agg(avg("bmi").alias("avg_bmi"), count("*").alias("count"))
medication_impact = profile_data.groupBy("medication_usage").agg(avg("bmi").alias("avg_bmi"), avg("weight_change").alias("avg_weight_change"))
weight_history = profile_data.groupBy("weight_loss_attempts").agg(avg("current_bmi").alias("avg_current_bmi"), avg("max_weight").alias("avg_max_weight"))
risk_score_calculation = profile_data.withColumn("risk_score", col("bmi") * 0.4 + col("waist_circumference") * 0.3 + col("body_fat_percentage") * 0.3)
high_risk_profiles = risk_score_calculation.filter(col("risk_score") > 80).select("user_id", "risk_score", "obesity_level", "metabolic_syndrome")
age_obesity_progression = profile_data.groupBy("age_group").agg(avg("years_overweight").alias("avg_years"), avg("bmi").alias("avg_bmi"))
intervention_success = profile_data.groupBy("intervention_type").agg(avg("weight_loss_percentage").alias("avg_loss"), count("*").alias("participants"))
result_data = {
'risk_level_distribution': risk_level_distribution.collect(),
'metabolic_risk_factors': metabolic_risk_factors.collect(),
'genetic_predisposition': genetic_predisposition.collect(),
'body_type_analysis': body_type_analysis.collect(),
'comorbidity_analysis': comorbidity_analysis.collect(),
'high_risk_profiles': high_risk_profiles.collect(),
'age_obesity_progression': age_obesity_progression.collect(),
'intervention_success': intervention_success.collect()
}
return JsonResponse(result_data)
六.系统文档展示
结束
💕💕文末获取源码联系 计算机程序员小杨