💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
基于大数据的心理健康综合数据分析系统介绍
心理健康综合数据分析系统是一个基于Python+Django框架开发的大数据分析平台,专门针对心理健康相关数据进行深度挖掘和可视化展示。系统采用Hadoop+Spark大数据处理框架作为核心技术架构,能够高效处理海量心理健康数据,通过Spark SQL进行复杂查询分析,结合Pandas和NumPy进行数据科学计算。前端采用Vue+ElementUI构建用户界面,集成Echarts图表库实现数据可视化,为用户提供直观的大屏展示效果。系统包含用户信息管理、心理健康信息管理、聚类分析管理、核心指标分析管理、生活方式分析管理、工作环境分析管理等八个核心功能模块,通过MySQL数据库存储基础数据,利用HDFS分布式文件系统管理大数据文件,实现了从数据采集、存储、处理到分析展示的完整数据分析流程,为心理健康研究和管理提供了强有力的技术支撑平台。
基于大数据的心理健康综合数据分析系统演示视频
基于大数据的心理健康综合数据分析系统演示图片
基于大数据的心理健康综合数据分析系统代码展示
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, avg, count, when, desc
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.clustering import KMeans
import pandas as pd
import numpy as np
from django.http import JsonResponse
from django.views import View
import json
spark = SparkSession.builder.appName("PsychHealthAnalysis").config("spark.sql.adaptive.enabled", "true").config("spark.sql.adaptive.coalescePartitions.enabled", "true").getOrCreate()
def psychological_health_analysis(request):
try:
health_data = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/psych_health").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "psychological_health").option("user", "root").option("password", "password").load()
health_df = health_data.select("user_id", "anxiety_score", "depression_score", "stress_level", "sleep_quality", "social_support", "life_satisfaction")
avg_scores = health_df.agg(avg("anxiety_score").alias("avg_anxiety"), avg("depression_score").alias("avg_depression"), avg("stress_level").alias("avg_stress"), avg("sleep_quality").alias("avg_sleep"), avg("social_support").alias("avg_support"), avg("life_satisfaction").alias("avg_satisfaction")).collect()[0]
risk_analysis = health_df.withColumn("risk_level", when((col("anxiety_score") > 7) | (col("depression_score") > 7), "high").when((col("anxiety_score") > 4) | (col("depression_score") > 4), "medium").otherwise("low"))
risk_distribution = risk_analysis.groupBy("risk_level").agg(count("user_id").alias("count")).orderBy(desc("count")).collect()
correlation_matrix = health_df.select("anxiety_score", "depression_score", "stress_level", "sleep_quality").toPandas().corr()
health_trends = health_df.filter(col("anxiety_score").isNotNull()).groupBy().agg(avg(when(col("anxiety_score") < 4, 1).otherwise(0)).alias("low_anxiety_rate"), avg(when(col("depression_score") < 4, 1).otherwise(0)).alias("low_depression_rate"), avg(when(col("stress_level") < 5, 1).otherwise(0)).alias("manageable_stress_rate")).collect()[0]
detailed_analysis = health_df.filter((col("anxiety_score") > 6) & (col("depression_score") > 6)).select("user_id", "anxiety_score", "depression_score", "stress_level", "sleep_quality").limit(100).collect()
result_data = {"average_scores": {"anxiety": float(avg_scores["avg_anxiety"]), "depression": float(avg_scores["avg_depression"]), "stress": float(avg_scores["avg_stress"]), "sleep_quality": float(avg_scores["avg_sleep"]), "social_support": float(avg_scores["avg_support"]), "life_satisfaction": float(avg_scores["avg_satisfaction"])}, "risk_distribution": [{"level": row["risk_level"], "count": row["count"]} for row in risk_distribution], "correlation_data": correlation_matrix.to_dict(), "health_trends": {"low_anxiety_rate": float(health_trends["low_anxiety_rate"]), "low_depression_rate": float(health_trends["low_depression_rate"]), "manageable_stress_rate": float(health_trends["manageable_stress_rate"])}, "high_risk_users": [{"user_id": row["user_id"], "anxiety": row["anxiety_score"], "depression": row["depression_score"], "stress": row["stress_level"], "sleep": row["sleep_quality"]} for row in detailed_analysis]}
return JsonResponse({"status": "success", "data": result_data})
except Exception as e:
return JsonResponse({"status": "error", "message": str(e)})
def clustering_analysis_management(request):
try:
user_data = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/psych_health").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "user_psychology_profile").option("user", "root").option("password", "password").load()
feature_df = user_data.select("user_id", "personality_openness", "personality_conscientiousness", "personality_extraversion", "personality_agreeableness", "personality_neuroticism", "coping_style_score", "resilience_level", "emotional_stability")
assembler = VectorAssembler(inputCols=["personality_openness", "personality_conscientiousness", "personality_extraversion", "personality_agreeableness", "personality_neuroticism", "coping_style_score", "resilience_level", "emotional_stability"], outputCol="features")
feature_vector_df = assembler.transform(feature_df)
kmeans = KMeans(k=5, seed=42, maxIter=100, featuresCol="features", predictionCol="cluster")
model = kmeans.fit(feature_vector_df)
clustered_df = model.transform(feature_vector_df)
cluster_centers = model.clusterCenters()
cluster_summary = clustered_df.groupBy("cluster").agg(count("user_id").alias("user_count"), avg("personality_openness").alias("avg_openness"), avg("personality_conscientiousness").alias("avg_conscientiousness"), avg("personality_extraversion").alias("avg_extraversion"), avg("personality_agreeableness").alias("avg_agreeableness"), avg("personality_neuroticism").alias("avg_neuroticism"), avg("coping_style_score").alias("avg_coping"), avg("resilience_level").alias("avg_resilience"), avg("emotional_stability").alias("avg_stability")).orderBy("cluster").collect()
cluster_characteristics = []
for i, row in enumerate(cluster_summary):
characteristics = {"cluster_id": row["cluster"], "user_count": row["user_count"], "dominant_traits": [], "avg_scores": {"openness": float(row["avg_openness"]), "conscientiousness": float(row["avg_conscientiousness"]), "extraversion": float(row["avg_extraversion"]), "agreeableness": float(row["avg_agreeableness"]), "neuroticism": float(row["avg_neuroticism"]), "coping_style": float(row["avg_coping"]), "resilience": float(row["avg_resilience"]), "emotional_stability": float(row["avg_stability"])}}
trait_scores = [row["avg_openness"], row["avg_conscientiousness"], row["avg_extraversion"], row["avg_agreeableness"], row["avg_neuroticism"]]
trait_names = ["openness", "conscientiousness", "extraversion", "agreeableness", "neuroticism"]
max_trait_index = trait_scores.index(max(trait_scores))
characteristics["dominant_traits"].append(trait_names[max_trait_index])
if row["avg_resilience"] > 7.0:
characteristics["dominant_traits"].append("high_resilience")
if row["avg_emotional_stability"] > 7.0:
characteristics["dominant_traits"].append("emotionally_stable")
cluster_characteristics.append(characteristics)
user_cluster_mapping = clustered_df.select("user_id", "cluster").collect()
within_cluster_sum_of_squares = model.summary.trainingCost
cluster_quality_metrics = {"within_ss": within_cluster_sum_of_squares, "num_clusters": 5, "total_users": clustered_df.count()}
return JsonResponse({"status": "success", "cluster_analysis": {"cluster_characteristics": cluster_characteristics, "user_mapping": [{"user_id": row["user_id"], "cluster": row["cluster"]} for row in user_cluster_mapping], "quality_metrics": cluster_quality_metrics, "cluster_centers": [center.tolist() for center in cluster_centers]}})
except Exception as e:
return JsonResponse({"status": "error", "message": str(e)})
def lifestyle_analysis_management(request):
try:
lifestyle_data = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/psych_health").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "lifestyle_factors").option("user", "root").option("password", "password").load()
lifestyle_df = lifestyle_data.select("user_id", "exercise_frequency", "diet_quality", "sleep_hours", "screen_time", "social_activities", "outdoor_time", "meditation_practice", "alcohol_consumption", "smoking_status", "work_life_balance")
exercise_impact = lifestyle_df.groupBy("exercise_frequency").agg(avg("work_life_balance").alias("avg_balance"), count("user_id").alias("user_count")).orderBy(desc("exercise_frequency")).collect()
sleep_analysis = lifestyle_df.select("sleep_hours", "work_life_balance").filter((col("sleep_hours") >= 4) & (col("sleep_hours") <= 12))
sleep_categories = sleep_analysis.withColumn("sleep_category", when(col("sleep_hours") < 6, "insufficient").when(col("sleep_hours") > 9, "excessive").otherwise("adequate"))
sleep_impact = sleep_categories.groupBy("sleep_category").agg(avg("work_life_balance").alias("avg_balance"), count("user_id").alias("count")).collect()
screen_time_correlation = lifestyle_df.select("screen_time", "work_life_balance").filter(col("screen_time") > 0).toPandas()
correlation_coeff = screen_time_correlation.corr().iloc[0, 1]
social_activity_analysis = lifestyle_df.groupBy("social_activities").agg(avg("work_life_balance").alias("avg_balance"), avg("outdoor_time").alias("avg_outdoor"), count("user_id").alias("user_count")).orderBy(desc("social_activities")).collect()
risk_factor_analysis = lifestyle_df.withColumn("risk_score", (when(col("exercise_frequency") < 2, 2).otherwise(0)) + (when(col("sleep_hours") < 6, 3).otherwise(0)) + (when(col("screen_time") > 8, 2).otherwise(0)) + (when(col("alcohol_consumption") > 3, 1).otherwise(0)) + (when(col("smoking_status") == 1, 3).otherwise(0)))
risk_distribution = risk_factor_analysis.groupBy("risk_score").agg(count("user_id").alias("count"), avg("work_life_balance").alias("avg_balance")).orderBy("risk_score").collect()
healthy_lifestyle_users = lifestyle_df.filter((col("exercise_frequency") >= 3) & (col("sleep_hours") >= 7) & (col("sleep_hours") <= 9) & (col("screen_time") <= 6) & (col("social_activities") >= 2)).count()
total_users = lifestyle_df.count()
healthy_lifestyle_percentage = (healthy_lifestyle_users / total_users) * 100
lifestyle_recommendations = []
low_exercise_users = lifestyle_df.filter(col("exercise_frequency") < 2).count()
if low_exercise_users > 0:
lifestyle_recommendations.append({"category": "exercise", "message": f"{low_exercise_users} users need to increase exercise frequency", "priority": "high"})
poor_sleep_users = lifestyle_df.filter((col("sleep_hours") < 6) | (col("sleep_hours") > 9)).count()
if poor_sleep_users > 0:
lifestyle_recommendations.append({"category": "sleep", "message": f"{poor_sleep_users} users have suboptimal sleep patterns", "priority": "high"})
high_screen_users = lifestyle_df.filter(col("screen_time") > 8).count()
if high_screen_users > 0:
lifestyle_recommendations.append({"category": "screen_time", "message": f"{high_screen_users} users have excessive screen time", "priority": "medium"})
result_data = {"exercise_impact": [{"frequency": row["exercise_frequency"], "avg_balance": float(row["avg_balance"]), "user_count": row["user_count"]} for row in exercise_impact], "sleep_impact": [{"category": row["sleep_category"], "avg_balance": float(row["avg_balance"]), "count": row["count"]} for row in sleep_impact], "screen_time_correlation": float(correlation_coeff), "social_activity_analysis": [{"activities": row["social_activities"], "avg_balance": float(row["avg_balance"]), "avg_outdoor": float(row["avg_outdoor"]), "user_count": row["user_count"]} for row in social_activity_analysis], "risk_distribution": [{"risk_score": row["risk_score"], "count": row["count"], "avg_balance": float(row["avg_balance"])} for row in risk_distribution], "healthy_lifestyle_stats": {"percentage": float(healthy_lifestyle_percentage), "count": healthy_lifestyle_users, "total": total_users}, "recommendations": lifestyle_recommendations}
return JsonResponse({"status": "success", "lifestyle_analysis": result_data})
except Exception as e:
return JsonResponse({"status": "error", "message": str(e)})
基于大数据的心理健康综合数据分析系统文档展示
💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目