Streamlit:数据应用的快速建造者

末叶 抹茶大福 2024年10月17日 08:56

图片

markdown


图片


复制


Streamlit:数据应用的快速建造者

大家好,我是猿小哥!今天咱们来聊一聊一个超级炫酷的Python库——Streamlit。它就像是数据应用开发界的“乐高积木”,让我们能轻松快速地搭建出漂亮实用的Web应用。无论你是数据分析师、机器学习工程师,还是Python爱好者,Streamlit都能让你的创意快速变成现实。准备好了吗?让我们开始这段有趣的Streamlit之旅吧!

## Streamlit是什么?

Streamlit是一个开源的Python库,专门用于创建数据科学和机器学习的Web应用。它的口号是“在几小时内将数据脚本转变为可共享的Web应用”。听起来是不是很厉害?没错,它就是这么强大!

使用Streamlit,你只需要懂Python,不需要了解HTML、CSS或JavaScript,就能创建出漂亮的交互式Web应用。这对我们这些专注于数据和算法的小伙伴来说,简直是福音啊!

## 为什么选择Streamlit?

1. **简单易学**:如果你会Python,那么你就已经会用Streamlit了。
2. **快速开发**:几行代码就能创建一个应用,效率超高。
3. **实时更新**:修改代码后,应用会自动刷新,开发体验超棒。
4. **丰富的组件**:从简单的文本到复杂的图表,Streamlit都能轻松搞定。

## 开始我们的Streamlit之旅

我们需要安装Streamlit。打开你的终端,输入以下命令:

```bash
pip install streamlit

图片


安装完成后,让我们创建一个简单的应用来体验一下Streamlit的魔力吧!


第一个Streamlit应用

图片


创建一个名为first_app.py的文件,输入以下代码:import streamlit as st


st.title(“我的第一个Streamlit应用”)
st.write(“大家好,我是猿小哥!”)

name = st.text_input(“请输入你的名字”)
if name:
st.write(f“你好,{name}!欢迎来到Streamlit的世界!”)

age = st.slider(“你的年龄是?”, 1, 100, 25)
st.write(f“哇,{age}岁正是学习Python的好年纪!”)

保存文件后,在终端中运行:streamlit run first_app.py


哇!是不是很神奇?只需要几行代码,我们就创建了一个带有标题、文本输入和滑动条的交互式Web应用。


数据可视化

Streamlit对数据可视化的支持也非常强大。让我们来试试用Streamlit展示一些数据图表:import streamlit as st import pandas as pd import numpy as np import matplotlib.pyplot as plt


st.title(“数据可视化示例”)

# 生成示例数据
data = pd.DataFrame({
'x': range(100),
'y': np.random.randn(100).cumsum()
})

# 显示数据表格
st.write(“数据表格:”)
st.dataframe(data)

# 绘制折线图
st.write(“折线图:”)
fig, ax = plt.subplots()
ax.plot(data['x'], data['y'])
st.pyplot(fig)

# 绘制交互式图表
st.write(“交互式图表:”)
st.line_chart(data)

看到了吗?只需要几行代码,我们就能创建出包含数据表格和各种图表的应用。Streamlit自动处理了所有的HTML和JavaScript细节,让我们能专注于数据本身。


1.

小贴士



  1. Streamlit应用是从上到下执行的,所以要注意代码的顺序。

  2. 使用st.cache装饰器可以缓存耗时的操作,提高应用性能。

  3. Streamlit提供了很多内置的主题,可以使用st.set_page_config()来设置。

2.

练习题



试试看能不能在我们的应用中添加一个按钮,当点击按钮时,生成一个随机数并显示出来?


提示:你可能需要用到st.button()random模块。


3.

总结



今天我们了解了Streamlit这个强大的工具,它让创建数据应用变得如此简单和有趣。我们学习了如何安装Streamlit,创建第一个应用,以及如何进行简单的数据可视化。这只是Streamlit功能的冰山一角,它还有更多强大的特性等待你去探索!


小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问猿小哥哦。祝大家学习愉快,Python学习节节高!


复制markdown


复制


Streamlit进阶:打造你的数据科学应用

嗨,小伙伴们!猿小哥又来啦!上次我们初步认识了Streamlit这个神奇的工具,今天我们要更深入地探索一下,看看如何用它来打造一个真正实用的数据科学应用。准备好你的智慧帽,我们开始新的冒险吧!

## 回顾与前进

还记得我们上次创建的简单应用吗?那只是Streamlit的冰山一角。今天,我们要挑战更复杂的任务:创建一个股票数据分析应用。通过这个项目,你将学会如何:

1. 获取实时数据
2. 进行数据处理
3. 创建交互式图表
4. 添加用户输入控件

听起来很酷,对吧?那就让我们开始吧!

## 股票数据分析应用

我们需要安装一些额外的库:

```bash
pip install streamlit yfinance plotly

现在,让我们创建我们的应用。新建一个文件,命名为stock_analysis.py:import streamlit as st import yfinance as yf import plotly.graph_objects as go from datetime import date, timedelta


st.title('股票数据分析应用')

# 用户输入
symbol = st.text_input('输入股票代码(例如:AAPL)', 'AAPL')
start_date = st.date_input('开始日期', date.today() - timedelta(days=365))
end_date = st.date_input('结束日期', date.today())

# 获取股票数据
@st.cache_data
def load_data(symbol, start, end):
return yf.download(symbol, start, end)

data = load_data(symbol, start_date, end_date)

if data.empty:
st.warning('没有找到数据,请检查股票代码是否正确。')
else:
# 显示原始数据
st.subheader('原始数据')
st.write(data.tail())

# 绘制股票价格图
st.subheader('股票价格走势')
fig = go.Figure()
fig.add_trace(go.Scatter(x=data.index, y=data['Close'], name='收盘价'))
fig.add_trace(go.Scatter(x=data.index, y=data['Open'], name='开盘价'))
fig.layout.update(title_text='股票价格走势图', xaxis_rangeslider_visible=True)
st.plotly_chart(fig)

# 计算并显示一些基本统计数据
st.subheader('基本统计数据')
st.write(f“平均收盘价: {data['Close'].mean():.2f}”)
st.write(f“最高价: {data['High'].max():.2f}”)
st.write(f“最低价: {data['Low'].min():.2f}”)
st.write(f“交易量中位数: {data['Volume'].median():.0f}”)

# 添加一个简单的移动平均线
ma_days = st.slider('选择移动平均线的天数', 5, 100, 20)
data['MA'] = data['Close'].rolling(window=ma_days).mean()

st.subheader(f'{ma_days}天移动平均线')
fig = go.Figure()
fig.add_trace(go.Scatter(x=data.index, y=data['Close'], name='收盘价'))
fig.add_trace(go.Scatter(x=data.index, y=data['MA'], name=f'{ma_days}天移动平均线'))
fig.layout.update(title_text='股票价格与移动平均线', xaxis_rangeslider_visible=True)
st.plotly_chart(fig)

哇!这看起来代码不少,但别担心,让猿小哥来给你解释一下:


  1. 我们首先导入了必要的库,包括Streamlit、yfinance(用于获取股票数据)和plotly(用于绘制交互式图表)。


  2. 我们创建了用户输入控件,让用户可以选择股票代码和日期范围。


  3. 使用@st.cache_data装饰器可以缓存数据加载的结果,提高应用性能。


  4. 我们使用plotly创建了交互式的股票价格走势图。


  5. 我们还添加了一个滑动条,让用户可以自定义移动平均线的天数。


现在,让我们运行这个应用:streamlit run stock_analysis.py


看到了吗?我们创建了一个功能丰富的股票分析应用!用户可以输入任何股票代码,选择日期范围,查看股票走势,还能调整移动平均线。这就是Streamlit的魔力!


4.

小贴士



  1. 使用@st.cache_data可以大大提高应用的响应速度,特别是在处理大量数据时。


  2. Plotly是一个强大的交互式图表库,它与Streamlit配合得很好。多尝试不同类型的图表!


  3. 善用Streamlit的各种输入控件(如st.slider()st.selectbox()等),让你的应用更加交互。


5.

练习题



能不能给我们的应用添加一个新功能:计算并显示股票的日收益率?


提示:日收益率可以用(今天的收盘价 - 昨天的收盘价) / 昨天的收盘价来计算。


6.

总结



今天,我们迈出了成为数据应用开发大师的重要一步!我们学会了如何使用Streamlit创建一个实用的股票数据分析应用。这个应用涵盖了数据获取、处理、可视化和用户交互等多个方面。


记住,这只是Streamlit能力的一小部分。你还可以用它来创建机器学习模型的交互界面、数据探索工具、甚至是复杂的仪表板。Streamlit的世界等着你去探索!


小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问猿小哥哦。祝大家学习愉快,Python学习节节高!