Python生态中有不少工具可以支持大屏数据展示,其中Dash和Streamlit是上手难度低、开发效率高的两个主流框架,二者都基于Python语法,不需要开发者掌握HTML、CSS、JavaScript等前端知识,就能快速构建出交互式的Web数据看板。

Dash框架构建数据看板
Dash是由Plotly团队开发的Web应用框架,基于Flask、React和Plotly.js实现,适合构建复杂的、带有丰富交互功能的数据看板,支持自定义布局和组件样式。
环境准备
首先需要安装Dash相关依赖,执行以下命令:
pip install dash pandas plotly
基础示例实现
下面是一个展示销售数据柱状图的简单Dash看板示例:
import dash
from dash import dcc, html
import pandas as pd
import plotly.express as px
# 初始化Dash应用
app = dash.Dash(__name__)
# 准备示例数据
data = {
"月份": ["1月", "2月", "3月", "4月", "5月", "6月"],
"销售额": [12000, 15000, 13000, 18000, 20000, 17000]
}
df = pd.DataFrame(data)
# 生成图表
fig = px.bar(df, x="月份", y="销售额", title="上半年月度销售额统计")
# 定义页面布局
app.layout = html.Div([
html.H1("销售数据看板", style={"textAlign": "center"}),
dcc.Graph(id="sales-bar-chart", figure=fig),
html.Div([
html.Label("选择展示月份范围:"),
dcc.RangeSlider(
id="month-slider",
min=0,
max=5,
step=1,
marks={i: month for i, month in enumerate(df["月份"])},
value=[0, 5]
)
], style={"marginTop": "20px"})
])
# 启动应用
if __name__ == "__main__":
app.run_server(debug=True, port=8050)
运行上述代码后,访问127.0.0.1:8050就能看到对应的Web数据看板,拖动滑块可以筛选展示的月份数据。
Streamlit框架构建数据看板
Streamlit是更轻量的Python Web应用框架,语法更简洁,适合快速原型开发,不需要手动定义布局,按照代码执行顺序就能生成页面组件。
环境准备
安装Streamlit相关依赖:
pip install streamlit pandas plotly
基础示例实现
同样实现上半年销售额展示的看板,Streamlit的代码更简短:
import streamlit as st
import pandas as pd
import plotly.express as px
# 设置页面标题
st.title("销售数据看板")
# 准备示例数据
data = {
"月份": ["1月", "2月", "3月", "4月", "5月", "6月"],
"销售额": [12000, 15000, 13000, 18000, 20000, 17000]
}
df = pd.DataFrame(data)
# 添加侧边栏筛选组件
month_range = st.sidebar.slider(
"选择展示月份范围",
min_value=0,
max_value=5,
value=(0, 5)
)
# 筛选数据
filtered_df = df.iloc[month_range[0]:month_range[1]+1]
# 生成并展示图表
fig = px.bar(filtered_df, x="月份", y="销售额", title="上半年月度销售额统计")
st.plotly_chart(fig)
# 展示原始数据表格
st.subheader("原始销售数据")
st.dataframe(filtered_df)
运行命令streamlit run 文件名.py后,会自动打开浏览器展示看板页面,侧边栏的滑块可以实时筛选数据。
两个框架的对比与选择
两者核心差异如下:
| 对比维度 | Dash | Streamlit |
|---|---|---|
| 上手难度 | 中等,需要了解布局组件概念 | 极低,语法接近普通Python脚本 |
| 布局灵活性 | 高,支持自定义复杂布局 | 低,按代码顺序自动排列组件 |
| 适用场景 | 复杂交互、定制化要求高的企业级看板 | 快速原型、简单展示的内部工具看板 |
| 部署难度 | 中等,基于Flask可对接常规部署流程 | 低,官方提供云部署服务,也支持常规部署 |
如果是需要快速验证想法、开发简单的展示类看板,优先选择Streamlit;如果需要构建复杂交互、样式定制要求高的正式数据大屏,Dash会更合适。两个框架都能满足Python快速构建Web数据看板的需求,开发者可以根据实际场景选择。