这个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的兴趣,让你的数据科学之旅更加顺畅。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西坡不是东坡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值