数据分析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 st

st.write("1. write()函数基本操作")
#展示表格

st.write(pd.DataFrame({
    '第一列': [1,2,3,4,5],
    '第二列': [6,7,8,9,10]}
))

在这里插入图片描述

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

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

2.滑块组件slider

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

import streamlit as st

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

在这里插入图片描述

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

3.文本框操作text_input

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

import streamlit as st

st.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 np

st.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 st

st.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'
    )

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue实现的学校田径运动会管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

CommunityToolkit.Mvvm----配置

一、介绍: CommunityToolkit.Mvvm 包(又名 MVVM 工具包,以前称为 Microsoft.Toolkit.Mvvm)是一个现代、快速和模块化的 MVVM 库。 它是 .NET 社区工具包的一部分,围绕以下原则生成: 独立于平台和运行时 - …

MySQL MHA高可用配置以及故障切换

目录 什么是 MHA 什么是 MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。解决主从架构中的主服务器的单点问题 MySQL故障切换过程中,MHA能做到0-30秒内自动…

计算机网络:数据链路层 - 封装成帧 透明传输 差错检测

计算机网络:数据链路层 - 封装成帧 & 透明传输 & 差错检测 数据链路层概述封装成帧透明传输差错检测 数据链路层概述 从数据链路层来看,主机 H1 到 H2 的通信可以看成是在四段不同的链路上的通信组成的,所谓链路就是从一个节点到相邻…

python distribute是什么

Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看一下下面这个图就明白了: 可以看到distribute是setuptools的替代方案,pip是easy_install的替代方案。 Distribute提供一…

古代书法名家墨迹范本,中国法书碑帖图片合集

一、图片描述 在书法作品里,什么是法书?这是书法用语,又称法帖,学习书法可以作为楷模的范本,以及对古代名家墨迹的敬称,或以此誉称表达对书法作者的尊重之意,法书墨迹是最能反映古代书法艺术面…

Windows-安装infercnv包(自备)

目录 安装基础 ①安装JAGS a,找到适配版本 b,install for me only安装路径 ②安装"rjags"包 ③安装inferCNV 安装基础 版本: R version 4.2.2 (2022-10-31 ucrt) -- "Innocent and Trusting"安装的JAGS版本为JAGS 4.3.1 首…

Nginx_简介 + Linux系统下详细安装教程指路

安装教程指路 可参看该视频【尚硅谷Nginx教程(亿级流量nginx架构设计)】 https://www.bilibili.com/video/BV1yS4y1N76R/?p2&share_sourcecopy_web&vd_source4c2f33f3ba1a0dd45bfdf574befd0069 的p2-p7。从安装centos虚拟机到在虚拟机上安装ng…

考研数学|听完一遍汤家凤基础,1800都没思路,怎么办?

看了我这篇回答,保证你可以顺利的做1800题! 如果你听了汤家凤老师的课,但是做题没思路,请不要担心,也不要急着换老师,你很有可能是方法错了。 请你反思一下: 1、你是不是听完课立刻就去做题。…

Qt QWebSocket讲解

QWebSocket 是 Qt 框架中用于处理 WebSocket 通信的类。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。这使得客户端和服务器之间可以进行实时交互,而无需频繁地建立和关闭连接。 QWebSocket 的基本使用 创建 QWebSocket 对象: 你可以创建一个…

LoRa物联网行业解决方案 1

1 行业应用 智慧停车 智能抄表 智慧牧场 智能生产 智能物流 智能健康 2 物联网智慧农场项目需求 3 为什么选lora? 4 设计 5 模块性能参数 sx1278 lora扩频无线模块 SEMTECH公司SX1278芯片 LoRa 扩频技术 通信距离10000米 SPI通信接口 mcu选型 硬件平台介绍 …

【Java多线程】7——阻塞队列线程池

7 线程池 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记仓库👉https://github.com/A-BigTree/tree-learning-notes 个人主页👉https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~&#x…

卷积篇 | 引入可改变核卷积AKConv:具有任意采样形状和任意数目参数的卷积核

前言:Hello大家好,我是小哥谈。可改变核卷积(AKConv)是一种深度学习中的卷积神经网络(CNN)结构,它可以根据需要自适应地改变其卷积核。AKConv相对于传统的卷积神经网络,具有更高的灵活性和适应性,可以在不同的任务和数据集上实现更好的性能。🌈 目录 🚀1…

【SpringBoot】-- Spring Validation参数校验框架

SPringle Validation是Spring提供的一个参数校验框架&#xff0c;使用预定义的注解完成参数校验。 一、自定义参数校验 1、引入Spring Valiation依赖 <!-- validation依赖--><dependency><groupId>org.springframework.boot</groupId><arti…

提升 RAG 效果的实践

提升 RAG 效果的实践 0. 引言1. 测试数据2. cohere/embed-multilingual-v3.0 的几组测试结果2-1. 第1组测试2-2. 第2组测试 3. BAAI/bge-m3 的几组测试结果3-1. 第1组测试 0. 引言 AI 大语言模型的主要应用方式之一就是 RAG&#xff0c;接下来计划陆续分享工作中提升 RAG 效果…

数据库之迁移常规操作(Mongodb篇)

一、部署mongodb数据库。 注&#xff1a;采用docker容器进行安装 部署详情参考此文 》》https://blog.csdn.net/u014642921/article/details/136022683 二、在admin用户创建testdb文档插入两条数据 admin> db.testdb.insertMany([{name:"1",age:1,addr:"…

【IP组播】PIM-SM的RP、RPF校验

目录 一&#xff1a;PIM-SM的RP 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-SM和静态RP 4.配置动态RP 5.配置Anycast RP 二&#xff1a; RPF校验 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-DM 4.RPF校…

centos7.5安装gitlab-runner,配置CI/CD流水线

一般不建议gitlab-server和gitlab-runner装在同一台服务器 第一步&#xff1a;安装gitlab-runner,最好和gitlab实例版本一致 # 下载官方gitlab-runner安装脚本 curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | s…

springboot简历系统

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;简历系统当然也不能排除在外。简历系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用…

Sui现已推出共享对象删除功能

临时共享对象是Sui的一项新功能&#xff0c;使开发人员能够删除共享对象。这项新功能增加了开发人员可用的工具集&#xff0c;以及他们与共享对象交互的方式&#xff0c;提升了成本效率和对象管理的表达能力。 启用共享对象的临时创建和随后的删除功能&#xff0c;一旦其用途达…