一谈到Web页面,可能大家首先想到就是HTML,CSS或JavaScript。

本次小F就给大家介绍一下如何用Python制作一个数据可视化网页,使用到的是Streamlit库。

轻松的将一个Excel数据文件转换为一个Web页面,提供给所有人在线查看。

每当你对Excel文件进行更改保存,Web页面还能够实时进行更新,确实挺不错的。

Streamlit的文档和教程地址如下。

https://docs.streamlit.io/en/stable/

https://streamlit.io/gallery

相关的API使用可以去文档中查看,都有详细的解释。

项目一共有三个文件,程序、图片、Excel表格数据。

数据情况如下,某公司年底问卷调查(虚构数据),各相关部门对生产部门在工作协作上的打分情况。

有效数据总计约676条,匿名问卷,包含问卷填写人所属部门,年龄,评分。

最后对各部门参与人数进行汇总计数(右侧数据)。

首先来安装一下相关的Python库,使用百度源。

# 安装streamlit
pip install streamlit -i https://mirror.baidu.com/pypi/simple/# 安装Plotly Express
pip install plotly_express==0.4.0 -i https://mirror.baidu.com/pypi/simple/# 安装xlrd
pip install xlrd==1.2.0 -i https://mirror.baidu.com/pypi/simple/

因为我们的数据文件是xlsx格式,最新版的xlrd,只支持xls文件。

所以需要指定xlrd版本为1.2.0,这样pandas才能成功读取数据。

命令行终端启动网页。

# 命令行终端打开文件所在路径
cd Excel_Webapp# 运行网页
streamlit run app.py

成功以后会有提示,并且浏览器会自动弹出网页。

如果没有自动弹出,可以直接访问上图中的地址。

得到结果如下,一个数据可视化网页出来了。

目前只能在本地访问查看,如果你想放在网上,可以通过服务器部署,需要自行去研究~

下面我们来看看具体的代码吧。

import pandas as pd
import streamlit as st
import plotly.express as px
from PIL import Image# 设置网页名称
st.set_page_config(page_title='调查结果')
# 设置网页标题
st.header('2020年调查问卷')
# 设置网页子标题
st.subheader('2020年各部门对生产部的评分情况')

导入相关的Python包,pandas处理数据,streamlit用来生成网页,plotly.express则是生成图表,PIL读取图片。

设置了网页名称,以及网页里的标题和子标题。

# 读取数据
excel_file = '各部门对生产部的评分情况.xlsx'
sheet_name = 'DATA'df = pd.read_excel(excel_file,sheet_name=sheet_name,usecols='B:D',header=3)# 此处为各部门参加问卷调查人数
df_participants = pd.read_excel(excel_file,sheet_name=sheet_name,usecols='F:G',header=3)
df_participants.dropna(inplace=True)# streamlit的多重选择(选项数据)
department = df['部门'].unique().tolist()
# streamlit的滑动条(年龄数据)
ages = df['年龄'].unique().tolist()

读取Excel表格数据,并且得出年龄分布以及部门情况,一共是有5个部门。

添加滑动条和多重选择的数据选项。

# 滑动条, 最大值、最小值、区间值
age_selection = st.slider('年龄:',min_value=min(ages),max_value=max(ages),value=(min(ages), max(ages)))# 多重选择, 默认全选
department_selection = st.multiselect('部门:',department,default=department)

结果如下。

年龄是从23至65,部门则是市场、物流、采购、销售、财务这几个。

由于滑动条和多重选择是可变的,需要根据过滤条件得出最终数据。

# 根据选择过滤数据
mask = (df['年龄'].between(*age_selection)) & (df['部门'].isin(department_selection))
number_of_result = df[mask].shape[0]# 根据筛选条件, 得到有效数据
st.markdown(f'*有效数据: {number_of_result}*')# 根据选择分组数据
df_grouped = df[mask].groupby(by=['评分']).count()[['年龄']]
df_grouped = df_grouped.rename(columns={'年龄': '计数'})
df_grouped = df_grouped.reset_index()

得到数据便可以绘制柱状图了。

# 绘制柱状图, 配置相关参数
bar_chart = px.bar(df_grouped,x='评分',y='计数',text='计数',color_discrete_sequence=['#F63366']*len(df_grouped),template='plotly_white')
st.plotly_chart(bar_chart)

使用plotly绘制柱状图。

当我们在网页调整选项时,有效数据和柱状图也会随之变化。

此外streamlit还可以给网页添加图片和交互式表格。

# 添加图片和交互式表格
col1, col2 = st.beta_columns(2)
image = Image.open('survey.jpg')
col1.image(image,caption='Designed by 小F / 法纳斯特',use_column_width=True)
col2.dataframe(df[mask], width=300)

得到结果如下。

可以看到表格有一个滑动条,可以使用鼠标滚轮滚动查看。

最后便是绘制一个饼图啦!

# 绘制饼图
pie_chart = px.pie(df_participants,title='总的参加人数',values='人数',names='公司部门')
st.plotly_chart(pie_chart)

结果如下。

各部门参加问卷调查的人数,也是一个可以交互的图表。

将销售、市场、物流取消掉,我们就能看出财务和采购参加问卷调查的人数占比情况。

推荐阅读

Pandas处理数据太慢,来试试Polars吧!

懒人必备!只需一行代码,就能导入所有的Python库

绝!关于pip的15个使用小技巧

介绍10个常用的Python内置函数,99.99%的人都在用!

可能是全网最完整的 Python 操作 Excel库总结!

没想到,Python还可以制作Web可视化页面!相关推荐

  1. Python 的一万种用法:制作 Web 可视化页面

    来源 | 法纳斯特 头图 | 下载于ICphoto 一谈到Web页面,可能大家首先想到就是HTML.CSS或JavaScript. 本次小F给大家介绍一下如何用Python制作一个数据可视化网页,使用 ...

  2. python slice函数画高维图_没想到Python还能画六维图

    我们的大脑通常最多能感知三维空间,超过三维就很难想象了.尽管是三维,理解起来也很费劲,所以大多数情况下都使用二维平面. 来自维基百科 不过,我们仍然可以绘制出多维空间,今天就来用 Python 的 p ...

  3. python gui构造openai api可视化页面

    背景:最近chatgpt很火,前几天也想注册体验一下,一顿操作之后,卡在该国家不支持.最后发现自己的代理开在香港,改在漂亮国就行了.虽然有chatgpt可以用,但是小平是自己封装了一个,我不能输.正好 ...

  4. python做动态课件素材_万万没想到,还能这么玩!用 Python 生成动态 PPT

    在工作的过程中,我们会发现那些能够把知识.成果讲透的人很多都会做动态图表. 这篇文章就介绍了 Python 中一种简单的动态图表制作方法,这样生成的动图就可以丰富我们的PPT啦~ 数据暴增的年代,数据 ...

  5. 用 Python 读取 Excel 自动生成 Web 可视化页面!

    大家好,我是Sitin涛哥! 一谈到Web页面,可能大家首先想到就是HTML,CSS或JavaScript. 本次就给大家介绍一下如何用Python制作一个数据可视化网页,使用到的是Streamlit ...

  6. kafka删除队列_没想到 Kafka 还会这样问,学会这些带你轻松搞定大厂面试!

    一.前言 自上次师兄遭受了面试官 「Kafka」 的暴击追问后,回来发奋图强,企图"「吊打面试官」",奈何还是面试官套路深啊,最近的面试,又被问到「知识盲点」了!让我们一起来看看, ...

  7. Python迎来30岁生日,先驱Pablo Galindo:没想到Python这么流行

    公众号 "菜鸟学Python", 设为 "星标" 和30w+一起学Python! 新智元报道 来源:reddit 编辑:key Python 30岁了!就在生日 ...

  8. 没想到MySQL还会问这些...

    文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在前一阵子,大哥问过我:"你知道MySQL的原子性是怎么保证的吗 ...

  9. 大西瓜卖了130多个!没想到后面还结出更多惊喜

    一.西瓜里有虫 本周赶上了大西瓜的热度,由Nowpaper杨老师在B站直播开发的<合成大西瓜>目前在我们的资源商店上卖出了130+了! 随着购买的人增多,游戏中的BUG也被大家给发现了,一 ...

最新文章

  1. 爬虫或恶意攻击,如何动态屏蔽IP地址?
  2. 什么是Karush-Kuhn-Tucker 最优化条件 (KKT 条件) 三个人名 独立发现的最优化条件
  3. 万能素材库_高中作文经典人物万能素材积累
  4. pytorch1.0.1_将Spring 3.x和Hibernate 3.x升级到Spring Platform 1.0.1(Spring + hibernate 4.x)
  5. UVA_11922 Permutation Transformer 【splay树】
  6. 接入Tinker热修复和踩坑
  7. CSS DIV Shadow
  8. mysql定时器每月执行一次_MySQL定时器可以设置执行次数吗
  9. matlab虚拟现实之V-Realm Builder2复制技巧(修改)
  10. centos redis make 报错_ubuntu 18.04 搭建 redis 实验环境
  11. 浅谈 Redis 与 MySQL 的耦合性以及利用管道完成 MySQL 到 Redis 的高效迁移
  12. amazon s3_在Amazon S3上托管静态网站
  13. 多速率多传感器数据融合估计(一)
  14. Aspose.Words从零创建OOXML图表
  15. ssm使用注解配置多数据源
  16. 计算机毕业设计Android的手机点名签到学生请假考勤系统(源码+系统+mysql数据库+Lw文档)
  17. 开放下载 | 2022阿里妈妈技术年刊来啦!
  18. 浅谈达梦数据库与ORACLE数据库差异点及常用SQL总结
  19. 创业者该如何选择区块链游戏赛道?
  20. 【HBase】HBase 过滤器

热门文章

  1. 编程界的“马太效应”,是什么在阻止你变得更加优秀?
  2. 微软为何痛失移动操作系统?
  3. 反思相信谁的评价:一直的坚定的不移的相信自己对自己的评价 相信自己是多么的重要
  4. matlab比例环节仿真例子,典型环节的MATLAB仿真
  5. html教程自适应,Html-自适应
  6. php数据库根据相似度排序,php数组字段相似度排序
  7. PHP判断变量内容是什么编码(gbk?utf-8) mb_detect_encoding
  8. python按字节读取文件_Python读取二进制文件
  9. oracle子查询子查询,Oracle 单行子查询和多行子查询
  10. java获取本地外网ip地址