Streamlit,一个用于快速创建数据应用的Python库!

少见钟情人 2024-12-04 14:02:33
嘿,小伙伴们,今天咱们来聊聊一个超级酷的Python库——Streamlit!这个库能让你像搭积木一样,快速把数据分析和机器学习模型变成交互式的Web应用。没错,就是那种点点鼠标、滑滑条条就能玩转数据的神奇应用。话不多说,咱们这就开整!

一、Streamlit初体验

Streamlit是个啥?简单来说,它就是一个让你的Python代码瞬间变身Web应用的魔法棒。不需要你懂HTML、CSS那些复杂的前端技术,只需要写Python代码,Streamlit就能帮你生成漂亮的网页。

来,咱们先安装一下Streamlit:

pip install streamlit

安装完成后,咱们来写个简单的例子,感受一下Streamlit的魔力:

import streamlit as st# 设置页面标题st.title('Hello, Streamlit!')# 显示文本st.write('这是一个简单的Streamlit应用示例。')# 显示数字st.write('这里是一个数字:', 42)

然后,在命令行里运行:

streamlit run your_script.py

你的浏览器就会自动打开一个新标签页,显示你刚刚写的那个简单的Streamlit应用。怎么样,是不是很简单?

二、添加交互元素

Streamlit的厉害之处,在于它能让你轻松添加各种交互元素,比如按钮、输入框、滑块等。这些元素能让你的应用变得更加生动有趣。

2.1 按钮

咱们先来添加一个按钮:

import streamlit as st# 设置页面标题st.title('带有按钮的Streamlit应用')# 添加一个按钮if st.button('点击我'):    st.write('按钮被点击啦!')

运行这个代码,你会看到一个按钮,当你点击它时,会显示“按钮被点击啦!”的提示。

2.2 输入框

接下来,咱们添加一个输入框,让用户可以输入文本:

import streamlit as st# 设置页面标题st.title('带有输入框的Streamlit应用')# 添加一个输入框user_input = st.text_input('请输入一些文字:')# 显示用户输入的内容st.write('你输入的是:', user_input)

现在,你可以在这个输入框里输入文字,然后在下方看到你输入的内容。

2.3 滑块

滑块也是个很好玩的交互元素,你可以用它来调整数值:

import streamlit as st# 设置页面标题st.title('带有滑块的Streamlit应用')# 添加一个滑块slider_value = st.slider('选择一个数值:', 0, 100)# 显示滑块的值st.write('你选择的数值是:', slider_value)

这个滑块可以让你在0到100之间选择一个数值,并实时显示你选择的值。

三、显示图表

数据分析怎么能少了图表呢?Streamlit也支持显示各种图表,比如折线图、柱状图等。咱们用matplotlib和pandas来生成一些数据,然后用Streamlit显示出来。

3.1 折线图

import streamlit as stimport matplotlib.pyplot as pltimport pandas as pdimport numpy as np# 设置页面标题st.title('带有折线图的Streamlit应用')# 生成一些数据np.random.seed(0)data = pd.DataFrame({    '时间': pd.date_range(start='2023-01-01', periods=100, freq='D'),    '数值': np.random.randn(100).cumsum()})# 用matplotlib绘制折线图fig, ax = plt.subplots()ax.plot(data['时间'], data['数值'])ax.set_xlabel('时间')ax.set_ylabel('数值')# 在Streamlit中显示图表st.pyplot(fig)

运行这个代码,你会看到一个漂亮的折线图,展示了随机生成的数据随时间的变化情况。

3.2 柱状图

柱状图也很常用,咱们再来试试:

import streamlit as stimport matplotlib.pyplot as pltimport pandas as pd# 设置页面标题st.title('带有柱状图的Streamlit应用')# 生成一些分类数据categories = ['A', 'B', 'C', 'D', 'E']values = [10, 20, 15, 30, 25]# 用matplotlib绘制柱状图fig, ax = plt.subplots()ax.bar(categories, values)ax.set_xlabel('分类')ax.set_ylabel('数值')# 在Streamlit中显示图表st.pyplot(fig)

这个柱状图展示了不同分类下的数值大小,一目了然。

四、布局和样式

Streamlit还提供了一些布局和样式的功能,让你的应用看起来更加美观和整洁。

4.1 布局

你可以使用st.column和st.beta_expander等功能来创建复杂的布局。比如,把内容分成两列:

import streamlit as st# 设置页面标题st.title('带有布局的Streamlit应用')# 创建两列布局col1, col2 = st.beta_columns(2)# 在第一列中添加内容with col1:    st.write('这是第一列的内容。')    st.button('第一列的按钮')# 在第二列中添加内容with col2:    st.write('这是第二列的内容。')    st.slider('第二列的滑块:', 0, 100)

4.2 样式

你还可以设置一些样式,比如改变字体大小、颜色等。不过,这部分功能比较高级,咱们今天就不深入探讨了。

五、实战:创建一个简单的数据应用

最后,咱们来实战一下,创建一个简单的数据应用。这个应用会读取一个CSV文件,显示数据,并允许用户通过滑块来选择数据的一个范围进行可视化。

import streamlit as stimport pandas as pdimport matplotlib.pyplot as plt# 设置页面标题st.title('简单的数据应用')# 上传CSV文件uploaded_file = st.file_uploader('上传一个CSV文件:', type=['csv'])if uploaded_file is not None:    # 读取CSV文件    df = pd.read_csv(uploaded_file)    # 显示数据    st.write('数据预览:')    st.dataframe(df.head())    # 添加一个滑块来选择数据的范围    lower_bound = st.slider('选择数据的下界:', df['数值'].min(), df['数值'].max())    upper_bound = st.slider('选择数据的上界:', df['数值'].min(), df['数值'].max())    # 过滤数据    filtered_df = df[(df['数值'] >= lower_bound) & (df['数值'] <= upper_bound)]    # 显示过滤后的数据    st.write('过滤后的数据:')    st.dataframe(filtered_df)    # 绘制过滤后数据的折线图    fig, ax = plt.subplots()    ax.plot(filtered_df['时间'], filtered_df['数值'])    ax.set_xlabel('时间')    ax.set_ylabel('数值')    st.pyplot(fig)

这个应用允许用户上传一个CSV文件,然后通过滑块选择数据的范围进行可视化。是不是很有意思?

温馨提示:在实际应用中,你可能需要对用户上传的文件进行一些验证,比如检查文件是否为CSV格式、是否包含必要的列等。

好啦,今天咱们就聊到这里。Streamlit这个库真的很强大,能让你轻松创建交互式的Web应用。希望这篇文章能帮到你,让你在数据分析和机器学习的道路上更加得心应手。如果你有任何问题或者建议,欢迎在评论区留言哦!

0 阅读:0

少见钟情人

简介:等待的往往不是爱