💖💖作者:计算机编程小央姐 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜
💕💕文末获取源码
@TOC
【Spark+hive毕设】基于大数据的国家药品采集药品数据可视化分析系统-系统功能介绍
《基于大数据的国家药品采集药品数据可视化分析系统》是一个综合性的数据处理与展示平台,其核心目标是深度挖掘和直观呈现国家药品集中采购政策下产生的海量数据。本系统在技术架构上,采用Hadoop作为底层分布式文件系统(HDFS)来存储海量的原始药品数据集,利用Hive构建数据仓库,对清洗后的结构化数据进行管理和查询。数据处理与分析的核心引擎是Apache Spark,它凭借其内存计算的巨大优势,能够高效执行复杂的分析任务。具体而言,系统通过Spark SQL对存储在Hive中的药品数据进行多维度聚合统计,例如分析不同生产厂商的中选药品数量、对比各类药品的单位价格分布等。在此基础上,系统还引入了Spark MLlib机器学习库,特别是运用K-means聚类算法,对药品进行市场细分,例如根据“单位价格”和“包装数量”等特征将药品划分为不同的簇,从而探索“高价小包装”或“低价大包装”等潜在的定价策略。后端服务采用主流的Python/Django或Java/SpringBoot框架,负责封装所有Spark分析任务,并通过API接口向前端提供标准化的JSON数据。前端则基于Vue.js全家桶,并集成Echarts图表库,将后端返回的复杂分析结果,转化为一系列交互式、可视化的图表,如条形图、饼图、热力图和散点图等,最终为用户呈现一个能够动态探索药品集采数据全貌的分析驾驶舱。
【Spark+hive毕设】基于大数据的国家药品采集药品数据可视化分析系统-系统技术介绍
大数据框架: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
【Spark+hive毕设】基于大数据的国家药品采集药品数据可视化分析系统-系统背景意义
这几年,国家药品集中采购(也就是大家常说的“集采”)已经成了咱们国家医药卫生领域一个特别重要的事儿。说白了,就是国家出面,把全国的公立医院对某些药的需求量“打包”起来,跟药厂去谈一个“团购价”,目的是挤掉原来药品价格里虚高的水分,让老百姓能用上便宜的好药。这个政策一推行,就产生了海量的真实数据:哪个厂家的哪种药中了标?中标价格是多少?供应量有多大?这些数据就像一座金矿,里面藏着很多有价值的信息。但是,这些数据通常都是以表格的形式存在,非常零散和枯燥,普通人很难看明白背后的门道,比如市场格局发生了什么变化,哪些药企成了大赢家,药价到底降了多少等等。这就带来一个问题:我们有了一堆好数据,却没有一个好用的工具去直观地看懂它、分析它。所以,结合我们计算机专业所学的知识,特别是大数据技术,去开发一个能把这些复杂数据变得简单易懂的可视化分析系统,就成了一个既有现实意义又很锻炼技术的课题方向。做这个毕业设计,老实说,主要还是一个对自己大学四年所学知识的检验和实践过程,毕竟它只是一个学生项目,谈不上能改变行业。但从几个角度来看,它确实还是挺有意义的。第一,从技术学习上讲,它能让我真正上手去用Hadoop、Spark、Hive这些企业里常用的大数据技术,而不是停留在理论层面。处理一个真实的、有一定复杂度的药品数据集,比单纯做个增删改查的学生管理系统,更能锻炼解决实际问题的能力。第二,这个系统也尝试提供一个观察集采政策效果的窗口。通过可视化的图表,我们可以比较直观地看到药品价格的分布、头部厂商的市场占有率,或者某一种药在不同厂家之间的价格差异。这让非专业人士也能对集采带来的市场变化有个大概的了解,算是用技术把枯燥的政策数据翻译成了大家能看懂的“图画故事”。最后,项目里用到的K-means聚类算法,也是一个小小的探索,它试着去发现数据背后隐藏的模式,比如哪些药品在定价策略上比较相似。总的来说,这个项目算是一个有益的尝试,它展示了大数据技术在辅助理解公共政策数据方面的潜力,对我个人而言,也是一个非常有价值的综合性项目训练。
【Spark+hive毕设】基于大数据的国家药品采集药品数据可视化分析系统-系统演示视频
【Spark+hive毕设】基于大数据的国家药品采集药品数据可视化分析系统-系统演示图片
【Spark+hive毕设】基于大数据的国家药品采集药品数据可视化分析系统-系统部分代码
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, desc
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.clustering import KMeans
## 初始化SparkSession,并启用Hive支持
spark = SparkSession.builder \
.appName("DrugDataAnalysisSystem") \
.config("spark.sql.warehouse.dir", "/user/hive/warehouse") \
.enableHiveSupport() \
.getOrCreate()
## 从Hive表中加载数据,假设表名为drug_data
df = spark.table("default.drug_data")
def get_top_manufacturers(dataframe, limit=20):
"""
核心功能1:分析各生产企业中选药品数量,并返回Top N
这是一个典型的聚合分析任务,体现了对供应商市场份额的基本洞察。
通过groupBy对生产企业进行分组,然后用count计算每个企业的中选药品数。
接着,为了方便后续使用,将自动生成的'count'列重命名为'drug_count'。
最后,使用orderBy对药品数量进行降序排序,并用limit函数提取排名靠前的企业。
这个功能是评估市场集中度和识别核心供应商的基础。
最终返回一个包含'manufacturer'和'drug_count'两列的Spark DataFrame。
"""
print("Executing: Get Top Manufacturers Analysis")
top_manufacturers_df = dataframe.groupBy("manufacturer") \
.count() \
.withColumnRenamed("count", "drug_count") \
.orderBy(col("drug_count").desc()) \
.limit(limit)
# 在实际应用中,这里会将top_manufacturers_df转换为JSON格式并返回给前端
# top_manufacturers_df.show()
return top_manufacturers_df
def get_top_expensive_drugs(dataframe, limit=20):
"""
核心功能2:查询单位价格最高的药品排行
此功能旨在精准定位高价值药品,是成本控制和预算分析的关键。
首先,选择分析所必需的列:通用名、生产企业和单位价格。
为了确保价格数据的有效性,我们先对'unit_price'列进行降序排序。
这样价格最高的药品就会排在最前面。
接着,使用limit函数获取前20条记录,即价格最高的Top 20药品。
这个分析可以帮助管理者关注重点监控对象,并分析其高价原因。
返回的DataFrame包含了药品、厂商和它们的高昂单位价格,信息直观。
"""
print("Executing: Get Top Expensive Drugs Analysis")
top_expensive_df = dataframe.select("generic_name", "manufacturer", "unit_price") \
.orderBy(col("unit_price").desc()) \
.limit(limit)
# 在实际应用中,这里会将top_expensive_df转换为JSON格式并返回给前端
# top_expensive_df.show()
return top_expensive_df
def perform_drug_clustering(dataframe, k=4):
"""
核心功能3:使用K-means算法对药品进行聚类分析
这是一个高级分析功能,旨在探索药品数据中隐藏的模式,比如定价策略。
我们选择'unit_price'和'package_quantity'作为聚类特征。
首先,使用VectorAssembler将这两个数值型特征合并成一个名为'features'的向量列。
这是Spark MLlib算法的标准输入格式,它要求所有特征都在一个向量里。
接着,我们初始化KMeans模型,设置聚类数量k(比如4类)。
然后,使用fit方法在数据上训练模型,找到聚类中心。
最后,使用transform方法为原始数据中的每一行分配一个簇标签('cluster'列)。
这个结果可以揭示不同药品在价格和包装量上的组合规律,例如发现'高价小包装'的专科药群组。
"""
print("Executing: K-Means Clustering Analysis")
# 确保用于聚类的列不包含空值
feature_df = dataframe.select("unit_price", "package_quantity").na.drop()
assembler = VectorAssembler(
inputCols=["unit_price", "package_quantity"],
outputCol="features")
assembled_data = assembler.transform(feature_df)
kmeans = KMeans(featuresCol="features", predictionCol="cluster", k=k, seed=1)
model = kmeans.fit(assembled_data)
predictions = model.transform(assembled_data)
# 在实际应用中,这里会将predictions转换为JSON格式并返回给前端
# predictions.select("unit_price", "package_quantity", "cluster").show()
return predictions
## 调用示例
top_manufacturers_result = get_top_manufacturers(df)
top_expensive_drugs_result = get_top_expensive_drugs(df)
clustering_result = perform_drug_clustering(df)
## 关闭SparkSession
spark.stop()
【Spark+hive毕设】基于大数据的国家药品采集药品数据可视化分析系统-结语
💟💟如果大家有任何疑虑,欢迎在下方位置详细交流。