💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
基于大数据的健康与生活方式数据分析系统介绍
《健康与生活方式数据分析系统》面向大四计算机专业毕设场景,围绕“大数据采集—清洗—分析—可视化”完整链路展开,实现对印度居民健康与生活方式数据的统计建模与洞察。系统以Hadoop+Spark 为核心计算引擎,数据存储在 HDFS 与 MySQL 中,通过 Spark SQL、Pandas、NumPy 进行批处理与特征构建,强调不使用 Hive 的轻量实现路径;后端选择 Python+Django 提供 REST 接口与任务编排,前端基于 Vue+ElementUI+Echarts 呈现交互视图。功能包含系统首页、用户管理、印度健康与生活方式管理、年龄演变趋势分析、居民基础画像分析、健康生活方式分析、压力风险行为分析、城乡差异对比分析与系统公告管理:既能面向年龄段与城乡维度进行对比,又能输出基础画像与生活方式指标的聚合报表,并支持按时间窗口回看趋势。项目结构清晰、依赖适中,便于同学们在有限周期内完成从数据接入到可视化落地的端到端实现。
基于大数据的健康与生活方式数据分析系统演示视频
基于大数据的健康与生活方式数据分析系统演示图片
基于大数据的健康与生活方式数据分析系统代码展示
from pyspark.sql import SparkSession,functions as F,types as T
spark=SparkSession.builder.appName("HealthLifestyleSystem").config("spark.sql.shuffle.partitions","200").getOrCreate()
jdbc_url="jdbc:mysql://localhost:3306/healthdb?useSSL=false&characterEncoding=utf8"
jdbc_props={"user":"root","password":"root","driver":"com.mysql.cj.jdbc.Driver"}
def age_trend_analysis(start_year:int,end_year:int):
user_df=spark.read.jdbc(jdbc_url,"user_profile",properties=jdbc_props)
rec_df=spark.read.jdbc(jdbc_url,"lifestyle_records",properties=jdbc_props)
joined=rec_df.join(user_df,rec_df.user_id==user_df.user_id,"inner")
with_year=joined.withColumn("year",F.year("record_date"))
filtered=with_year.filter((F.col("year")>=start_year)&(F.col("year")<=end_year))
age_col=F.col("year")-F.col("birth_year")
bucket=filtered.withColumn("age_bucket",F.when((age_col>=18)&(age_col<=25),"18-25").when((age_col>=26)&(age_col<=35),"26-35").when((age_col>=36)&(age_col<=45),"36-45").when((age_col>=46)&(age_col<=60),"46-60").otherwise("60+"))
grouped=bucket.groupBy("year","age_bucket").agg(F.countDistinct("user_id").alias("cnt"))
total_per_year=grouped.groupBy("year").agg(F.sum("cnt").alias("year_total"))
merged=grouped.join(total_per_year,"year","left")
ratio=merged.withColumn("ratio",F.round(F.col("cnt")/F.col("year_total"),4))
ordered=ratio.select("year","age_bucket","cnt","ratio").orderBy("year","age_bucket")
ordered.write.mode("overwrite").jdbc(jdbc_url,"analysis_age_trend",properties=jdbc_props)
return ordered
def lifestyle_analysis():
rec_df=spark.read.jdbc(jdbc_url,"lifestyle_records",properties=jdbc_props)
user_df=spark.read.jdbc(jdbc_url,"user_profile",properties=jdbc_props)
df=rec_df.join(user_df,"user_id","left")
norm_steps=F.when(F.col("steps")>=8000,1.0).when(F.col("steps")>=6000,0.8).when(F.col("steps")>=4000,0.6).otherwise(0.3)
norm_sleep=F.when((F.col("sleep_hours")>=7)&(F.col("sleep_hours")<=9),1.0).when((F.col("sleep_hours")>=6)&(F.col("sleep_hours")<=10),0.8).otherwise(0.4)
norm_diet=F.when(F.col("diet_score")>=80,1.0).when(F.col("diet_score")>=60,0.8).otherwise(0.5)
penalty_bmi=F.when((F.col("bmi")>=18.5)&(F.col("bmi")<=24.9),0.0).otherwise(0.2)
penalty_smoke=F.when(F.col("smoke")==1,0.2).otherwise(0.0)
penalty_drink=F.when(F.col("drink")==1,0.1).otherwise(0.0)
score=df.withColumn("lifestyle_score",F.round(norm_steps*0.35+norm_sleep*0.35+norm_diet*0.3-penalty_bmi-penalty_smoke-penalty_drink,4))
by_age=score.withColumn("year",F.year("record_date")).withColumn("age",F.col("year")-F.col("birth_year"))
bucketed=by_age.withColumn("age_bucket",F.when((F.col("age")>=18)&(F.col("age")<=25),"18-25").when((F.col("age")>=26)&(F.col("age")<=35),"26-35").when((F.col("age")>=36)&(F.col("age")<=45),"36-45").when((F.col("age")>=46)&(F.col("age")<=60),"46-60").otherwise("60+"))
agg=bucketed.groupBy("age_bucket","city_type").agg(F.round(F.avg("lifestyle_score"),4).alias("avg_score"),F.expr("percentile_approx(lifestyle_score,0.5)").alias("median_score"),F.countDistinct("user_id").alias("users"))
graded=bucketed.withColumn("grade",F.when(F.col("lifestyle_score")>=0.9,"A").when(F.col("lifestyle_score")>=0.75,"B").when(F.col("lifestyle_score")>=0.6,"C").otherwise("D"))
dist=graded.groupBy("city_type","grade").agg(F.count("*").alias("cnt"))
total=dist.groupBy("city_type").agg(F.sum("cnt").alias("total"))
ratio=dist.join(total,"city_type").withColumn("ratio",F.round(F.col("cnt")/F.col("total"),4))
out=agg.orderBy("age_bucket","city_type")
out.write.mode("overwrite").jdbc(jdbc_url,"analysis_lifestyle_bucket",properties=jdbc_props)
ratio.write.mode("overwrite").jdbc(jdbc_url,"analysis_lifestyle_grade_dist",properties=jdbc_props)
return out
def urban_rural_compare():
rec_df=spark.read.jdbc(jdbc_url,"lifestyle_records",properties=jdbc_props)
user_df=spark.read.jdbc(jdbc_url,"user_profile",properties=jdbc_props)
df=rec_df.join(user_df,"user_id","inner")
with_year=df.withColumn("year",F.year("record_date"))
ks=with_year.select("city_type","year","bmi","steps","sleep_hours","stress_score","diet_score")
agg=ks.groupBy("city_type","year").agg(F.round(F.avg("bmi"),2).alias("avg_bmi"),F.round(F.avg("steps"),0).alias("avg_steps"),F.round(F.avg("sleep_hours"),2).alias("avg_sleep"),F.round(F.avg("stress_score"),2).alias("avg_stress"),F.round(F.avg("diet_score"),2).alias("avg_diet"))
pivoted=agg.groupBy("year").pivot("city_type",["urban","rural"]).agg(F.first("avg_bmi"),F.first("avg_steps"),F.first("avg_sleep"),F.first("avg_stress"),F.first("avg_diet"))
diff=pivoted.withColumn("bmi_gap",F.round(F.col("urban_first(avg_bmi)")-F.col("rural_first(avg_bmi)"),2)).withColumn("steps_gap",F.col("urban_first(avg_steps)")-F.col("rural_first(avg_steps)")).withColumn("sleep_gap",F.round(F.col("urban_first(avg_sleep)")-F.col("rural_first(avg_sleep)"),2)).withColumn("stress_gap",F.round(F.col("urban_first(avg_stress)")-F.col("rural_first(avg_stress)"),2)).withColumn("diet_gap",F.round(F.col("urban_first(avg_diet)")-F.col("rural_first(avg_diet)"),2))
score=agg.withColumn("health_index",F.round((1.2/(F.col("avg_bmi")+0.1))+F.col("avg_steps")/10000+F.col("avg_sleep")/8-F.col("avg_stress")/10+F.col("avg_diet")/100,3))
rank=score.orderBy(F.col("health_index").desc())
agg.write.mode("overwrite").jdbc(jdbc_url,"analysis_citytype_year_metrics",properties=jdbc_props)
diff.write.mode("overwrite").jdbc(jdbc_url,"analysis_urban_rural_gap",properties=jdbc_props)
rank.write.mode("overwrite").jdbc(jdbc_url,"analysis_citytype_rank",properties=jdbc_props)
return diff
基于大数据的健康与生活方式数据分析系统文档展示
💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目