markdown
复制
大家好,我是猿小哥!今天咱们来聊一聊一个超级炫酷的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的魔力吧!
创建一个名为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.
小贴士
Streamlit应用是从上到下执行的,所以要注意代码的顺序。
使用st.cache
装饰器可以缓存耗时的操作,提高应用性能。
Streamlit提供了很多内置的主题,可以使用st.set_page_config()
来设置。
2.
练习题
试试看能不能在我们的应用中添加一个按钮,当点击按钮时,生成一个随机数并显示出来?
提示:你可能需要用到st.button()
和random
模块。
3.
总结
今天我们了解了Streamlit这个强大的工具,它让创建数据应用变得如此简单和有趣。我们学习了如何安装Streamlit,创建第一个应用,以及如何进行简单的数据可视化。这只是Streamlit功能的冰山一角,它还有更多强大的特性等待你去探索!
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问猿小哥哦。祝大家学习愉快,Python学习节节高!
复制markdown
复制
嗨,小伙伴们!猿小哥又来啦!上次我们初步认识了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)
哇!这看起来代码不少,但别担心,让猿小哥来给你解释一下:
我们首先导入了必要的库,包括Streamlit、yfinance(用于获取股票数据)和plotly(用于绘制交互式图表)。
我们创建了用户输入控件,让用户可以选择股票代码和日期范围。
使用@st.cache_data
装饰器可以缓存数据加载的结果,提高应用性能。
我们使用plotly创建了交互式的股票价格走势图。
我们还添加了一个滑动条,让用户可以自定义移动平均线的天数。
现在,让我们运行这个应用:streamlit run stock_analysis.py
看到了吗?我们创建了一个功能丰富的股票分析应用!用户可以输入任何股票代码,选择日期范围,查看股票走势,还能调整移动平均线。这就是Streamlit的魔力!
4.
小贴士
使用@st.cache_data
可以大大提高应用的响应速度,特别是在处理大量数据时。
Plotly是一个强大的交互式图表库,它与Streamlit配合得很好。多尝试不同类型的图表!
善用Streamlit的各种输入控件(如st.slider()
、st.selectbox()
等),让你的应用更加交互。
5.
练习题
能不能给我们的应用添加一个新功能:计算并显示股票的日收益率?
提示:日收益率可以用(今天的收盘价 - 昨天的收盘价) / 昨天的收盘价
来计算。
6.
总结
今天,我们迈出了成为数据应用开发大师的重要一步!我们学会了如何使用Streamlit创建一个实用的股票数据分析应用。这个应用涵盖了数据获取、处理、可视化和用户交互等多个方面。
记住,这只是Streamlit能力的一小部分。你还可以用它来创建机器学习模型的交互界面、数据探索工具、甚至是复杂的仪表板。Streamlit的世界等着你去探索!
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问猿小哥哦。祝大家学习愉快,Python学习节节高!