Python streamlit指南,构建令人惊叹的可视化Web界面!

news2024/11/16 9:54:18

更多资料获取

📚 个人网站:ipengtao.com


在当今数据驱动的世界中,构建交互式、美观且高效的数据可视化应用变得至关重要。而Streamlit,作为Python生态系统中为开发者提供了轻松创建Web应用的利器。

本文将深入探讨Streamlit的方方面面,从基础使用到高级主题,从数据可视化到部署与分享,更涵盖了性能优化、安全性考虑等最佳实践。通过丰富的示例代码和详细解释,将能够全面了解Streamlit的强大功能,并在构建数据驱动应用时游刃有余。

Streamlit

Streamlit是一款用于构建数据科学和机器学习Web应用程序的Python库,以其简单性和直观性而备受青睐。其独特之处在于,通过仅需几行代码,开发者即可将数据转化为交互式、美观的Web应用,无需深厚的前端知识。

Streamlit的基础使用简单而强大,开发者可以使用一系列简洁的API来添加文本、表格、图表等元素。而在交互组件方面,Streamlit提供了按钮、输入框、下拉框等,让用户能够与应用进行实时的交互。这使得开发者能够轻松构建起动态、响应式的数据应用。

不仅如此,Streamlit还支持与主流数据可视化库(如Matplotlib、Plotly)的集成,让开发者可以灵活选择最适合其应用的可视化方式。同时,其对Markdown的支持使得文本展示更富表现力。

安装与基础使用

安装Streamlit

pip install streamlit

创建第一个简单的应用程序

# app.py
import streamlit as st

st.title("Hello Streamlit!")
st.write("这是一个简单的Streamlit应用程序。")

基本元素与布局

文本与标题

st.title("这是一个标题")
st.header("这是一个头部")
st.subheader("这是一个子标题")
st.text("这是一段文本")

图片与媒体

from PIL import Image

image = Image.open("example.jpg")
st.image(image, caption="这是一张图片", use_column_width=True)

表格

import pandas as pd

data = pd.DataFrame({"列1": [1, 2, 3], "列2": [4, 5, 6]})
st.dataframe(data)

交互组件

按钮与触发事件

if st.button("点击我"):
    st.write("按钮被点击了!")

输入框与表单

name = st.text_input("请输入你的名字")
st.write("你输入的名字是:", name)

下拉框与选择器

option = st.selectbox("选择一个选项", ["选项1", "选项2", "选项3"])
st.write("你选择的是:", option)

数据可视化

绘图与图表

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

 st.line_chart(list(zip(x, y)))

与Matplotlib、Plotly等集成

# Matplotlib
fig, ax = plt.subplots()
ax.plot(x, y)
st.pyplot(fig)
     
# Plotly
import plotly.express as px
fig = px.scatter(x=x, y=y, title="Scatter Plot")
st.plotly_chart(fig)

高级主题

自定义主题与样式

# 创建一个自定义主题
custom_theme = {
    "primaryColor": "#ff6347",
    "backgroundColor": "#f0f0f0",
    "secondaryBackgroundColor": "#d3d3d3",
    "textColor": "#121212",
    "font": "sans serif"
}
st.set_page_config(page_title="Custom Theme Example", page_icon="🚀", layout="wide", initial_sidebar_state="collapsed")
st.set_theme(custom_theme)

使用Markdown增强文本展示

st.markdown("## 这是Markdown标题")
st.markdown("这是 **加粗** 的文本")

多页面应用程序

# app.py
import streamlit as st

def main():
    st.title("多页面应用程序示例")
    page = st.sidebar.selectbox("选择一个页面", ["主页", "关于我们"])

    if page == "主页":
        st.write("欢迎来到主页!")
        elif page == "关于我们":
        st.write("这是关于我们页面。")

if __name__ == "__main__":
    main()

部署与分享

将应用程序部署到云端

# 使用Streamlit Sharing
streamlit deploy app.py

与他人共享你的应用

 - 通过Streamlit Sharing链接分享
 - 将应用程序嵌入到网站中

示例应用程序

构建一个简单的数据仪表盘

import numpy as np
import pandas as pd

# 生成示例数据
data = pd.DataFrame({
    '日期': pd.date_range('2023-01-01', periods=10, freq='D'),
    '销售额': np.random.randint(100, 1000, size=10)
})

# 创建仪表盘
st.title("销售数据仪表盘")
st.line_chart(data.set_index('日期'))

创建一个交互式数据分析工具

# 导入数据集
data = pd.read_csv('your_dataset.csv')

# 选择变量
selected_variable = st.selectbox("选择一个变量", data.columns)

# 绘制箱线图
st.title("箱线图 - {}".format(selected_variable))
st.box_plot(data[selected_variable])

最佳实践与注意事项

在使用Streamlit构建Web应用程序时,以下是一些最佳实践和需要注意的事项,以确保你的应用程序高效、稳定和安全:

1. 优化应用程序性能

避免加载过大的数据集: 在展示数据时,只加载需要展示的部分,避免加载整个数据集,以提高应用程序的加载速度。

displayed_data = load_large_dataset().head(100)
st.dataframe(displayed_data)

使用缓存来提高性能: 对于一些计算开销较大的部分,使用st.cache来缓存计算结果,减少重复计算的次数。

@st.cache
def expensive_computation():
    # 进行一些耗时的计算
    return result

result = expensive_computation()
st.write("计算结果:", result)

2. 处理大规模数据

使用分页加载数据: 当处理大规模数据时,考虑使用分页加载,只在需要时加载数据的部分,提高应用程序的响应性。

# 使用分页加载数据
page_number = st.number_input("选择页码", min_value=1, value=1)
data_subset = load_large_dataset(page_number=page_number)
st.dataframe(data_subset)

考虑数据存储的优化方式: 在存储大规模数据时,选择合适的数据格式和存储引擎,以提高数据的读取和写入效率。

# 使用Parquet格式进行数据存储
data.to_parquet("large_data.parquet")

3. 安全性考虑

避免直接在应用程序中暴露敏感信息: 不要直接在应用程序中展示或处理敏感信息,确保用户的隐私和数据安全。

使用安全的数据传输方式(如HTTPS): 如果应用程序涉及到数据传输,使用加密的传输协议,如HTTPS,以防止数据被窃取。

# 部署应用程序时启用HTTPS
streamlit run app.py --server.enableCORS false

总结

在这篇文章中,深入研究了Streamlit,这个让构建Web应用变得轻而易举的Python神器。从基础使用到高级主题,探讨了各个方面,提供了全面而实用的信息。开始于Streamlit的简介,了解了它是如何在数据科学家和开发者之间架起一座沟通的桥梁。通过示例代码,展示了如何轻松创建基本元素、交互组件以及丰富的数据可视化。深入研究了高级主题,包括自定义主题、Markdown的应用、以及多页面应用程序的构建。

除了基础和高级主题外,还讨论了如何部署与分享Streamlit应用,使其能够在云端得以展现,并让他人轻松访问。在优化应用程序性能和处理大规模数据方面,我们提供了实用的建议,以确保应用程序的高效运行。最后,强调了安全性的重要性,教授如何避免直接暴露敏感信息,并使用安全的数据传输方式。


Python学习路线

在这里插入图片描述

更多资料获取

📚 个人网站:ipengtao.com

如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。

在这里插入图片描述
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

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

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

相关文章

Android Studio Giraffe版本遇到的问题

背景 上周固态硬盘挂了,恢复数据之后,重新换了新的固态安装了Win11系统,之前安装的是Android Studio 4.x的版本,这次也是趁着新的系统安装新的Android开发工具。 版本如下: 但是打开以前的Android旧项目时&#xff…

Informer辅助笔记:data/dataloader.py

以WTH为例 import os import numpy as np import pandas as pdimport torch from torch.utils.data import Dataset, DataLoader # from sklearn.preprocessing import StandardScalerfrom utils.tools import StandardScaler from utils.timefeatures import time_featuresim…

动态:class和:style绑定

1. 在应用界面中, 某个(些)元素的样式是变化的 class/style绑定就是专门用来实现动态样式效果的技术 2. 动态class绑定 :class等号后的变量值 可以是字符串 :class等号后 可以是对象 :class等号后 可以是数组 3. 动态style绑定 :style"{ color: myPinkColor, fontS…

功能测试换工作不被认可?那你缺少这5点建议

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

asla四大开源组件应用示例(alsa-lib、alsa-utils、alsa-tools、alsa-plugins)

文章目录 alsa设备文件/dev/snd//sys/class/sound/proc/asoundalsa-lib示例1alsa-utilsalsa-toolsalsa-plugins参考alsa设备文件 /dev/snd/ alsa设备文件目录位于,/dev/snd,如下所示 root@xboard:~#ls /dev/snd -l total 0 drwxr-xr-x 2 root root 60 Nov 6 2023 …

速达软件全系产品 RCE漏洞复现

0x01 产品简介 速达软件是中小企业管理软件第一品牌和行业领导者,是128万家企业用户忠实的选择。14年来速达致力于进销存软件、ERP软件、财务软件、CRM软件等管理软件的研发和服务。 0x02 漏洞概述 速达软件全系产品存在任意文件上传漏洞,未经身份认证得攻击者可以…

flask web开发学习之初识flask(二)

文章目录 一、创建程序实例并注册路由1. 为视图绑定绑定多个URL2. 动态URL 二、启动开发服务器1. 自动发现程序实例2. 管理环境变量3. 使用pycharm运行服务器4. 更多的启动选项5. 设置运行环境6. 调试器7. 重载器 一、创建程序实例并注册路由 app.py # 从flask包中导入flask类…

selenium元素定位方法之xpath

什么是xpath? XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素XPath使用路径表达式在XML文档中进行导航 普通语法 注意! 1.xpath中的值用引号引起来时,在代码中要注意区分,内单外双&#xf…

Pandas教程07:DataFrame数据中apply参数自定义运算的用法

DataFrame.apply()方法主要用于调用每个Series的函数。此函数可以是一个Python的函数,或者是lambda函数。此函数可以接收一个函数作为输入,并应用于DataFrame的每一列。 以下是一些DataFrame.apply()的示例用法: # Author : 小红牛 # 微信公…

深度解析 Spring Security 自定义异常失效问题:源码剖析与解决方案

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

【docker系列】docker实战之部署SpringBoot项目

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

行行AI董事长李明顺:今天每个人都可以成为AI应用的创业者

“ AI创业的核心在于真正介入到应用层面,AI应该成为真正的应用支撑。 ” 整理 | 王娴 编辑 | 云舒 出品|极新 2023年11月28日,极新AIGC行业峰会在北京东升国际科学园顺利召开,行行AI董事长李明顺先生在会上做了题为《从大模型…

如何做好前端单元测试?字节5年测试老司机是这样说的!

近几年,前端发展越来越迅猛,各类框架层出不穷,前端实现的业务逻辑也越来越复杂,前端单元测试也越来越受重视,包括百度在内的一些大厂在面试中也会问到单元测试相关的题目。那么前端应该如何做好单元测试? 什…

写给步入三十的自己,2023年终总结!

前言 古语有云: “二十而立,三十而肆”,而我在二十岁这些年已经有一定的责任感和独立思考了,但是还未步入三十,所以为了之后有一定的胆识和能力,我在今年做了目前能做的准备。 今年已做事件 工作相关 1.拿到了PMP证书…

2023年大数据场景智能运维实践总结

作者:放纵 引言 在当今数字化世界中,如何充分挖掘和发挥数据价值已经成为了企业成功的关键因素,大数据也成为企业决策和运营的重要驱动力。在《当我们在谈论DataOps时,我们到底在谈论什么》一文中也提到,企业在面对到…

开关电源基础而又硬核的知识

1.什么是Power Supply? Power Supply是一种提供电力能源的设备,它可以将一种电力能源形式转换成另外一种电力能源形式,并能对其进行控制和调节。 根据转换的形式分类:AC/DC、DC/DC、DC/AC、AC/AC 根据转换的方法分类:线性电源、…

Docker篇之利用docker搭建ftp服务器可实现多用户上传

一、前言 场景:公司需要搭建FTP服务器,供内网之前可以互相传递数据,安全稳定,需要满足开通多个账号,每个用户上传的文件有自己对应的文件目录。 这里建议:用户目录Disk尽量大一点,避免因为空间不…

滴滴2023.11.27P0级故障技术复盘回顾(k8s的的错?)

本文从滴滴官方恢复及技术公众号带大家从技术角度复盘这次事故 目录 1. 背景 2. 滴滴官方消息 3. 问题分析及定位 4.网传的k8s及解析 5.k8s引发的思考:举一反三,怎么避免再次出现 6.近段时间其他平台崩溃回顾 1. 背景 11 月 27 晚约 10 点&#xf…

【Openstack Train安装】六、Keystone安装

OpenStack是一个云计算平台的项目,其中Keystone是一个身份认证服务组件,它提供了认证、授权和目录的服务。其他OpenStack服务组件都需要使用Keystone来验证用户的身份和权限,并且彼此之间需要相互协作。当一个OpenStack服务组件接收到用户的请…

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「内网穿透」

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…