当前位置:   article > 正文

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

streamlit 原理

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

什么是Streamlit?

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

Streamlit的原理

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

安装Streamlit

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

pip install streamlit
  • 1

基础用法

创建第一个Streamlit应用

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

import streamlit as st

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

# 创建一个滑块
x = st.slider('Select a value')
st.write('Selected value:', x)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

streamlit run app.py
  • 1

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

交互式组件

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

滑块(Slider)

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

下拉菜单(Selectbox)

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

按钮(Button)

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

数据可视化

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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

使用Plotly

import plotly.express as px

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

st.plotly_chart(fig)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

数据处理

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

展示DataFrame

import pandas as pd

df = pd.read_csv('your_data.csv')
st.dataframe(df)
  • 1
  • 2
  • 3
  • 4

过滤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)
  • 1
  • 2
  • 3

结语

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

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}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

数据文件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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

image-20240506215334989

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/771358
推荐阅读
相关标签
  

闽ICP备14008679号