💖💖作者:计算机编程小央姐 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜
💕💕文末获取源码
@TOC
【Hive+Hadoop+python毕设】基于大数据的丙型肝炎患者数据可视化分析系统-系统功能介绍
基于大数据的丙型肝炎患者数据可视化分析系统以 Hive+Hadoop+Python 为核心技术架构,聚焦丙型肝炎患者数据的深度挖掘与可视化呈现。系统整合患者基础信息、多维度生化指标等核心数据,通过 Hadoop 的 HDFS 组件实现海量医疗数据的可靠存储,借助 Hive 完成数据的高效管理与预处理,再结合 Python 的 Pandas、NumPy 库及 Spark SQL 进行数据清洗、统计分析与特征提取。功能层面覆盖患者基础特征分析、生化指标关联性挖掘、疾病进展规律探究、临床应用价值评估等核心模块,通过 Echarts 可视化组件将分析结果以柱状图、折线图、热力图等直观形式呈现,能够清晰展现不同年龄段、性别患者的疾病分布特征,揭示生化指标与疾病严重程度的内在关联,为丙型肝炎的临床诊断、风险评估提供数据支撑,同时为计算机专业毕业设计提供了大数据技术在医疗领域应用的完整实践案例。
【Hive+Hadoop+python毕设】基于大数据的丙型肝炎患者数据可视化分析系统-系统技术介绍
大数据框架: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
【Hive+Hadoop+python毕设】基于大数据的丙型肝炎患者数据可视化分析系统-系统背景意义
丙型肝炎作为一种具有隐匿性的传染病,其病情进展缓慢且早期症状不明显,容易被忽视,进而可能发展为纤维化、肝硬化等严重阶段,给患者健康带来潜在威胁。当前医疗领域中,针对丙型肝炎患者的数据多分散存储,缺乏系统的整合分析手段,传统的数据分析方式效率较低,难以从海量数据中快速挖掘出有价值的疾病规律。随着大数据技术的快速发展,Hadoop、Spark 等框架在数据处理方面的优势日益凸显,为医疗数据的深度分析提供了技术可能。将大数据技术与丙型肝炎患者数据结合,搭建专门的可视化分析系统,能够有效解决传统分析方式的局限性,实现对患者数据的多维度、高效化分析,这一应用场景既贴合实际医疗需求,也符合计算机技术与行业融合的发展趋势,因此成为计算机专业毕业设计的合理选题方向。从实际应用角度来看,这款系统能够为医疗相关人员提供直观的患者数据参考,帮助其快速掌握丙型肝炎患者的群体特征、疾病进展规律及生化指标变化趋势,为疾病的早期筛查、风险分层提供简单的辅助支持,具有一定的实际应用价值。从技术实践层面而言,系统整合了 Hadoop、Hive、Python、Spark 等主流大数据技术,完整实现了数据存储、预处理、分析、可视化的全流程,对于计算机专业学生来说,是锻炼大数据技术综合应用能力的有效载体,能够帮助学生将课堂所学知识转化为实际项目开发能力。此外,系统搭建的大数据技术与医疗数据结合的应用模式,也为同类疾病的数据化分析提供了简单的参考思路,虽然作为毕业设计其功能和性能还有提升空间,但在技术应用和实际需求结合方面具有一定的实践意义。
【Hive+Hadoop+python毕设】基于大数据的丙型肝炎患者数据可视化分析系统-系统演示视频
【Hive+Hadoop+python毕设】基于大数据的丙型肝炎患者数据可视化分析系统-系统演示图片
【Hive+Hadoop+python毕设】基于大数据的丙型肝炎患者数据可视化分析系统-系统部分代码
from pyspark.sql import SparkSession from pyspark.sql.functions import col, avg, stddev, count, when, corr, percentile_approx import pandas as pd import numpy as np # 初始化SparkSession spark = SparkSession.builder.appName("HepatitisCDataAnalysis").master("local[*]").config("spark.sql.adaptive.enabled", "true").getOrCreate() # 核心功能1:患者基础特征综合分析(含诊断类别、年龄、性别分布及关联分析) def analyze_patient_basic_features(data_path): # 读取Hive表数据 df = spark.sql("SELECT Age, Sex, Category FROM hepatitis_c_patient_data") # 诊断类别分布统计 category_dist = df.groupBy("Category").agg(count("*").alias("patient_count")).withColumn("percentage", col("patient_count") / df.count() * 100) # 年龄分段处理 age_segment_df = df.withColumn("age_segment", when(col("Age") <= 35, "青年").when((col("Age") > 35) & (col("Age") <= 55), "中年").otherwise("老年")) age_dist = age_segment_df.groupBy("age_segment").agg(count("*").alias("patient_count")) # 性别与诊断类别关联分析 gender_category_dist = age_segment_df.groupBy("Sex", "Category").agg(count("*").alias("patient_count")) # 年龄分段与疾病严重程度关联分析 age_disease_dist = age_segment_df.groupBy("age_segment", "Category").agg(count("*").alias("patient_count")).orderBy("age_segment", "Category") # 整合所有基础特征结果并转换为Pandas DataFrame用于可视化 category_dist_pd = category_dist.toPandas() age_dist_pd = age_dist.toPandas() gender_category_dist_pd = gender_category_dist.toPandas() age_disease_dist_pd = age_disease_dist.toPandas() # 计算基础统计信息汇总 basic_stats = { "total_patients": df.count(), "male_count": df.filter(col("Sex") == "M").count(), "female_count": df.filter(col("Sex") == "F").count(), "avg_age": df.agg(avg("Age")).first()[0], "youngest_age": df.agg(col("Age").min()).first()[0], "oldest_age": df.agg(col("Age").max()).first()[0], "hepatitis_count": df.filter(col("Category") == "Hepatitis").count(), "cirrhosis_count": df.filter(col("Category") == "Cirrhosis").count() } return category_dist_pd, age_dist_pd, gender_category_dist_pd, age_disease_dist_pd, basic_stats # 核心功能2:生化指标特征分析(含基础统计、异常值检测、疾病类别对比) def analyze_biochemical_indices(data_path): # 读取Hive表中生化指标数据 df = spark.sql("SELECT Category, ALB, ALP, ALT, AST, BIL, CHE, CHOL, CREA, GGT, PROT FROM hepatitis_c_patient_data") # 生化指标基础统计(均值、最大值、最小值、标准差) indices = ["ALB", "ALP", "ALT", "AST", "BIL", "CHE", "CHOL", "CREA", "GGT", "PROT"] basic_stats = df.agg(*[avg(col(idx)).alias(f"{idx}_avg") for idx in indices], *[col(idx).max().alias(f"{idx}_max") for idx in indices], *[col(idx).min().alias(f"{idx}_min") for idx in indices], *[stddev(col(idx)).alias(f"{idx}_std") for idx in indices]).first() # 各疾病类别生化指标均值对比 category_index_avg = df.groupBy("Category").agg(*[avg(col(idx)).alias(f"{idx}_avg") for idx in indices]) category_index_avg_pd = category_index_avg.toPandas() # 异常值检测(四分位数法) outlier_results = {} for idx in indices: # 计算四分位数 q1 = df.agg(percentile_approx(col(idx), 0.25)).first()[0] q3 = df.agg(percentile_approx(col(idx), 0.75)).first()[0] iqr = q3 - q1 lower_bound = q1 - 1.5 * iqr upper_bound = q3 + 1.5 * iqr # 筛选异常值数据 outlier_df = df.filter((col(idx) < lower_bound) | (col(idx) > upper_bound)) # 统计各疾病类别异常值分布 outlier_category_dist = outlier_df.groupBy("Category").agg(count("*").alias(f"{idx}_outlier_count")) outlier_results[idx] = { "lower_bound": lower_bound, "upper_bound": upper_bound, "total_outliers": outlier_df.count(), "category_distribution": outlier_category_dist.toPandas() } # 生化指标正常/异常分布统计(基于临床参考范围) normal_ranges = { "ALB": (35, 52), "ALP": (44, 147), "ALT": (7, 56), "AST": (5, 40), "BIL": (3.4, 17.1), "CHE": (5300, 12900), "CHOL": (3.1, 5.7), "CREA": (62, 115), "GGT": (10, 60), "PROT": (65, 85) } normal_abnormal_dist = {} for idx in indices: normal_count = df.filter((col(idx) >= normal_ranges[idx][0]) & (col(idx) <= normal_ranges[idx][1])).count() abnormal_count = df.count() - normal_count normal_abnormal_dist[idx] = { "normal_count": normal_count, "abnormal_count": abnormal_count, "normal_percentage": normal_count / df.count() * 100, "abnormal_percentage": abnormal_count / df.count() * 100 } return basic_stats, category_index_avg_pd, outlier_results, normal_abnormal_dist # 核心功能3:疾病进展规律与生化指标关联性分析 def analyze_disease_progress_and_correlation(data_path): # 读取Hive表完整数据 df = spark.sql("SELECT Age, Sex, Category, ALB, ALP, ALT, AST, BIL, CHE, CHOL, CREA, GGT, PROT FROM hepatitis_c_patient_data") # 疾病严重程度排序(献血者→可疑献血者→肝炎→纤维化→肝硬化) disease_order = ["Blood Donor", "Suspect Blood Donor", "Hepatitis", "Fibrosis", "Cirrhosis"] df = df.withColumn("disease_severity", col("Category").cast("string")) # 各疾病阶段患者分布统计 disease_progress_dist = df.groupBy("Category").agg(count("*").alias("patient_count")).orderBy( col("Category").isin(disease_order).asc() ) # 不同年龄段疾病进展模式分析 age_segment_df = df.withColumn("age_segment", when(col("Age") <= 35, "青年").when((col("Age") > 35) & (col("Age") <= 55), "中年").otherwise("老年")) age_disease_progress = age_segment_df.groupBy("age_segment", "Category").agg(count("*").alias("patient_count")).orderBy("age_segment", [col("Category").isin([disease_order[i]]) for i in range(len(disease_order))]) # 生化指标关联性分析(计算相关系数) indices = ["ALB", "ALP", "ALT", "AST", "BIL", "CHE", "CHOL", "CREA", "GGT", "PROT"] correlation_matrix = [] for i in range(len(indices)): row = [] for j in range(len(indices)): corr_val = df.select(corr(col(indices[i]), col(indices[j]))).first()[0] row.append(round(corr_val, 4) if corr_val is not None else 0.0) correlation_matrix.append(row) corr_pd = pd.DataFrame(correlation_matrix, columns=indices, index=indices) # 核心指标与疾病关联强度分析(计算各指标在不同疾病阶段的变异系数) index_disease_correlation = {} for idx in indices: # 计算各疾病类别的指标均值 category_avg = df.groupBy("Category").agg(avg(col(idx)).alias("avg_val")).toPandas() # 按疾病严重程度排序 category_avg["Category"] = pd.Categorical(category_avg["Category"], categories=disease_order, ordered=True) category_avg = category_avg.sort_values("Category") # 计算变异系数(标准差/均值) mean_val = category_avg["avg_val"].mean() std_val = category_avg["avg_val"].std() cv = std_val / mean_val if mean_val != 0 else 0 index_disease_correlation[idx] = { "category_avg_values": category_avg, "variation_coefficient": round(cv, 4) } # 性别差异疾病进展对比分析 gender_disease_progress = df.groupBy("Sex", "Category").agg(count("*").alias("patient_count")).orderBy("Sex", [col("Category").isin([disease_order[i]]) for i in range(len(disease_order))]) return disease_progress_dist.toPandas(), age_disease_progress.toPandas(), corr_pd, index_disease_correlation, gender_disease_progress.toPandas()
【Hive+Hadoop+python毕设】基于大数据的丙型肝炎患者数据可视化分析系统-结语
💟💟如果大家有任何疑虑,欢迎在下方位置详细交流。