数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

所属的专栏:数据分析系统化教学,零基础到进阶实战

景天的主页:景天科技苑

文章目录

  • Streamlit
    • 什么是streamlit
    • 数据科学家为何要使用Streamlit?
    • 具体操作
      • 1.write()函数
      • 2.滑块组件slider
      • 3.文本框操作text_input
      • 4.多选框checkbox
      • 5.下拉框selectbox
      • 6.侧边栏sidebar
      • 7.单选按钮radio
      • 8.进度条progress
      • 9.文件上传下载

Streamlit

什么是streamlit

Streamlit是一个免费的开源框架,用于快速构建和共享漂亮的数据科学Web应用程序。它是一个基于Python的库,专为机器学习工程师设计。
数据分析工程师不是网络开发人员,他们对花几周时间学习使用这些框架来构建网络应用程序不感兴趣。
相反,他们需要一个更容易学习和使用的工具,只要它可以显示数据并收集分析/建模所需的参数。Streamlit允许您仅用几行代码创建一个外观惊艳的应用程序。

数据科学家为何要使用Streamlit?

Streamlit最大的好处是,您甚至不需要了解Web开发的基础知识就可以开始或创建您的第一个Web应用程序。
因此,如果你是一个对数据科学感兴趣的人,你想轻松、快速地部署你的模型,并且只需要几行代码,Streamlit是一个很好的选择。

优势:

  • 不需要具备前端知识即可应用streamlit。
  • 学习成本极低
    • 你不需要花费几天或几个月的时间来创建一个Web应用,你可以在几个小时甚至几分钟内创建一个非常漂亮的机器学习或数据科学应用。
  • 它兼容大多数Python库
    • 例如panda、matplotlib、seaborn、plotly、Keras、PyTorch等。

环境安装

pip install streamlit

在这里插入图片描述

#测试安装是否正常:

streamlit hello

随便输入个邮箱,即可显示出访问url
在这里插入图片描述

程序运行

streamlit run xxx.py

具体操作

1.write()函数

可以通过该函数向看板上输出显示指定内容,每一个write函数,单独占一行显示

import pandas as pd
import streamlit as stst.write("1. write()函数基本操作")
#展示表格st.write(pd.DataFrame({'第一列': [1,2,3,4,5],'第二列': [6,7,8,9,10]}
))

在这里插入图片描述

运行:
在这里插入图片描述

在浏览器查看:
直接出图表,是不是很方便!!!
在这里插入图片描述

2.滑块组件slider

“slider"的中文意思是"滑块”。它是一种用户界面元素,通常用于选择一个数值范围或从给定选项中选择一个值。
滑块的外观通常是一个可拖动的滑块,用户可以通过移动滑块来选择所需的值。
滑块可以在许多应用程序和网页中使用,例如调整音量、选择年龄范围或设置某个参数的值。

import streamlit as stst.write("st.slider()滑块")
#slider参数为滑块自定义名称,返回值为滑动到的数值
num = st.slider("num")
st.write(num, "squred is", num*num)

在这里插入图片描述

运行程序,浏览器展示
在这里插入图片描述

3.文本框操作text_input

页面显示输入文本框,看下参数
在这里插入图片描述

import streamlit as stst.write("文本框操作")
#文本框输入,回车结束
st.text_input("your name", key="name")
st.text_input("your age", key="age")# 显示输入的值,根据key键来获取
st.write(st.session_state.name,st.session_state.age)

运行程序,浏览器展示
在这里插入图片描述

4.多选框checkbox

import streamlit as st
import pandas as pd
import numpy as npst.write("checkbox()多选框")
# 点击checkbox后返回True,未点击为False
ex1 = st.checkbox('显示/不显示 表格')
if ex1:df = pd.DataFrame(np.random.randn(20, 3),columns=['a', 'b', 'c'])st.write(df)ex2 = st.checkbox('显示/不显示 滑块')
if ex2:x = st.slider('x')st.write(x)

运行程序,浏览器展示
在这里插入图片描述

5.下拉框selectbox

import streamlit as st#返回值为选中的内容信息
option = st.selectbox(label='请选择省份信息:',options=['河北','山东','河南','吉林']
)st.write("您选择的是: ", option)

在这里插入图片描述

6.侧边栏sidebar

st.sidebar.后面跟侧边栏显示的内容组件

import streamlit as st#侧边栏下拉框
add_selectbox = st.sidebar.selectbox(label="通讯方式选项",options=('微信','QQ','手机','邮件')
)
#获取下拉选项
st.write("下拉选项: ", add_selectbox)#侧边栏滑块
add_slider = st.sidebar.slider(label="选择一个范围的值",min_value=0.0, max_value=100.0, value=(25.0, 75.0)
)
#获取滑块的值
st.write("值的范围: ", add_slider)

在这里插入图片描述

7.单选按钮radio

import streamlit as st# st.columns参数表示列数,表示要在页面展示的列数
left_column, right_column = st.columns(2)  #显示两列布局容器
# 左边列设置,使用with
with left_column:# 返回值为选中的选项值chosen = st.radio(label='电脑品牌',options=('苹果', '华为', '小米'))st.write(f'你选择的品牌是: {chosen}')# 右边列设置
with right_column:# 返回值为选中的选项值chosen = st.radio(label='手机品牌',options=('苹果', '华为', '小米'))st.write(f'你选择的品牌是: {chosen}')

在这里插入图片描述

8.进度条progress

import streamlit as st
import time
st.write("模拟长时间的计算...")# 创建一个动态显示数据的容器,用于动态显示进度条的进度数值
value = st.empty()
#创建进度条,进度条初始值为0
bar = st.progress(0)
for i in range(100):#这是动态显示的数值value.text(f'Iteration {i+1}')# 更新进度条bar.progress(i+1)time.sleep(0.1)
st.write('运行结束!')

在这里插入图片描述

9.文件上传下载

(1)文件上传:

st.file_uploader()

看下参数
在这里插入图片描述
参数介绍
在这里插入图片描述

上传penguins.csv文件,然后选择不同的两个企鹅特征,用散点图观察其分布形式。
看下源文件
在这里插入图片描述

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
st.write('上传penguins.csv文件,然后选择不同的两个企鹅特征,用散点图观察其分布形式。')#创建文件上传组件,如果上传失败则返回None,上传下载都可以搞
upload_file = st.file_uploader(label = "上传数据集CSV文件" #自定义文件上传提示信息
)#判断上传文件是否成功
if upload_file:df = pd.read_csv(upload_file)st.write('显示前5行数据:',df.head(5))st.success("上传文件成功!")
else:st.stop() # 退出#制作下拉框,用于选择企鹅的不同特征
x_var = st.selectbox(label = "请选择:",options = ['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g']
)
#制作下拉框,用于选择企鹅的不同特征
y_var = st.selectbox(label = "请选择",options = ['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g']
)fig, ax = plt.subplots() #返回值:画布、画布子图例
#绘制散点图ax = sns.scatterplot(data=df,x=x_var,y=y_var,hue='species')
plt.xlabel(x_var)
plt.ylabel(y_var)
plt.title('Penguins Scatter Plot')#显示画布
st.pyplot(fig)

在这里插入图片描述

在这里插入图片描述

可以选择企鹅的不同特征,来绘制图
在这里插入图片描述

默认上传单个文件最大为200M,我们可以做修改
要在运行程序当前目录下,创建个.streamlit目录,里面创建个config.toml文件
内容如下,设置上传文件大小限制,单位是M

[server]
maxUploadSize = 4500

在这里插入图片描述

案例:保存上传的文件到本地

import streamlit as st#创建文件上传组件,如果上传失败则返回None
upload_file = st.file_uploader(label = "上传图片" #自定义文件上传提示信息,)#判断上传文件是否成功
if upload_file:with open('上传图片.png','wb') as file:#注意,保存文件要保存上传对象.getvalue()file.write(upload_file.getvalue())st.success("上传文件成功!")
else:st.stop() # 退出

在这里插入图片描述

上传成功

在这里插入图片描述

(2)文件下载:

st.download_button()

看下参数
在这里插入图片描述
参数介绍
在这里插入图片描述

案例:

import streamlit as stst.write('下载playwright.png文件')with open('playwright.png','rb') as file:st.download_button(label='download_button',data=file,file_name="playwright.png",mime='image/png')

运行程序,浏览器查看,点击下载按钮,下载完成
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Godot 学习笔记(5):国际化多语言翻译,包含常用10种语言机翻!

文章目录 前言国际化翻译Api选择小牛测试 语言选择代码逻辑实体对象翻译帮助类导出模板读取文件翻译测试多语言测试 综合翻译文件准备测试代码测试结果 完整代码实体类翻译帮助类网络帮助类 最终效果翻译前翻译中翻译后 总结 前言 为了面向更大的市场,国际化是肯定…

毫米波雷达简介

毫米波雷达简介 附赠自动驾驶学习资料和量产经验:链接 1. 概述 1.1 发展历史 RADAR是RAdio Detection And Ranging的缩写。 1936年1月,英国架起了第一个雷达站,用于监测德国战机。从此之后,雷达技术开始蓬勃发展。 雷达的频段很…

软件测试基础(1)

软件测试的生命周期 软件测试的生命周期: 需求分析 -> 测试计划 -> 测试设计, 测试开发 -> 测试执行 -> 测试评估. 软件测试 & 软件开发的生命周期 1.需求阶段 测试人员了解需求, 对需求进行分解, 得出测试需求. 2.计划阶段 根据需求编写测试计划/测试方案 3…

Web核心

目录 Web核心HTTP概念:协议特点:请求数据格式响应数据格式 Tomcat简介基本使用配置部署项目IDEA中创建 Maven Web 项目 IDEA使用Tomcat Servlet简介快速入门执行流程生命周期体系结构Servlet urlPattern配置一个Servlet,可以配置多个 urlPatt…

java-springboot实现图片的上传

我们在resources目录下创建image目录来存放上传的图片 service层懒的写,就都写controller层了。 RestController RequestMapping("/upload") public class upload {PostMapping("/pic")public String upLoad(RequestParam("multipartFile…

PTA金字塔游戏

幼儿园里真热闹,老师带着孩子们做一个名叫金字塔的游戏,游戏规则如下: 首先,老师把孩子们按身高从高到矮排列,选出最高的做队长,当金字塔的塔顶,之后在其余小朋友里选出两个最高的,…

12个好玩又实用的Python迭代器和生成器实例

大家好!今天我们要来一场编程奇趣之旅,一起揭秘那些既让代码变得更简洁高效,又能带你领略Python魅力的12个迭代器和生成器实例。别担心,我会用轻松易懂的语言帮你掌握这些小技巧,准备好你的笔记本,咱们这就…

MySQL 练习三

select sname,sex,class from student;select distinct depart from teacher;select * from student;select * from score where degree between 60 and 80;select * from score where degree in(85,86,88);select * from student where class’95031’ or sex’女’;select * …

transductive transfer learning

如图所示,传统的机器学习方法尝试去学习每一种任务,而迁移学习则根据已经学习处理过的任务推广到有较少训练数据的新任务上。在传统的机器学习中, transductive learning指所有测试数据在训练时被要求看到的情况,并且对于新的数据…

谈谈计算机科学与技术这门专业

原文地址:谈谈计算机科学与技术这门专业 - Pleasure的博客 下面是正文内容: 前言 这是一篇个人性质的笔记。 专业代码080901 或许也可以理解为计算机科学与技术专业大致都要经历的学习路线(主要还是根据本校)。 正文 主要专业课程…

Redis中的事件(二)

文件事件 文件事件的处理器 Redis为文件事件编写了多个处理器,这些事件处理器分别用于实现不同的网络通信需求,比如说: 1.为了对连接服务器的各个客户端进行应答,服务器要为监听套接字关联连接应答处理器2.为了接收客户端传来的命令请求&a…

数据结构与算法分析引论1

1.解决问题的算法有很多,但是在输入不同的情况下,不同算法之间的差异也很大,我们总是追求一个更快、更有效的方法。比如说普通的依次查找和二分查找,两者的差异就很大。我们使用大O表示法来表示算法的速度。依次查找就是O(n)&…

Fiddler抓包工具之Fiddler界面主菜单功能介绍

Fiddler界面主菜单功能介绍 File菜单 File菜单中的命令主要支持完成通过Fiddler来启动和停止web流量的捕获(capture),也可以加载或存储捕获的流量 (1)Capture Traffic:默认勾选,勾选此项才可抓包&#xff…

USB HOST移植

一、USB简介 USB有USB1.0/1.1/2.0/3.0多个版本,标准USB由4根线组成,VCC,GND,D,D-,其中D和D-是数据线,采用差分传输。 在USB主机上,D-和D都是接了15K的电阻到地,所以在没有设备接入的时候,D、D-均是低电平。…

Scala环境搭建

目录 前言 Scala的概述 Scala环境的搭建 一、配置Windows的JAVA环境 二、配置Windows的Scala环境 编写一个Scala程序 前言 学习Scala最好先掌握Java基础及高级部分知识,文章正文中会提到Scala与Java的联系,简单来讲Scala好比是Java的加强版&#x…

【Java多线程(2)】Thread常见方法和线程状态

目录 一、Thread类及常见方法 1. join() 等待一个线程 2. currentThread() 获取当前线程引用 3. sleep() 休眠当前线程 二、线程的状态 1. 线程的所有状态 2. 状态转移 一、Thread类及常见方法 接上文:多线程(1)http://t.csdnimg.cn/…

git-怎样把连续的多个commit合并成一个?

Git怎样把连续的多个commit合并成一个? Git怎样把连续的多个commit合并成一个? 参考URL: https://www.jianshu.com/p/5b4054b5b29e 查看git日志 git log --graph比如下图的commit 历史,想要把bai “Second change” 和 “Third change” 这…

cinder学习小结

1 官方文档 翻译官方文档学习 链接Cinder Administration — cinder 22.1.0.dev97 documentation (openstack.org) 1.1 镜像压缩加速 在cinder.conf配allow_compression_on_image_upload True可打开开关 compression_format xxx可设置镜像压缩格式,可为gzip 1.2 …

手撕算法-数组中的第K个最大元素

描述 分析 使用小根堆&#xff0c;堆元素控制在k个&#xff0c;遍历数组构建堆&#xff0c;最后堆顶就是第K个最大的元素。 代码 class Solution {public int findKthLargest(int[] nums, int k) {// 小根堆PriorityQueue<Integer> queue new PriorityQueue<>…

【python从入门到精通】-- 第二战:注释和有关量的解释

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…