【数据分析】基于大数据的肥胖风险因素数据分析系统 | 大数据毕设实战项目 选题推荐 可视化大屏 文档指导 运行部署 Hadoop SPark

【投稿赢 iPhone 17】「我的第一个开源项目」故事征集:用代码换C位出道! 10w+人浏览 758人参与

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

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

《基于大数据的肥胖风险因素数据分析系统》是一套面向健康医疗领域的数据智能分析平台,采用Hadoop分布式存储架构配合Spark计算引擎处理海量肥胖相关数据。系统后端基于Django框架构建RESTful API接口,前端运用Vue+ElementUI+Echarts技术栈实现交互界面与数据可视化呈现。核心功能涵盖用户管理、肥胖风险因素数据录入、人口特征分析、饮食习惯分析、生活方式分析以及肥胖画像分析等九大模块。技术实现上,通过HDFS存储原始健康数据,利用Spark SQL进行分布式查询与统计计算,结合Pandas和NumPy完成数据清洗与特征工程,最终借助Echarts图表组件将分析结果以柱状图、饼图、折线图等形式直观展示。系统支持按年龄段、性别、地域等维度交叉分析肥胖人群特征,挖掘饮食结构、运动频率、作息规律等因素与肥胖风险的关联关系,为健康管理提供数据支撑,具备较强的实用价值与技术展示意义。

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

【数据分析】基于大数据的肥胖风险因素数据分析系统 | 大数据毕设实战项目 选题推荐 可视化大屏 文档指导 运行部署 Hadoop SPark

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

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

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


```python
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, count, avg, sum, when, round as spark_round, desc
from django.http import JsonResponse
from django.views import View
import pandas as pd
import numpy as np

spark = SparkSession.builder.appName("ObesityRiskAnalysis").config("spark.sql.warehouse.dir", "/user/hive/warehouse").config("spark.executor.memory", "2g").config("spark.driver.memory", "1g").enableHiveSupport().getOrCreate()

class PopulationCharacteristicsAnalysis(View):
    def post(self, request):
        obesity_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/obesity_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "obesity_risk_data").option("user", "root").option("password", "123456").load()
        obesity_df.createOrReplaceTempView("obesity_data")
        age_group_df = spark.sql("SELECT CASE WHEN age < 18 THEN '未成年' WHEN age >= 18 AND age < 30 THEN '青年' WHEN age >= 30 AND age < 50 THEN '中年' ELSE '老年' END AS age_group, gender, COUNT(*) AS total_count, AVG(bmi) AS avg_bmi, SUM(CASE WHEN obesity_level = '肥胖' THEN 1 ELSE 0 END) AS obese_count FROM obesity_data GROUP BY age_group, gender ORDER BY age_group, gender")
        age_group_pandas = age_group_df.toPandas()
        age_group_pandas['obesity_rate'] = (age_group_pandas['obese_count'] / age_group_pandas['total_count'] * 100).round(2)
        region_analysis_df = spark.sql("SELECT region, COUNT(*) AS population, AVG(bmi) AS avg_bmi, AVG(weight) AS avg_weight, AVG(height) AS avg_height FROM obesity_data GROUP BY region ORDER BY avg_bmi DESC")
        region_pandas = region_analysis_df.toPandas()
        region_pandas['risk_level'] = region_pandas['avg_bmi'].apply(lambda x: '高风险' if x >= 28 else ('中风险' if x >= 24 else '低风险'))
        gender_distribution = spark.sql("SELECT gender, COUNT(*) AS count, AVG(bmi) AS avg_bmi FROM obesity_data GROUP BY gender")
        gender_pandas = gender_distribution.toPandas()
        total_population = gender_pandas['count'].sum()
        gender_pandas['percentage'] = (gender_pandas['count'] / total_population * 100).round(2)
        education_impact = spark.sql("SELECT education_level, AVG(bmi) AS avg_bmi, COUNT(*) AS count FROM obesity_data GROUP BY education_level ORDER BY avg_bmi DESC")
        education_pandas = education_impact.toPandas()
        correlation_matrix = obesity_df.select('age', 'bmi', 'weight', 'height').toPandas()
        corr_result = correlation_matrix.corr()
        result_data = {'age_gender_analysis': age_group_pandas.to_dict('records'),'region_risk_distribution': region_pandas.to_dict('records'),'gender_proportion': gender_pandas.to_dict('records'),'education_influence': education_pandas.to_dict('records'),'correlation_coefficients': corr_result.to_dict()}
        return JsonResponse({'code': 200, 'message': '人口特征分析完成', 'data': result_data})

class DietaryHabitsAnalysis(View):
    def post(self, request):
        dietary_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/obesity_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "obesity_risk_data").option("user", "root").option("password", "123456").load()
        dietary_df.createOrReplaceTempView("dietary_table")
        meal_frequency_analysis = spark.sql("SELECT meal_frequency, COUNT(*) AS people_count, AVG(bmi) AS avg_bmi, AVG(calorie_intake) AS avg_calories FROM dietary_table GROUP BY meal_frequency ORDER BY avg_bmi DESC")
        meal_freq_pandas = meal_frequency_analysis.toPandas()
        meal_freq_pandas['obesity_ratio'] = meal_freq_pandas.apply(lambda row: (spark.sql(f"SELECT COUNT(*) AS obese FROM dietary_table WHERE meal_frequency = '{row['meal_frequency']}' AND obesity_level = '肥胖'").toPandas()['obese'][0] / row['people_count'] * 100).round(2) if row['people_count'] > 0 else 0, axis=1)
        vegetable_fruit_impact = spark.sql("SELECT vegetable_intake_level, fruit_intake_level, COUNT(*) AS count, AVG(bmi) AS avg_bmi FROM dietary_table GROUP BY vegetable_intake_level, fruit_intake_level ORDER BY avg_bmi DESC")
        veg_fruit_pandas = vegetable_fruit_impact.toPandas()
        fast_food_analysis = spark.sql("SELECT fast_food_frequency, COUNT(*) AS total, AVG(bmi) AS avg_bmi, AVG(cholesterol) AS avg_cholesterol FROM dietary_table GROUP BY fast_food_frequency ORDER BY avg_bmi DESC")
        fast_food_pandas = fast_food_analysis.toPandas()
        fast_food_pandas['health_score'] = fast_food_pandas.apply(lambda x: 100 - (x['avg_bmi'] - 18.5) * 2 - (x['avg_cholesterol'] - 150) * 0.1, axis=1).round(2)
        water_intake_effect = spark.sql("SELECT daily_water_intake, AVG(bmi) AS avg_bmi, AVG(metabolism_rate) AS avg_metabolism FROM dietary_table GROUP BY daily_water_intake ORDER BY daily_water_intake")
        water_pandas = water_intake_effect.toPandas()
        high_calorie_food_df = spark.sql("SELECT high_calorie_food_consumption, COUNT(*) AS consumer_count, AVG(weight) AS avg_weight FROM dietary_table GROUP BY high_calorie_food_consumption ORDER BY avg_weight DESC")
        high_calorie_pandas = high_calorie_food_df.toPandas()
        dietary_pattern_cluster = dietary_df.select('meal_frequency', 'vegetable_intake_level', 'fruit_intake_level', 'fast_food_frequency', 'bmi').toPandas()
        dietary_pattern_cluster['dietary_score'] = (dietary_pattern_cluster['vegetable_intake_level'].map({'低': 1, '中': 2, '高': 3}) + dietary_pattern_cluster['fruit_intake_level'].map({'低': 1, '中': 2, '高': 3}) - dietary_pattern_cluster['fast_food_frequency'].map({'很少': 3, '偶尔': 2, '经常': 1, '频繁': 0}))
        pattern_bmi_corr = np.corrcoef(dietary_pattern_cluster['dietary_score'].fillna(0), dietary_pattern_cluster['bmi'])[0, 1]
        response_data = {'meal_frequency_statistics': meal_freq_pandas.to_dict('records'),'vegetable_fruit_impact': veg_fruit_pandas.to_dict('records'),'fast_food_analysis': fast_food_pandas.to_dict('records'),'water_intake_effect': water_pandas.to_dict('records'),'high_calorie_consumption': high_calorie_pandas.to_dict('records'),'dietary_pattern_correlation': round(pattern_bmi_corr, 4)}
        return JsonResponse({'code': 200, 'message': '饮食习惯分析成功', 'data': response_data})

class LifestyleAnalysis(View):
    def post(self, request):
        lifestyle_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/obesity_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "obesity_risk_data").option("user", "root").option("password", "123456").load()
        lifestyle_df.createOrReplaceTempView("lifestyle_data")
        exercise_frequency_impact = spark.sql("SELECT exercise_frequency, COUNT(*) AS participant_count, AVG(bmi) AS avg_bmi, AVG(body_fat_percentage) AS avg_body_fat FROM lifestyle_data GROUP BY exercise_frequency ORDER BY avg_bmi")
        exercise_pandas = exercise_frequency_impact.toPandas()
        exercise_pandas['fitness_index'] = ((30 - exercise_pandas['avg_bmi']) * 2 + (40 - exercise_pandas['avg_body_fat']) * 1.5).round(2)
        sleep_duration_analysis = spark.sql("SELECT sleep_hours, COUNT(*) AS people_num, AVG(bmi) AS avg_bmi, AVG(stress_level) AS avg_stress FROM lifestyle_data GROUP BY sleep_hours ORDER BY sleep_hours")
        sleep_pandas = sleep_duration_analysis.toPandas()
        sleep_pandas['sleep_quality_score'] = sleep_pandas.apply(lambda x: 100 if 7 <= x['sleep_hours'] <= 9 else (80 if 6 <= x['sleep_hours'] < 7 or 9 < x['sleep_hours'] <= 10 else 60), axis=1)
        sedentary_time_effect = spark.sql("SELECT sedentary_hours, COUNT(*) AS count, AVG(bmi) AS avg_bmi, AVG(waist_circumference) AS avg_waist FROM lifestyle_data GROUP BY sedentary_hours ORDER BY sedentary_hours DESC")
        sedentary_pandas = sedentary_time_effect.toPandas()
        sedentary_pandas['health_risk_level'] = sedentary_pandas['sedentary_hours'].apply(lambda x: '高风险' if x >= 10 else ('中风险' if x >= 6 else '低风险'))
        smoking_drinking_impact = spark.sql("SELECT smoking_status, drinking_status, COUNT(*) AS total_people, AVG(bmi) AS avg_bmi FROM lifestyle_data GROUP BY smoking_status, drinking_status ORDER BY avg_bmi DESC")
        smoking_drinking_pandas = smoking_drinking_impact.toPandas()
        stress_level_correlation = spark.sql("SELECT stress_level, AVG(bmi) AS avg_bmi, AVG(emotional_eating_score) AS avg_emotional_eating FROM lifestyle_data GROUP BY stress_level ORDER BY stress_level")
        stress_pandas = stress_level_correlation.toPandas()
        comprehensive_lifestyle_df = lifestyle_df.select('exercise_frequency', 'sleep_hours', 'sedentary_hours', 'smoking_status', 'drinking_status', 'bmi').toPandas()
        comprehensive_lifestyle_df['exercise_score'] = comprehensive_lifestyle_df['exercise_frequency'].map({'从不': 0, '很少': 1, '偶尔': 2, '经常': 3, '每天': 4})
        comprehensive_lifestyle_df['sleep_score'] = comprehensive_lifestyle_df['sleep_hours'].apply(lambda x: 4 if 7 <= x <= 9 else (3 if 6 <= x < 7 or 9 < x <= 10 else 2))
        comprehensive_lifestyle_df['sedentary_score'] = comprehensive_lifestyle_df['sedentary_hours'].apply(lambda x: 0 if x >= 10 else (2 if x >= 6 else 4))
        comprehensive_lifestyle_df['lifestyle_total_score'] = comprehensive_lifestyle_df['exercise_score'] + comprehensive_lifestyle_df['sleep_score'] + comprehensive_lifestyle_df['sedentary_score']
        lifestyle_bmi_corr = np.corrcoef(comprehensive_lifestyle_df['lifestyle_total_score'].fillna(0), comprehensive_lifestyle_df['bmi'])[0, 1]
        final_result = {'exercise_frequency_data': exercise_pandas.to_dict('records'),'sleep_duration_statistics': sleep_pandas.to_dict('records'),'sedentary_time_analysis': sedentary_pandas.to_dict('records'),'smoking_drinking_impact': smoking_drinking_pandas.to_dict('records'),'stress_level_data': stress_pandas.to_dict('records'),'lifestyle_bmi_correlation': round(lifestyle_bmi_corr, 4)}
        return JsonResponse({'code': 200, 'message': '生活方式分析完成', 'data': final_result})

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

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值