网页数据抓取软件(一下如何用Python制作一个数据可视化网页,使用到的是Streamlit库 )
优采云 发布时间: 2022-01-13 03:07网页数据抓取软件(一下如何用Python制作一个数据可视化网页,使用到的是Streamlit库
)
大家好,说到网页,你首先想到的可能是 HTML、CSS 或 JavaScript。
在本文中,我将向您展示如何使用 Streamlit 库在 Python 中制作数据可视化网页。它可以轻松地将 Excel 数据文件转换成网页供大家在线查看。
注:文末有技术交流群,欢迎加入
每当您将更改保存到 Excel 文件时,网页也可以实时更新,这真是太好了。
Streamlit 的文档和教程地址如下。
的
的
相关的 API 使用可以在文档中查看,有详细的解释。
项目共有三个文件,程序,图片,Excel表格数据。
数据如下,某公司年末问卷调查(虚构数据),相关部门对生产部门工作配合的评分。
共有约676份有效数据,匿名问卷,包括受访者的部门、年龄和分数。最后统计每个部门的参与者总数(右侧数据)。
首先我们安装相关的Python库,使用百度源码。
# 安装streamlit<br />pip install streamlit -i https://mirror.baidu.com/pypi/simple/<br /><br /># 安装Plotly Express<br />pip install plotly_express==0.4.0 -i https://mirror.baidu.com/pypi/simple/<br /><br /># 安装xlrd<br />pip install xlrd==1.2.0 -i https://mirror.baidu.com/pypi/simple/<br />
因为我们的数据文件是xlsx格式的,所以最新版本的xlrd只支持xls文件。
所以需要指定xlrd版本为1.2.0,这样pandas才能成功读取数据。
命令行终端启动网页。
# 命令行终端打开文件所在路径<br />cd Excel_Webapp<br /><br /># 运行网页<br />streamlit run app.py<br />
成功后会有提示,浏览器会自动弹出网页。
如果没有自动弹出,可以直接访问上图中的地址。
结果如下,出来一个数据可视化网页。
目前只能在本地访问和查看。如果要上线,可以通过服务器部署。需要自己去研究~
我们来看看具体的代码。
import pandas as pd<br />import streamlit as st<br />import plotly.express as px<br />from PIL import Image<br /><br /># 设置网页名称<br />st.set_page_config(page_title='调查结果')<br /># 设置网页标题<br />st.header('2020年调查问卷')<br /># 设置网页子标题<br />st.subheader('2020年各部门对生产部的评分情况')<br />
导入相关Python包,pandas处理数据,streamlit生成网页,plotly.express生成图表,PIL读取图片。
设置页面名称,以及页面的标题和副标题。
# 读取数据<br />excel_file = '各部门对生产部的评分情况.xlsx'<br />sheet_name = 'DATA'<br /><br />df = pd.read_excel(excel_file,<br /> sheet_name=sheet_name,<br /> usecols='B:D',<br /> header=3)<br /><br /># 此处为各部门参加问卷调查人数<br />df_participants = pd.read_excel(excel_file,<br /> sheet_name=sheet_name,<br /> usecols='F:G',<br /> header=3)<br />df_participants.dropna(inplace=True)<br /><br /># streamlit的多重选择(选项数据)<br />department = df['部门'].unique().tolist()<br /># streamlit的滑动条(年龄数据)<br />ages = df['年龄'].unique().tolist()<br />
读取Excel表格数据,得到年龄分布和部门情况,一共5个部门。
添加了滑块和多选数据选项。
# 滑动条, 最大值、最小值、区间值<br />age_selection = st.slider('年龄:',<br /> min_value=min(ages),<br /> max_value=max(ages),<br /> value=(min(ages), max(ages)))<br /><br /># 多重选择, 默认全选<br />department_selection = st.multiselect('部门:',<br /> department,<br /> default=department)<br />
结果如下。
年龄从23岁到65岁,部门分别是营销、物流、采购、销售和财务。
由于滑块和多选是可变的,因此需要根据过滤条件得出最终数据。
# 根据选择过滤数据<br />mask = (df['年龄'].between(*age_selection)) & (df['部门'].isin(department_selection))<br />number_of_result = df[mask].shape[0]<br /><br /># 根据筛选条件, 得到有效数据<br />st.markdown(f'*有效数据: {number_of_result}*')<br /><br /># 根据选择分组数据<br />df_grouped = df[mask].groupby(by=['评分']).count()[['年龄']]<br />df_grouped = df_grouped.rename(columns={'年龄': '计数'})<br />df_grouped = df_grouped.reset_index()<br />
一旦获得数据,就可以绘制直方图。
# 绘制柱状图, 配置相关参数<br />bar_chart = px.bar(df_grouped,<br /> x='评分',<br /> y='计数',<br /> text='计数',<br /> color_discrete_sequence=['#F63366']*len(df_grouped),<br /> template='plotly_white')<br />st.plotly_chart(bar_chart)<br />
使用 plotly 绘制直方图。
当我们调整网页上的选项时,有效数据和直方图也会发生变化。
此外,streamlit 可以在网页中添加图片和交互式表格。
最后,画一个饼图!
# 绘制饼图<br />pie_chart = px.pie(df_participants,<br /> title='总的参加人数',<br /> values='人数',<br /> names='公司部门')<br />st.plotly_chart(pie_chart)<br />
结果如下。
每个部门参与问卷的人数也是一个交互式图表。
通过取消销售、营销和物流,我们可以看到参与调查的人在财务和采购方面的比例。
好了,本期的分享到此结束,感兴趣的朋友可以自行实践学习。
技术交流
目前已开设技术交流群,成员2000余人。添加时最好的备注方式是:来源+兴趣方向,方便找到志同道合的朋友
方法,发下图微信,长按识别,后台回复:加群;