基于python flask+pyecharts实现的中药数据可视化大屏,实现基于Apriori算法的药品功效关系的关联规则

背景

在中医药学中,物品与功效之间的关联关系研究是一个非常重要的课题。传统中医药学中,很多药物都具有多种功效,而且不同药物对同一种疾病可能具有不同的疗效。因此,挖掘物品与功效之间的关联关系,可以帮助我们更加准确地认识和应用中医药宝库中的药物,从而提高中医药学的治疗效果和水平。

随着信息技术的快速发展,Python作为一种流行的编程语言,已经被广泛应用于中医药学领域。Python具有丰富的第三方库和工具,例如NumPy、Pandas、Matplotlib等,这些库和工具为中医药学数据挖掘提供了丰富的工具和支持。同时,Python Flask + Pyecharts实现了中药数据可视化大屏,为物品与功效之间的关联关系研究提供了有效的可视化工具。

基于物品的关联规则算法在中医药学中的应用研究具有重要的研究背景和意义。通过构建物品-功效对应关系表,并利用Python Flask + Pyecharts实现中药数据可视化大屏,可以实现对物品与功效之间关联关系的定量分析,为中医药学的研究提供有力的数据支持。同时,基于物品的关联规则算法还可以为中医药学挖掘关联规则提供新的思路和方法,有助于发掘中医药宝库中的更多创新和发展机会。

技术栈:

flask框架

pandas

selenium爬虫

pyecharts可视化

关联规则算法(纯算法,没有库)

前端html+js+css

前端页面设计

前端设计的关键步骤:

页面布局设计:

使用Flex布局将页面分为左侧、中间和右侧三个主要部分,每个部分包含多个子元素。

左侧和右侧各包含三个垂直排列的子元素,用于展示不同类型的数据。

中间部分用于显示地图数据,并包含一个计时器显示当前时间。

样式设计:

设置全局样式,包括页面背景色、字体颜色、间距等,确保页面整体风格统一。

设计每个数据展示框的样式,包括边框样式、高度、宽度等,使其具有辨识度。

为表格容器添加滚动条样式,确保表格数据超出容器高度时可以滚动查看。

数据填充与更新:

使用JavaScript和jQuery库实现数据的动态填充和更新,通过Ajax请求从后端获取最新数据并更新图表。

在表格部分,根据后端返回的数据动态生成表格行,并实现表格的滚动效果。

图表展示:

使用ECharts库初始化各个图表实例,并根据后端返回的数据更新图表内容。

不仅展示静态图表,还可以通过定时器定时刷新数据,实现实时数据展示。

通过以上设计,可以实现一个交互性强、信息展示清晰的气象数据可视化大屏,为用户提供直观、动态的数据分析和监控功能。

flask框架代码

python 复制代码
@app.route("/")
def index():
    return render_template("main.html")

@app.route("/style.css")
def get_scss():
    return render_template("style.css")

@app.route("/css/<cssname>")
def get_fcss(cssname):
    return render_template("css/"+cssname)

@app.route("/js/<jsname>")
def get_JS(jsname):
    return render_template("js/"+jsname)

@app.route("/barChart")
def get_bar_chart():
    c = bar_base()
    return c.dump_options_with_quotes()

@app.route("/mapChart")
def get_map_chart():
    c = map_base()
    return c.dump_options_with_quotes()

@app.route("/blm")
def get_bar2_chart():
    c = get_HY_BAR()
    return c.dump_options_with_quotes()

关联规则算法

python 复制代码
from __future__ import print_function
import pandas as pd
import numpy as np
from apriori import find_rule  # 导入自行编写的apriori函数

df = pd.read_csv('medicine_data.csv')
df=df[df['中药材类别(按功效划分)'].str.contains('活血', na=False)]
df['功效']=df['功效'].str.replace('。','')
data=df['功效'].str.split('、',expand=True)
print(df.info())
print('data: \n', data)
print(u'\n转换原始数据至0-1矩阵...')
# 确认数据转换为 NumPy 数组
data_array = data.values
print('data_array: \n', data_array)
print('data_array shape: ', data_array.shape)
print('data_array type: ', type(data_array))
# print('data_as_matrix: \n', data.as_matrix())
# array = np.array(data)
# a1 = array[0, :]
# print('a1: \n', a1)
# print(pd.Series(1, index=a1[pd.notna(a1)]))
# 匿名函数ct的作用是取出x中不是NAN的元素作为索引列,然后对应的值都为1。
# pd.Series()要求值的个数要么和索引的个数相等,要么只给定一个值然后按照索引的个数复制
# 转换成0-1矩阵
ct = lambda x: pd.Series(1, index=x[pd.notna(x)])
data_01matrix = data.apply(ct, axis=1).fillna(0)

print('data_01matrix: \n', data_01matrix)
print(u'\n转换完毕。')
#
support = 0.05  # 最小支持度
confidence = 0.5  # 最小置信度
ms = '---'  # 连接符,默认'--',用来区分不同元素,如A--B。需要保证原始表格中不含有该字符

# find_rule(data, support, confidence, ms).to_excel(output_path)
result = find_rule(data_01matrix, support, confidence, ms)   # 输出结果
result.reset_index(inplace=True)
print('result: \n', result)
print(result.info())
print(result.values.tolist())

运行结果:

最终大屏效果

相关推荐
冷雨夜中漫步43 分钟前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴1 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再1 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
颜酱2 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919103 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi9878383 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
喵手3 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934733 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy3 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
DuHz3 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理