【高分大数据毕设】搞定4万条数据分析!基于Python+Spark的药店数据可视化系统(含10大功能)毕业设计 选题推荐 毕设选题 数据分析

66 阅读9分钟

广西药店数据可视化分析系统-简介

本系统全称为“基于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…)]

广西药店数据可视化分析系统-图片展示

QQ20251029-153436.png

QQ20251029-153527.png

QQ20251029-153558.png

QQ20251029-153628.png

QQ20251029-153706.png

QQ20251029-153737.png

QQ20251029-153759.png

QQ20251029-153903.png

QQ20251029-153928.png

QQ20251029-153953.png

QQ20251029-154046.png

QQ20251029-154108.png

QQ20251029-154950.png

QQ20251029-155027.png

广西药店数据可视化分析系统-代码展示

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”,别忘了“一键三连”支持一下,人多的话我考虑出个详细的视频讲解!