网页数据抓取软件(一下如何用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余人。添加时最好的备注方式是:来源+兴趣方向,方便找到志同道合的朋友

  方法,发下图微信,长按识别,后台回复:加群;

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线