大数据毕业设计怎么做?Hadoop+Spark的内向外向型性格行为数据分析与可视化系统,保姆级教程解析

0 阅读6分钟

内向外向型性格行为数据分析与可视化系统-简介

本系统基于Python语言开发,后端采用轻量级的Django框架构建RESTful接口,前端整合Vue.js与ElementUI实现响应式交互界面,并利用Echarts组件完成数据的动态可视化展示。在数据处理核心层,系统引入Hadoop与Spark大数据生态,通过HDFS分布式文件系统存储海量性格行为日志,利用Spark SQL与PySpark进行分布式计算处理。功能模块紧密围绕内向外向型性格行为特征展开,涵盖了性格类型行为特征对比分析,量化统计独处时间、社交活动参与度及朋友圈规模的均值与分布差异;社交行为模式深度分析,探索外出频率与社交活动的关联性,并构建综合社交指数评估体系;数字化社交行为分析,对比线上发帖频率与线下社交的差异;以及基于K-means算法的人群聚类分析,自动识别典型行为群体。系统最终通过可视化大屏直观展示性格画像、社交疲惫度分布及行为特征相关性网络,为理解不同性格人群的社交模式提供了全流程的数据分析平台。

内向外向型性格行为数据分析与可视化系统-技术

开发语言:Python或Java 大数据框架:Hadoop+Spark(本次没用Hive,支持定制) 后端框架:Django+Spring Boot(Spring+SpringMVC+Mybatis) 前端:Vue+ElementUI+Echarts+HTML+CSS+JavaScript+jQuery 详细技术点:Hadoop、HDFS、Spark、Spark SQL、Pandas、NumPy 数据库:MySQL

内向外向型性格行为数据分析与可视化系统-背景

选题背景 如今大家对性格话题越来越关注,像MBTI这种测试在社交圈特别火,很多人都在讨论自己是“i人”还是“e人”。但在现实生活中,我们对不同性格人群具体行为模式的了解,大多还停留在感觉和经验上,缺乏实实在在的数据支撑。特别是面对现代生活节奏快、社交压力大这种情况,不同性格的人在独处、社交频率以及网络发言上的真实表现到底有何不同,其实挺值得琢磨的。以前想研究这些,要么样本太少,要么处理能力有限,很难得出客观结论。现在大数据技术普及了,咱们正好可以利用Hadoop和Spark这些技术手段,去收集和分析性格相关的行为数据,看看能不能从数据里找出点规律,这也正是做这个系统的初衷,希望能给这类研究提供一些基础的数据参考。 选题意义 做这个系统的意义,其实主要就是想看看数据能告诉我们什么。对于个人来说,通过分析结果能更客观地认识自己的社交习惯,比如是不是社交过度消耗了精力,这对自己调整生活状态挺有帮助的。从应用角度看,系统能把内向和外向人群的行为特征量化出来,给心理学研究或者社交类产品开发提供一点参考数据,哪怕只是一小部分参考也是好的。另外,在技术上试着把Hadoop和Spark用到性格分析里,也算是一次将大数据技术落地到具体生活场景的小尝试。虽然只是个毕业设计,能力有限,但也希望能通过这个系统,让大家看到数据分析在理解人类行为方面的潜力,为以后更深入的研究打个底,这本身就是一件挺有意思的事儿。

内向外向型性格行为数据分析与可视化系统-视频展示

[video(video-48Ufz9Dh-1778144019728)(type-csdn)(url-live.csdn.net/v/embed/525…)]

内向外向型性格行为数据分析与可视化系统-图片展示

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

内向外向型性格行为数据分析与可视化系统-代码展示

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, mean, stddev, count, when
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.clustering import KMeans
spark = SparkSession.builder.appName("PersonalityAnalysis").config("spark.driver.memory", "2g").getOrCreate()
# 功能一:性格类型行为特征统计对比分析
def personality_behavior_stats_analysis(df):
    # 过滤掉性格字段为空的记录,保证分析准确性
    valid_df = df.na.drop(subset=["Personality"])
    # 按性格类型分组,计算独处时间、社交频率、朋友圈大小的均值和标准差
    stats_result = valid_df.groupBy("Personality").agg(
        mean("Time_spent_Alone").alias("avg_alone_time"),
        stddev("Time_spent_Alone").alias("std_alone_time"),
        mean("Social_event_attendance").alias("avg_social_attendance"),
        mean("Friends_circle_size").alias("avg_friends_size"),
        count("Personality").alias("sample_count")
    )
    # 将结果转换为Pandas DataFrame方便后续接口调用
    pandas_result = stats_result.toPandas()
    # 进一步计算内向与外向在社交参与度上的差异值
    introvert_stats = pandas_result[pandas_result["Personality"] == "Introvert"]
    extrovert_stats = pandas_result[pandas_result["Personality"] == "Extrovert"]
    diff_dict = {
        "social_diff": float(extrovert_stats["avg_social_attendance"] - introvert_stats["avg_social_attendance"]),
        "alone_diff": float(introvert_stats["avg_alone_time"] - extrovert_stats["avg_alone_time"])
    }
    # 组合基础统计与差异分析结果返回
    final_result = {"stats": pandas_result.to_dict(orient="records"), "difference": diff_dict}
    return final_result
# 功能二:社交疲惫感与性格类型关联分析
def social_drained_correlation_analysis(df):
    # 筛选需要分析的字段,去除空值干扰
    target_cols = ["Personality", "Drained_after_socializing"]
    clean_df = df.select(target_cols).na.drop()
    # 使用交叉统计计算不同性格在社交后疲惫感的人数分布
    cross_tab = clean_df.crosstab("Personality", "Drained_after_socializing")
    cross_pandas = cross_tab.toPandas()
    # 计算内向人群中感到疲惫的比例(假设字段值为Yes/No)
    introvert_total = clean_df.filter(col("Personality") == "Introvert").count()
    introvert_drained = clean_df.filter((col("Personality") == "Introvert") & (col("Drained_after_socializing") == "Yes")).count()
    drained_ratio = introvert_drained / introvert_total if introvert_total > 0 else 0
    # 构建前端饼图所需的数据结构
    pie_data = [
        {"name": "内向且疲惫", "value": introvert_drained},
        {"name": "内向不疲惫", "value": introvert_total - introvert_drained}
    ]
    # 返回比例数据与交叉表详情
    return {"drained_ratio": round(drained_ratio, 4), "pie_chart_data": pie_data, "cross_analysis": cross_pandas.to_dict(orient="list")}
# 功能三:基于K-means的行为模式聚类分析
def behavior_clustering_analysis(df):
    # 选取用于聚类的关键行为特征字段
    feature_cols = ["Time_spent_Alone", "Social_event_attendance", "Going_outside", "Friends_circle_size"]
    # 数据清洗,剔除含有缺失值的行
    clean_data = df.select(feature_cols).na.drop()
    # 将多列特征向量合并为一列特征向量
    assembler = VectorAssembler(inputCols=feature_cols, outputCol="features")
    feature_data = assembler.transform(clean_data)
    # 初始化K-means算法,设定聚类中心数量为3类
    kmeans = KMeans(featuresCol="features", predictionCol="cluster_label", k=3, seed=42)
    model = kmeans.fit(feature_data)
    # 对数据进行聚类预测
    predictions = model.transform(feature_data)
    # 统计各个聚类群体的数量分布
    cluster_counts = predictions.groupBy("cluster_label").count().toPandas()
    # 获取聚类中心点坐标,用于解释群体特征
    centers = model.clusterCenters()
    center_list = [center.tolist() for center in centers]
    # 返回聚类结果与中心点数据
    return {"cluster_distribution": cluster_counts.to_dict(orient="records"), "cluster_centers": center_list}

内向外向型性格行为数据分析与可视化系统-结语

通过本系统的开发,不仅实现了对性格行为数据的有效挖掘与展示,也验证了大数据技术在心理行为分析领域的应用价值。虽然在数据量覆盖和算法深度上还有提升空间,但希望能为相关研究提供一个实用的参考工具,帮助大家更好地认识自我。 感谢大家的关注!如果这个项目对你有帮助,别忘了去主页联系UP主获取更多资料哦。创作不易,点个赞和关注就是最大的支持,咱们评论区见,有问题随时交流,一起学习进步!