作者计算机编程小央姐个人简介曾长期从事计算机专业培训教学本人也热爱上课教学语言擅长Java、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法也喜欢交流技术大家有技术代码这一块的问题可以问我想说的话感谢大家的关注与支持 文末获取源码目录计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统功能介绍计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统技术介绍计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统背景意义计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统演示视频计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统演示图片计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统部分代码计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-结语计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统功能介绍本系统为基于 Hadoop 与 Spark 技术搭建的北京市药品批准信息数据可视化分析平台依托北京市药品监督管理局开放的药品批准信息抽样数据集开展数据处理与挖掘工作数据集包含药品通用名称、剂型、注册分类、药品有效期、批准文号等核心业务字段系统借助 HDFS 完成原始 CSV 文件的分布式存储通过 Spark SQL 完成数据清洗、字段解析与结构化转换针对原始数据里剂型全半角符号不统一、持有人字段存在大量占位空值、批准文号需要拆分编码信息、有效期文本解析转化等预处理需求制定对应的处理逻辑系统一共划分剂型结构、注册分类、文号溯源、效期态势、品名热度、风险洞察六大分析维度除常规的统计占比、排名、交叉对比分析之外还集成 FP-Growth 关联规则挖掘、K-Means 药品画像聚类、TF-IDF 品名关键词提取三种数据挖掘算法后端采用 Django 框架承接 Spark 计算结果前端依靠 Vue、ECharts 实现各类统计图表的渲染展示能够直观呈现不同剂型与注册分类的分布情况、药品批准时间趋势、药品效期状态以及挖掘得到的数据潜在规律整套系统可以完成从原始药品数据分布式存储、清洗计算、挖掘分析到可视化展示的完整流程给药品批准信息的多维观测提供交互式的数据查看渠道。计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统技术介绍大数据框架HadoopSpark本次没用Hive支持定制开发语言PythonJava两个版本都支持后端框架DjangoSpring Boot(SpringSpringMVCMybatis)两个版本都支持前端VueElementUIEchartsHTMLCSSJavaScriptjQuery详细技术点Hadoop、HDFS、Spark、Spark SQL、Pandas、NumPy数据库MySQL计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统背景意义药品批准信息属于药品监管过程里很重要的一类基础数据地方药监部门会持续对外公开这类开放数据只是原始数据大多以静态表格文件的形式对外提供里面包含多条药品条目和多种属性字段普通表格工具很难快速完成多维度的交叉统计数据里还存在格式不统一、文本占位、日期文本难以直接运算这类常见问题人工整理和分析的效率很低很难直接看出药品剂型、注册分类、批准年份、有效期背后潜藏的数据分布特点。大数据分布式计算技术适合处理这类体量较大的表格数据Spark 可以高效完成批量的数据转换与统计挖掘所以选择北京市药品批准信息作为研究对象借助 Hadoop、Spark 这套大数据工具链完成开放药品数据的预处理、多维度统计与挖掘分析把零散的原始表格数据转化为可以直观查看的可视化图表以此尝试解决原始开放药品数据不易开展深度分析的问题。做这个课题更多是用本科学到的大数据、Web 开发相关知识做一次综合实践这套系统可以把零散的北京市药品批准开放数据做统一清洗和分布式计算生成各类统计图表方便查看不同药品类型、剂型以及效期的分布情况对于想要简单了解本地药品批准数据分布的使用者来说不用手动操作复杂表格就能快速获取基础统计信息。课题实现的 FP-Growth、K-Means、TF-IDF 算法模块也能试着挖掘剂型和注册分类之间的关联模式、对药品数据做分群、提取药品名称里的高频关键词这些挖掘结果只能作为简单参考达不到专业药监系统的分析标准。在个人学习层面课题可以锻炼自己使用 HDFS 存储数据、Spark 编写数据处理逻辑、后端对接计算结果、前端做可视化展示的综合能力帮助自己熟悉大数据项目从数据接入到结果展示的完整开发流程。计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统演示视频演示视频计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统演示图片计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-系统部分代码frompyspark.sqlimportSparkSessionfrompyspark.sql.functionsimportcol,regexp_extract,when,count,desc,split,trim,lowerfrompyspark.ml.fpmimportFPGrowthfrompyspark.ml.clusteringimportKMeansfrompyspark.ml.featureimportVectorAssembler,HashingTF,IDF,Tokenizerimportpandasaspddefspark_init():sparkSparkSession.builder.appName(DrugApprovalAnalysis).master(local[*]).getOrCreate()returnsparkdefpreprocess_drug_data(spark,csv_path):raw_dfspark.read.option(header,true).option(encoding,gb18030).csv(csv_path)dfraw_df.withColumn(holder_name,when(col(药品持有人名称).isin(————,----,),未记录).otherwise(col(药品持有人名称)))dfdf.withColumn(dosage_form,trim(col(剂型))).withColumn(dosage_form,regexp_replace(col(dosage_form),\\(,)).withColumn(dosage_form,regexp_replace(col(dosage_form),\\),))dfdf.withColumn(reg_class,when(col(注册分类).isNull(),未分类).otherwise(trim(col(注册分类))))dfdf.withColumn(approval_letter,regexp_extract(col(药品批准文号),^([A-Z]),1))dfdf.withColumn(approval_year_str,regexp_extract(col(药品批准文号),[HZS]J?(\\d{4}),1))dfdf.withColumn(approval_year,when(col(approval_year_str).rlike(^\\d{4}$),col(approval_year_str).cast(int)).otherwise(None))dfdf.withColumn(expiry_date,to_date(col(药品有效期),yyyy-MM-dd))dfdf.withColumn(expiry_status,when(col(expiry_date)current_date(),已过期).when(col(expiry_date)date_add(current_date(),365),临期一年).otherwise(在效))dfdf.filter(col(药品通用名称).isNotNull()).filter(col(dosage_form).isNotNull()).filter(col(reg_class).isNotNull())df.write.mode(overwrite).option(header,true).csv(output/preprocessed_drug)pre_pandasdf.limit(10000).toPandas()pre_pandas.to_csv(output/drug_approval_preprocessed_data.csv,indexFalse,encodingutf-8-sig)returndfdeffp_growth_dosage_reg_analysis(spark,pre_df):item_dfpre_df.select(col(dosage_form),col(reg_class)).filter(col(dosage_form).isNotNull()).filter(col(reg_class).isNotNull())item_dfitem_df.withColumn(items,array(col(dosage_form),col(reg_class)))fpFPGrowth(itemsColitems,minSupport0.08,minConfidence0.2)fp_modelfp.fit(item_df)freq_itemsfp_model.freqItemsets rulesfp_model.associationRules rulesrules.withColumn(support,round(col(support),2)).withColumn(confidence,round(col(confidence),2)).withColumn(lift,round(col(lift),2))rules_pandasrules.orderBy(desc(lift)).toPandas()rules_pandas.to_csv(output/risk_insight/fp_growth_rules.csv,indexFalse,encodingutf-8-sig)returnrulesdefkmeans_drug_cluster_analysis(spark,pre_df):cluster_dfpre_df.withColumn(dosage_index,when(col(dosage_form).contains(注射),1).when(col(dosage_form).contains(片),2).when(col(dosage_form).contains(胶囊),3).otherwise(0))cluster_dfcluster_df.withColumn(reg_index,when(col(reg_class)化学药品,1).when(col(reg_class)中药,2).when(col(reg_class)生物制品,3).otherwise(0))cluster_dfcluster_df.withColumn(day_remain,datediff(col(expiry_date),current_date()))cluster_dfcluster_df.filter(col(day_remain).isNotNull())vec_assemblerVectorAssembler(inputCols[dosage_index,reg_index,day_remain],outputColfeatures)vec_dfvec_assembler.transform(cluster_df)kmeansKMeans(k4,seed24,featuresColfeatures,predictionColcluster)km_modelkmeans.fit(vec_df)result_dfkm_model.transform(vec_df)result_dfresult_df.withColumn(cluster_label,when(col(cluster)0,常规在效中药).when(col(cluster)1,高风险注射化学药).when(col(cluster)2,口服稳定化学药).otherwise(远期效期生物药))cluster_statresult_df.groupBy(cluster,cluster_label).agg(count(*).alias(count))cluster_pandascluster_stat.toPandas()cluster_pandas.to_csv(output/risk_insight/kmeans_cluster_result.csv,indexFalse,encodingutf-8-sig)returnresult_dfdeftfidf_generic_name_keyword(spark,pre_df):text_dfpre_df.select(col(药品通用名称).alias(generic_name)).filter(col(generic_name).isNotNull())tokenizerTokenizer(inputColgeneric_name,outputColwords)words_dftokenizer.transform(text_df)hashingTFHashingTF(inputColwords,outputColrawFeatures,numFeatures8000)tf_dfhashingTF.transform(words_df)idfIDF(inputColrawFeatures,outputColfeatures)idf_modelidf.fit(tf_df)tfidf_dfidf_model.transform(tf_df)keyword_extracttfidf_df.select(generic_name,words,features)keyword_pandaskeyword_extract.limit(5000).toPandas()keyword_pandas.to_csv(output/risk_insight/tfidf_keyword.csv,indexFalse,encodingutf-8-sig)returntfidf_df计算机毕设推荐基于 HadoopSpark 的北京市药品批准信息大数据可视化-结语如果大家有任何疑虑欢迎在下方位置详细交流。