一、Streamlit简介

Streamlit是一个用Python构建数据应用的开源框架,它能让我们快速创建漂亮的数据可视化界面。本文将通过一个简单的示例,展示如何使用Streamlit构建数据可视化应用。

二、环境准备

2.1 安装依赖

pip install streamlit pandas plotly numpy

2.2 创建项目

mkdir streamlit_demo
cd streamlit_demo
touch demo_app.py

三、代码实现

3.1 完整代码

import streamlit as st
import pandas as pd
import plotly.express as px
import numpy as np # 页面配置
st.set_page_config(
page_title="Streamlit Demo",
page_icon="",
layout="wide"
) # 标题
st.title(" Streamlit数据可视化示例")
st.markdown("---") # 侧边栏
with st.sidebar:
st.header(" 配置面板") # 数据生成配置
num_points = st.slider("数据点数量", 10, 100, 50)
chart_type = st.selectbox(
"图表类型",
["折线图", "柱状图", "散点图", "饼图"]
) # 生成示例数据
df = pd.DataFrame({
'日期': pd.date_range('2024-01-01', periods=num_points),
'数值': np.random.randn(num_points).cumsum(),
'类别': np.random.choice(['A', 'B', 'C'], num_points)
}) # 主要内容区
col1, col2 = st.columns(2) with col1:
st.subheader(" 数据预览")
st.dataframe(df, use_container_width=True) with col2:
st.subheader(" 可视化展示") if chart_type == "折线图":
fig = px.line(df, x='日期', y='数值', color='类别')
elif chart_type == "柱状图":
fig = px.bar(df, x='日期', y='数值', color='类别')
elif chart_type == "散点图":
fig = px.scatter(df, x='日期', y='数值', color='类别')
else: # 饼图
fig = px.pie(df, values='数值', names='类别') st.plotly_chart(fig, use_container_width=True) # 统计信息
st.markdown("---")
st.subheader(" 统计信息")
col1, col2, col3 = st.columns(3) with col1:
st.metric("数据点数量", num_points)
with col2:
st.metric("平均值", f"{df['数值'].mean():.2f}")
with col3:
st.metric("标准差", f"{df['数值'].std():.2f}") # 交互式数据筛选
st.markdown("---")
st.subheader(" 数据筛选")
selected_categories = st.multiselect(
"选择类别",
df['类别'].unique(),
default=df['类别'].unique()
) filtered_df = df[df['类别'].isin(selected_categories)]
st.dataframe(filtered_df, use_container_width=True) # 下载按钮
st.markdown("---")
st.download_button(
" 下载数据",
filtered_df.to_csv(index=False).encode('utf-8'),
"data.csv",
"text/csv",
key='download-csv'
)

3.2 代码说明

  1. 页面配置
st.set_page_config(
page_title="Streamlit Demo",
page_icon="",
layout="wide"
)

设置页面标题、图标和布局方式。

  1. 侧边栏配置
with st.sidebar:
st.header(" 配置面板")
num_points = st.slider("数据点数量", 10, 100, 50)
chart_type = st.selectbox(
"图表类型",
["折线图", "柱状图", "散点图", "饼图"]
)

创建侧边栏控制面板,包含数据点数量滑块和图表类型选择器。

  1. 数据展示
col1, col2 = st.columns(2)
with col1:
st.dataframe(df, use_container_width=True)
with col2:
st.plotly_chart(fig, use_container_width=True)

使用列布局展示数据表格和可视化图表。

四、界面展示

4.1 主界面



主界面采用双列布局,左侧显示数据表格,右侧显示可视化图表。

4.2 侧边栏



侧边栏包含配置选项,可以调整数据量和图表类型。

4.3 数据筛选



支持多选筛选数据类别,筛选结果实时更新。

4.4 统计信息



使用指标卡片展示关键统计信息。

五、运行应用

streamlit run demo_app.py

运行后,应用将在浏览器中自动打开,默认地址为:http://localhost:8501

六、功能特点

  1. 交互式配置

    • 可调整数据点数量
    • 支持多种图表类型
    • 实时数据筛选
  2. 数据可视化

    • 支持折线图、柱状图、散点图、饼图
    • 自适应布局
    • 交互式图表
  3. 数据操作

    • 数据预览
    • 统计信息展示
    • CSV格式导出

七、优化建议

  1. 性能优化

    • 使用@st.cache_data缓存数据
    • 限制数据显示数量
    • 优化图表渲染
  2. 界面优化

    • 添加加载动画
    • 优化错误提示
    • 改善移动端适配

八、总结

通过这个简单的示例,我们展示了Streamlit的基本用法:

  1. 页面布局和组件使用
  2. 数据处理和可视化
  3. 交互功能实现

Streamlit的优势在于:

  • 快速开发
  • 简单易用
  • 丰富的组件
  • 良好的可扩展性

参考资料

  1. Streamlit官方文档
  2. Plotly Express文档
  3. Pandas文档
  4. Streamlit Gallery

最终效果





Streamlit入门:10分钟搭建数据可视化界面的更多相关文章

  1. 10分钟搭建一个小型网页(python django)(hello world!)

    10分钟搭建一个小型网页(python django)(hello world!) 1.安装django pip install django 安装成功后,在Scripts目录下存在django-ad ...

  2. DB2输出每隔10分钟的数据

    一.输出1-100的数据 此处参考 https://bbs.csdn.net/topics/390516027 with t(id) as ( as id from sysibm.sysdummy1 ...

  3. Streamlit:快速数据可视化界面工具

    目录 Streamlit简介 Streamlit使用指南 常用命令 显示文本 显示数据 显示图表 显示媒体 交互组件 侧边栏 缓存机制 Streamlit使用Hack Streamlit的替代品 相关 ...

  4. python scrapy 入门,10分钟完成一个爬虫

    在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫.的确,有着丰富第三方库的python很适合干这种工作. Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍 ...

  5. 10分钟搭建 App 主流框架

    搭建主流框架界面 0.达成效果 我们玩iPhone应用的时候,有没发现大部分的应用都是上图差不多的结构,下面的TabBar控制器可以切换子控制器,上面又有Navigation导航条 我们本文主要是搭建 ...

  6. 利用django框架,手把手教你搭建数据可视化系统(一)

    如何使用django去构建数据可视化的 web,可视化的结果可以呈现在web上. 使用django的MTV模型搭建网站 基础铺垫-MTV模型 Created with Raphaël 2.1.0Req ...

  7. Docker搭建Portainer可视化界面

    为了解决上回说到的问题,在网上找了找 找到了一个 非常有好的可视化界面管理工具. Portainer 是什么东西 (开源轻量级) Portainer是Docker的图形化管理工具,提供状态显示面板.应 ...

  8. pandas入门10分钟——serries其实就是data frame的一列数据

    10 Minutes to pandas This is a short introduction to pandas, geared mainly for new users. You can se ...

  9. TTS-零基础入门-10分钟教你做一个语音功能

    在本片博客正式開始之前,大家先跟我做一个简单的好玩的 小语音. 新建一个文本文档,然后再文档里输入这样 一句话  CreateObject("SAPI.SpVoice").Spea ...

  10. python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

随机推荐

  1. Windows编程----CreateProcess函数

    CreateProcess函数原型 CreateProcess 函数用于创建一个新进程(子进程)及其主线程,其函数原型如下: BOOL CreateProcess( LPCWSTR lpApplica ...

  2. Qt Oracle往数据库里插入或者更新图片

    文章目录 Qt Oracle往数据库里插入或者更新图片 前言 读取本地图片文件 QPixmap 转 QByteArray 组成SQL,并执行 Qt Oracle往数据库里插入或者更新图片 前言 最近遇 ...

  3. mysql -- 自定义函数及循环结构

    和存储过程类似,区别在于存储过程可以有0个或多个返回,但是函数只能有唯一一个返回值 一般而言,存储过程适合批量插入,批量删除,增删改:函数则用于处理数据,查询某个值. 创建 create functi ...

  4. linux安装python centos

    下载安装包 可以到官网 ftp 地址,复制指定 python 版本源码安装包下载链接 https://www.python.org/ftp/python/ 或者到官网 downloads, 复制指定 ...

  5. FastAPI中Pydantic异步分布式唯一性校验

    title: FastAPI中Pydantic异步分布式唯一性校验 date: 2025/04/02 00:47:55 updated: 2025/04/02 00:47:55 author: cmd ...

  6. Cursor+playwright+mcp,好玩

    Cursor+playwright+mcp能干嘛,我就不多说,本文只讲怎么用上 第一步,安装下载Cursor.node.js,至于什么python环境,playwright网上一堆教程,自己查 第二步 ...

  7. 康谋分享 | 数据隐私和匿名化:PIPL与GDPR下,如何确保数据合规?(二)

    在上期数据隐私和匿名化系列文章中,我们主要分享了<中国个人信息保护法>(PIPL)和<欧盟通用数据保护条例>(GDPR)在涵盖范围.定义.敏感信息等方面的异同点,今天,我们将重 ...

  8. 为什么 Spring 循环依赖需要三级缓存,二级不够吗?

    Spring循环依赖解决机制中引入了三级缓存,这是因为仅使用二级缓存无法灵活处理代理Bean的早期暴露需求.以下是为什么需要三级缓存的详细分析: 1. 二级缓存的局限性 二级缓存通常用于存储早期暴露的 ...

  9. MySQL 索引的最左前缀匹配原则是什么?

    MySQL 索引的最左前缀匹配原则 最左前缀匹配原则是 MySQL 使用联合索引时的一个重要优化规则.它指的是在查询条件中,只有符合索引最左侧字段开始的连续前缀部分时,索引才能被有效利用. 1. 最左 ...

  10. 使用xxxbase应付CRUD后端任务

    很多的后端CRUD开发任务都是毫无意义的, 如果使用firebase/supabase/pocketbase这些工具快速应付这些任务才是重要的. 如果是一位研究生, 在面对导师的垃圾横向的时候, 这种 ...