这个Python库Streamlit,5分钟内搭建可视化WEB应用

在数据科学的世界里,将分析结果快速、直观地呈现给非技术背景的决策者,是一项重要的技能。而Streamlit,这个开源的Python库,正是为此而生。它允许数据科学家和工程师通过少量的代码,快速创建和分享数据应用。今天,我们就来探索Streamlit的魔力,看看它是如何简化我们的工作流程的。

什么是Streamlit?

Streamlit是一个用于快速创建和分享数据应用的开源Python库。它特别适合于数据科学家和工程师,因为它可以让他们用Python语言快速构建交云应用,而无需深入了解前端开发。

Streamlit的原理

Streamlit的工作原理基于Python的Jupyter Notebook。它通过将Python脚本转换为交互式Web应用,让复杂的数据处理和分析过程变得可视化和可交互。Streamlit应用的运行依赖于一个简单的Web服务器,这使得它易于部署和分享。

安装Streamlit

安装Streamlit非常简单,只需要一行命令:

pip install streamlit

基础用法

创建第一个Streamlit应用

创建一个名为app.py的Python文件,然后写入以下代码:

import streamlit as st

# 在应用中写入文本
st.write("Hello, Streamlit!")

# 创建一个滑块
x = st.slider('Select a value')
st.write('Selected value:', x)

运行这个应用,只需在命令行中输入:

streamlit run app.py

这将启动一个本地Web服务器,并在默认的Web浏览器中打开你的Streamlit应用。

交互式组件

Streamlit提供了多种交互式组件,包括滑块、按钮、选择框等。这些组件可以让用户与应用进行交互,从而动态地改变应用的输出。

滑块(Slider)

x = st.slider('Select a value', min_value=0, max_value=10, value=5, step=1)

下拉菜单(Selectbox)

options = ['option1', 'option2', 'option3']
selected_option = st.selectbox('Choose an option', options)

按钮(Button)

if st.button('Click me!'):
    st.write('Button was clicked!')

数据可视化

Streamlit与多个数据可视化库兼容,如Matplotlib、Seaborn、Plotly等,可以轻松地将数据可视化结果集成到应用中。

使用Matplotlib

import matplotlib.pyplot as plt
import numpy as np

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

st.pyplot(plt.plot(x, y))

使用Plotly

import plotly.express as px

df = px.data.iris()
fig = px.scatter(df, x='sepal_width', y='sepal_length')

st.plotly_chart(fig)

数据处理

Streamlit也可以用于展示数据处理的过程。例如,你可以展示Pandas DataFrame,并让用户通过交互式组件来过滤数据。

展示DataFrame

import pandas as pd

df = pd.read_csv('your_data.csv')
st.dataframe(df)

过滤DataFrame

selected_option = st.selectbox('Choose a column', df.columns)
filtered_df = df[df[selected_option] > st.slider('Select a threshold', min_value=0, max_value=100, value=50, step=1)]
st.dataframe(filtered_df)

结语

以下是文章中提到的所有示例代码的汇总,方便读者复制和运行。

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib

# 设置matplotlib字体支持中文显示
matplotlib.rcParams['font.family'] = 'SimHei'  # 指定字体为SimHei
matplotlib.rcParams['axes.unicode_minus'] = False  # 正确显示负号

# 加载数据
data = pd.read_csv('global_development.csv')

# 应用标题
st.title('全球发展数据探索')

# 添加筛选器侧边栏
region = st.sidebar.multiselect('选择地区', data['Region'].unique())
gdp_per_capita_range = st.sidebar.slider('人均GDP范围', 
                                         min_value=float(data['GDP_per_capita'].min()), 
                                         max_value=float(data['GDP_per_capita'].max()), 
                                         value=(float(data['GDP_per_capita'].min()), float(data['GDP_per_capita'].max())),
                                         step=1000.0)  # 确保步长类型为浮点数

# 数据筛选
filtered_data = data[(data['Region'].isin(region)) & (data['GDP_per_capita'].between(*gdp_per_capita_range))]

# 显示筛选后的数据
st.write(f"筛选后的数据包含 {filtered_data.shape[0]} 条记录")
st.dataframe(filtered_data)

# 绘制人均GDP直方图
fig, ax = plt.subplots()
filtered_data['GDP_per_capita'].hist(ax=ax, bins=20)
ax.set_title('人均GDP分布')
st.pyplot(fig)

# 人口总和显示
population_total = filtered_data['Population'].sum()
st.write(f"筛选国家的总人口为:{population_total}")

数据文件global_development.csv内容如下:

Country,Region,Population,GDP_per_capita
China,Asia,1400000000,10000
India,Asia,1380000000,2000
United States,North America,330000000,65000
Indonesia,Asia,273000000,3900
Brazil,South America,212000000,6800

image-20240506215334989

Streamlit是一个强大的工具,它让数据科学变得更加简单和有趣。通过这篇文章,我们了解了Streamlit的基本概念、原理以及如何使用它来创建交互式应用。希望这能激发你探索Streamlit的兴趣,让你的数据科学之旅更加顺畅。

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

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

相关文章

OpenAI推出DALL·E 3识别器、媒体管理器

5月8日,OpenAI在官网宣布,将推出面向其文生图模型DALLE 3 的内容识别器,以及一个媒体管理器。 随着ChatGPT、DALLE 3等生成式AI产品被大量应用在实际业务中,人们越来越难分辨AI和人类创建内容的区别,这个识别器可以帮…

【Git】Git学习-15:分支简介和基本操作

学习视频链接:【GeekHour】一小时Git教程_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 git bran…

pycharm code行太长显示波浪线取消

实际操作如下:个人比较合适的位置为160,180时有点多 效果:

Agent AI智能体:塑造未来社会的智慧力量

🔥 个人主页:空白诗 文章目录 🤖 Agent AI智能体:塑造未来社会的智慧力量🎯 引言🌱 智能体的未来角色预览💼 行业革新者🌟 创意合作者🛡️ 公共安全与环保🚀 …

武汉星起航:亚马逊欧洲站:丰富商品与卓越服务铸就高客单价典范

亚马逊,作为全球最大的电商平台之一,其欧洲站在全球电商市场中占据着举足轻重的地位。其中,亚马逊欧洲站的人均客单价更是高居世界前列,这背后究竟隐藏着哪些原因呢? 首先,亚马逊具有丰富且高质量的商品品…

工业镜头助力锂电制造业精准检测

在电动汽车、电动轻型车、电动工具、消费电子和新型储能等行业大发展的背景下,锂电池综合优势与下游领域对电池大容量、高功率、使用寿命和环境保护日益提升的需求相契合,存在广阔的市场应用前景。受益于动力、消费和储能三大细分领域的快速发展&#xf…

Debug项目失败Run成功

一:问题 idea中启动服务,服务一直在启动中,最后超时启动失败 重新构建项目也是一样 二:个人分析 debug因为断点太多了项目起不起来,试一下run直接运行,项目可以快速启动 三:解决办法 在控制…

Liunx系统怎么设置免密登录?看这一篇!

远程口令爆破也是黑客常用的手段,有些人安全意识薄弱的会设置一些简单的密码,这样分分钟会被黑客爆破进去,一旦操作系统沦陷,里面的数据必将被黑客一览无余,使用免密登录可以有效降低密码被爆破的风险,具体…

docker 方式 elasticsearch 8.13 简单例子

安装 docker 虚拟机安装 elastic search 安装本地 # 创建 elastic 的网络 docker network create elastic # 用镜像的方式创建并启动容器 docker run -d --name es --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e "xpack.secur…

Android 终端查看CPU信息源码分析

代码如下: 终端获取信息(左为H9,右为H5) 觉得本文对您有用,麻烦点赞、关注、收藏,您的肯定是我创作的无限动力,谢谢!!!

minio安装部署

MinIO 介绍 MinIO是一个对象存储解决方案,它提供了与Amazon Web Services S3兼容的API,并支持所有核心S3功能。 MinIO有能力在任何地方部署 - 公有云或私有云,裸金属基础设施,编排环境,以及边缘基础设施。 MinIO 安装…

Android内核之Binder读写通信:binder_ioctl_write_read用法实例(七十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Python专题:三、数字和运算(2)

目录 一、数学运算 二、赋值运算 一、数学运算 1、运算符号 加法 减法- 乘法* 除法/ 计算机中浮点数表示有精度限制,Python有限,所以近似取数 2、除法取整// Python2中 整数/整数 值为整数 Python3中 整数/整数 整数or浮点数 //计算除法对结果取…

植被参数光学遥感反演方法(Python)及遥感与生态模型数据同化算法

原文链接:植被参数光学遥感反演方法(Python)及遥感与生态模型数据同化算法https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247603741&idx4&sn5b92ff13edfd6e146b7df22ac504c6d5&chksmfa8217facdf59eec9255d24b3e6f6f66b4d2814cae70f85d0ff1a…

月薪从 6k 到 30k,我做对了这3点

本文首发于公众号 极客枫哥 ,日更分享各种好玩的软件、编程知识和个人成长故事 大家好啊~我是枫哥。今天跟大家聊一聊我的个人工作经历。 我是 2014 年来的上海,来到上海后第一份工作做的是 java 开发,转正后的工资是 6000。 这…

中国 Copilot 能在笔记本电脑上起飞吗?

AI PC 是 PC 的下一个进化体? 中国能打造出自己的 AI 研发助手吗? 企业如何构建 AI 竞争力? AI 时代,个体如何避免被取代? 如果你也有此困惑,那就锁定这场直播吧! 视频号搜索【极狐GitLab】预约…

Leecode42:接雨水

第一反应是按照高低这个思路来求解,因为可以把盛雨水的容器想成是从左往右的,遇到一个沟就存一点雨水。 这个思路 看了下题解,发现自己的思路其实没问题,确实是按照最高最低来求,但是这个地方太复杂了求的&#xff0c…

【spark】win10 pyspark3.5.1 安装超级简单

下载地址:https://spark.apache.org/downloads.html 下载完成: 复制文件到自己的路径下,路径最好不要有中文、空格; 解压tgz文件: 修改环境变量: 创建SPARK_HOME: D:\software_download\spar…

STM32F103学习笔记 | 报错界面及解决方案 | 1.keil5中文注释的横竖(正与斜)问题

文章目录 一、报错界面二、解决方案参考文献 一、报错界面 二、解决方案 打开设置 在打开的设置选项卡中,图中Font显示的是这个软件当前设置的字体,可以看到字体是仿宋,这就是问题出现的原因,将之改成没有的字体就行了。 可以看…

黑马点评项目总结

登录 基于session登录 短信验证码登录 配置登录拦截器 向 Spring MVC 框架中添加拦截器,LoginInterceptor 是一个自定义的拦截器,用于拦截用户的登录请求。 excludePathPatterns这一句是设置拦截器需要放行的请求路径列表。 "/user/code", …