广西药店数据可视化分析系统-简介
本系统全称为“基于Hadoop+Django的广西药店数据可视化分析系统”,它是一个集数据处理、后端服务与前端可视化于一体的综合性大数据毕业设计项目。项目的核心目标在于利用大数据技术栈,对广西全区范围内的药店公开数据进行深度挖掘与多维度分析,并将分析结果通过动态、交互式的图表清晰地呈现给用户。在技术架构上,系统后端采用Python语言及主流的Django框架进行开发,负责处理业务逻辑与API接口;数据处理与分析的核心则构建在Hadoop分布式文件系统(HDFS)之上,利用Spark及其Spark SQL组件强大的内存计算能力,对海量药店数据进行高效的清洗、转换和聚合运算,其中还运用了Pandas、NumPy等库辅助进行精细化数据操作。前端界面则通过Vue、ElementUI搭建,并集成Echarts图表库,将复杂的数据分析结果转化为直观的柱状图、饼图、地理热力图、词云等十种可视化图表。系统的功能设计紧密围绕实际业务场景展开,不仅包括对各地市药店数量、连锁品牌市场占有率等宏观市场格局的基础分析,还深入到地理空间维度,实现了药店分布热力图、核心区域密度聚类以及不同品牌地理布局对比等精细化分析。此外,系统还特别关注了民生服务,设计了对各地市异地就医服务开通比例、异地住院与就医服务关联性的分析功能,并尝试通过泰森多边形算法来初步评估药店服务的覆盖均衡性,从而为理解区域医疗零售市场提供了较为全面的数据视角。
广西药店数据可视化分析系统-技术
大数据框架:Hadoop+Spark(本次没用Hive,支持定制) 开发语言:Python+Java(两个版本都支持) 后端框架:Django+Spring Boot(Spring+SpringMVC+Mybatis)(两个版本都支持) 前端:Vue+ElementUI+Echarts+HTML+CSS+JavaScript+jQuery 数据库:MySQL
广西药店数据可视化分析系统-背景
选题背景 随着大家对健康生活的要求越来越高,我们身边的药店也肉眼可见地变多了。特别是在广西这样一个地域广阔、人口众多的地区,药店不仅仅是卖药的地方,更像是遍布城乡的健康服务小基站。但是,这些药店具体都开在哪?哪个牌子的连锁店最多?哪些店能刷异地医保?这些信息其实都藏在大量的数据里,零散地分布在各个地方。平时我们可能感觉不到,但对于想开新药店的创业者、想要了解市场布局的连锁品牌,甚至是关心医疗资源配置的管理部门来说,把这些零散数据整合起来,看清楚里面的门道,就显得特别有价值了。传统的Excel表格面对几万条数据时,处理起来不仅慢,而且很难做一些像地理空间分析这样的复杂操作。所以,用更专业的大数据工具来处理和分析这些药店数据,就成了一个挺实际的需求。这个课题就是想尝试着用Hadoop和Spark这些技术,去把广西药店的数据好好“盘一盘”,看看能挖出些什么有意思的结论。
选题意义 说实话,这个项目就是一个毕业设计,主要还是想锻炼一下自己的综合能力,不敢说能产生多大的商业价值。不过,从几个方面来看,它还是挺有意义的。对自己来说,这是一个非常好的学习和实践机会。它不像做个简单的网站那样只涉及增删改查,而是把Python后端(Django)、大数据处理(Hadoop/Spark)和前端可视化(Echarts)这些热门技术串联了起来,做完整个项目,自己对一个完整数据产品的开发流程就有了更深的理解,这比单纯学理论要实在得多。从课题本身的角度看,它算是一个将大数据技术应用于区域民生领域的小小尝试。通过这个系统分析出来的药店分布、品牌竞争、医保服务覆盖情况,虽然不一定完全精确,但也能为关心这个领域的人提供一个初步的、可视化的数据参考,比如让人们直观地看到自己所在城市药店资源的密集程度。总的来说,这个课题的实际意义更偏向于一个“概念验证”,证明了整合多种技术去解决一个具体的数据分析问题是可行的,也为自己将来的学习和发展方向提供了一次有益的探索。
广西药店数据可视化分析系统-视频展示
[video(video-6G5Rnm8Y-1761746738155)(type-csdn)(url-live.csdn.net/v/embed/498…)]
广西药店数据可视化分析系统-图片展示
广西药店数据可视化分析系统-代码展示
from pyspark.sql.functions import col, count, when, lit, substring_index
# 假设这是Django项目中的一个utils.py或services.py文件
# 初始化Spark Session
# 在实际Django项目中,SparkSession的创建和管理会更复杂,通常会做成单例模式或放入启动脚本中
def get_spark_session():
spark = SparkSession.builder \
.appName("GuangxiPharmacyAnalysis") \
.master("local[*]") \
.config("spark.sql.warehouse.dir", "file:///C:/spark-warehouse") \
.getOrCreate()
return spark
# 核心功能一:分析广西各地市药店数量分布
def process_city_distribution_analysis(spark, input_path, output_path):
# 读取HDFS上的CSV数据
pharmacy_df = spark.read.csv(input_path, header=True, inferSchema=True)
# 筛选出城市名称不为空的数据
valid_city_df = pharmacy_df.filter(col("城市名称").isNotNull())
# 按城市名称进行分组计数
city_count_df = valid_city_df.groupBy("城市名称").agg(count("*").alias("药店数量"))
# 对结果按药店数量进行降序排序
sorted_city_count_df = city_count_df.orderBy(col("药店数量").desc())
# 可以在这里打印查看中间结果
sorted_city_count_df.show(truncate=False)
# 将Pandas DataFrame收集到Driver端,准备写入数据库或返回给前端
# 在生产环境中,对于大数据集应避免collect(),这里为毕设演示
result_pandas_df = sorted_city_count_df.toPandas()
# 假设后续有函数将result_pandas_df存入MySQL
print("各地市药店数量分布分析完成。")
return result_pandas_df
# 核心功能二:分析广西药店连锁品牌市场占有率
def process_brand_market_share_analysis(spark, input_path, output_path):
pharmacy_df = spark.read.csv(input_path, header=True, inferSchema=True)
# 定义主要的连锁品牌列表
main_brands = ["大参林", "一心堂", "老百姓", "国大药房", "桂中大药房", "康全药业"]
# 使用when().otherwise()来提取品牌名称,简化处理
# 这是一个简化的品牌提取逻辑,实际可能需要更复杂的正则
brand_condition = when(col("药店名称").rlike("大参林"), "大参林") \
.when(col("药店名称").rlike("一心堂"), "一心堂") \
.when(col("药店名称").rlike("老百姓"), "老百姓") \
.when(col("药店名称").rlike("国大药房"), "国大药房") \
.when(col("药店名称").rlike("桂中"), "桂中大药房") \
.when(col("药店名称").rlike("康全"), "康全药业") \
.otherwise("其他")
# 添加一个名为'brand'的新列
df_with_brand = pharmacy_df.withColumn("brand", brand_condition)
# 按品牌进行分组计数
brand_count_df = df_with_brand.groupBy("brand").agg(count("*").alias("数量"))
# 过滤掉数量过少的“其他”项中的杂牌,或者直接使用
sorted_brand_count_df = brand_count_df.orderBy(col("数量").desc())
sorted_brand_count_df.show(truncate=False)
result_pandas_df = sorted_brand_count_df.toPandas()
print("连锁品牌市场占有率分析完成。")
return result_pandas_df
# 核心功能三:分析各地市主要连锁品牌药店数量分布
def process_brand_distribution_by_city_analysis(spark, input_path, output_path):
pharmacy_df = spark.read.csv(input_path, header=True, inferSchema=True)
# 复用上面的品牌提取逻辑
brand_condition = when(col("药店名称").rlike("大参林"), "大参林") \
.when(col("药店名称").rlike("一心堂"), "一心堂") \
.when(col("药店名称").rlike("老百姓"), "老百姓") \
.when(col("药店名称").rlike("国大药房"), "国大药房") \
.otherwise("其他")
df_with_brand = pharmacy_df.withColumn("brand", brand_condition)
# 过滤掉“其他”品牌和城市名为空的数据
main_brands_df = df_with_brand.filter(col("brand") != "其他").filter(col("城市名称").isNotNull())
# 按“城市名称”和“brand”双重分组,进行计数
city_brand_count_df = main_brands_df.groupBy("城市名称", "brand").agg(count("*").alias("数量"))
# 排序以便于观察
sorted_df = city_brand_count_df.orderBy("城市名称", col("数量").desc())
# 对于前端Echarts来说,透视表(pivot)格式可能更友好
pivot_df = city_brand_count_df.groupBy("城市名称").pivot("brand").agg(count("*")).fillna(0)
pivot_df.show(truncate=False)
result_pandas_df = pivot_df.toPandas()
print("各地市主要连锁品牌药店数量分布分析完成。")
return result_pandas_df
广西药店数据可视化分析系统-结语
感谢大家的观看!这个“广西药店数据可视化分析系统”的分享就到这里啦。从数据处理到前后端实现,整个过程踩了不少坑,但也学到了很多。希望这个完整的项目思路能给正在为毕设发愁的你带来一些启发。如果觉得这个项目对你有帮助,或者你对其中的某个技术点感兴趣,别忘了给我点赞、收藏、加关注哦!你们的支持是我继续分享的动力。也超欢迎大家在评论区一起交流,无论是技术问题还是选题想法,我们都可以聊聊!
【CS毕设新思路来啦!】师弟师妹们还在为毕设选题头疼吗?告别烂大街的管理系统!我把自己的大数据毕设“基于Hadoop+Spark+Python+Django的广西药店数据可视化分析系统”整理出来啦!项目涵盖了数据采集、Spark数据处理、Django后端和Echarts酷炫可视化全流程,热力图、品牌分析图应有尽有!完整项目已就位,想看的同学评论区扣个“666”,别忘了“一键三连”支持一下,人多的话我考虑出个详细的视频讲解!