我有一个mysql数据表,存了2018-2022年的每个学校的分数线,但是有的学校不仅有一个批次,可能会有多个批次,我想用pyecharts实现数据可视化:最好有文字提示说输入你想查询 的两个学校吧,就是有六个框,第一个框用来选择2018-2022,第二个框用来选择学校,第三个就是用来选择批次,第四个框还是用来选择2018-2022,第五个框就是还是用来输入学校,第六个框就是输入批次,当然这个学校和批次肯定是要和我数据库的内容对应的吧,不可能说我数据库一个学校只有一个批次,你还能搜到他其他批次的分数 最后就是搜到的两个学校进行数据可视化可以直观的看出他们的分数差距,默认展示2022年的清华大学和北京大学的成绩对比,而且我不想用flask!!!

时间: 2024-03-21 22:43:12 浏览: 12
好的,你可以使用Python中的pandas和pyecharts库来实现你的需求。 首先,你需要连接你的MySQL数据库,并将数据导入到pandas的DataFrame中。可以使用pandas的read_sql_query()方法来实现: ```python import pandas as pd import pymysql # 连接数据库 conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='database_name') # 查询数据 sql = "SELECT * FROM score_line" df = pd.read_sql_query(sql, conn) # 关闭连接 conn.close() ``` 假设你的数据库中的表名为`score_line`,包含以下字段:`year, school, batch, score`。 接下来,你可以使用pandas的groupby()方法和agg()方法来计算每个学校每个批次的分数线的平均分: ```python # 计算每个学校每个批次的平均分数 grouped = df.groupby(['year', 'school', 'batch'])['score'].agg('mean').reset_index() ``` 然后,你可以使用pyecharts库来创建一个页面,包含六个下拉框和一个柱状图来展示两个学校的分数对比。可以使用pyecharts的Page、Grid、Bar和Tab组件来实现: ```python from pyecharts.charts import Bar from pyecharts.components import Table from pyecharts.options import ComponentTitleOpts # 创建一个页面 page = Page() # 创建六个下拉框 years = sorted(list(set(grouped['year']))) schools = sorted(list(set(grouped['school']))) batches = sorted(list(set(grouped['batch']))) year_select_1 = Select() year_select_1.options = years year_select_2 = Select() year_select_2.options = years school_select_1 = Select() school_select_1.options = schools school_select_2 = Select() school_select_2.options = schools batch_select_1 = Select() batch_select_1.options = batches batch_select_2 = Select() batch_select_2.options = batches # 创建一个柱状图 bar = Bar() # 默认展示2022年的清华大学和北京大学的成绩对比 school_1 = '清华大学' batch_1 = '本科一批' school_2 = '北京大学' batch_2 = '本科一批' data_1 = grouped[(grouped['year'] == 2022) & (grouped['school'] == school_1) & (grouped['batch'] == batch_1)]['score'].values data_2 = grouped[(grouped['year'] == 2022) & (grouped['school'] == school_2) & (grouped['batch'] == batch_2)]['score'].values bar.add_xaxis([school_1, school_2]) bar.add_yaxis('成绩', [data_1[0], data_2[0]]) # 创建一个表格,展示选中的学校和批次的平均分 table = Table() table.add(['学校', '批次', '平均分'], [[school_1, batch_1, data_1[0]], [school_2, batch_2, data_2[0]]]) table.set_global_opts(title_opts=ComponentTitleOpts(title='学校分数线平均分')) # 将下拉框、柱状图和表格组合在一起,放到一个Grid中 grid = Grid() grid.add(year_select_1, grid_opts=opts.GridOpts(pos_left='10%', pos_top='5%')) grid.add(school_select_1, grid_opts=opts.GridOpts(pos_left='30%', pos_top='5%')) grid.add(batch_select_1, grid_opts=opts.GridOpts(pos_left='50%', pos_top='5%')) grid.add(year_select_2, grid_opts=opts.GridOpts(pos_left='10%', pos_top='15%')) grid.add(school_select_2, grid_opts=opts.GridOpts(pos_left='30%', pos_top='15%')) grid.add(batch_select_2, grid_opts=opts.GridOpts(pos_left='50%', pos_top='15%')) grid.add(bar, grid_opts=opts.GridOpts(pos_left='10%', pos_top='30%', width='80%', height='50%')) grid.add(table, grid_opts=opts.GridOpts(pos_left='10%', pos_top='80%', width='80%')) # 将Grid添加到页面中 page.add(grid) # 显示页面 page.render('score_line.html') ``` 最后,你可以在命令行中运行这个Python脚本,生成一个HTML文件。在浏览器中打开这个HTML文件,就可以看到你的可视化结果了。

相关推荐

最新推荐

recommend-type

Mysql 根据一个表数据更新另一个表的某些字段(sql语句)

主要介绍了Mysql 根据一个表数据更新另一个表的某些字段,本文给出了sql语句,感兴趣的朋友可以跟随脚本之家小编一起学习吧
recommend-type

MySQL下将一个表的数据插入到另外一个表的实现语句

开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,虽然这个实现起来非常简单,但是还是会困扰许多新手,因此专门发一篇文章备查。
recommend-type

mysql 一次向表中插入多条数据实例讲解

主要介绍了mysql 一次向表中插入多条数据实例讲解的相关资料,需要的朋友可以参考下
recommend-type

一个Shell小脚本精准统计Mysql每张表的行数实现

主要介绍了一个Shell小脚本精准统计Mysql每张表的行数实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

mysql更新一个表里的字段等于另一个表某字段的值实例

下面小编就为大家带来一篇mysql更新一个表里的字段等于另一个表某字段的值实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。