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

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

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

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

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

运行程序,浏览器查看,点击下载按钮,下载完成


相关文章
|
3月前
|
并行计算 前端开发 JavaScript
Web Worker:让前端飞起来的隐形引擎
在现代 Web 开发中,前端性能优化是一个至关重要的课题,尤其是对于计算密集型的应用,如图像处理、视频处理、大规模数据分析等任务。单线程的 JavaScript 引擎常常成为性能瓶颈,导致应用变得迟缓。Web Worker,作为一种强大的技术,使得前端能够在后台进行并行计算,从而实现高效的任务处理,不影响主线程的运行和用户的交互体验。
419 108
|
4月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
560 0
|
5月前
|
Web App开发 编解码 移动开发
零基础音视频入门:你所不知道的Web前端音视频知识
本文回顾了Web端音视频的发展历程,同时还介绍了视频的编码、帧率、比特率等概念,提到了Canvas作为视频播放的替代方案,以及FFmpeg在音视频处理中的重要作用等知识。
175 1
|
7月前
|
JSON 人工智能 前端开发
用markdown语法制作一个好看的网址导航页面(markdown-web-nav)
这是一篇关于创建网址导航页面的工具分享文章。作者介绍了从手动编写HTML代码到开发可视化工具 *markdown-web-nav* 的历程,旨在简化网址管理与导航页面生成的过程。该工具支持新增、编辑和删除网址数据,通过导入/导出JSON文件、实时预览Markdown效果以及一键复制等功能,让用户轻松制作美观的网站导航页面。文章还提供了详细的操作步骤及常见问题解答,如还原数据、获取网站图标链接等,适合不同技术水平的用户使用。
383 28
|
7月前
|
移动开发 前端开发 JavaScript
H5 页面与 Web 页面的制作方法
H5页面制作利用HTML5、CSS3和JavaScript技术,结合H5编辑器或框架(如Adobe Dreamweaver、Ionic),注重移动设备兼容性与响应式布局。Web页面制作则基于传统HTML、CSS和JavaScript,借助文本编辑器或IDE完成开发。两者区别在于技术版本、交互性和浏览器支持:H5更互动、现代,但可能不兼容旧浏览器;Web页面更静态、兼容性广。根据需求选择:高交互选H5,广泛兼容选Web。
1025 6
|
9月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
274 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
8月前
|
人工智能 数据可视化 前端开发
Probly:开源 AI Excel表格工具,交互式生成数据分析结果与可视化图表
Probly 是一款结合电子表格功能与 Python 数据分析能力的 AI 工具,支持在浏览器中运行 Python 代码,提供交互式电子表格、数据可视化和智能分析建议,适合需要强大数据分析功能又希望操作简便的用户。
1101 2
|
12月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
264 6
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
371 5
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1019 14
下一篇
oss云网关配置