Giới Thiệu
Trong bài viết này, chúng ta sẽ khám phá ba công cụ mạnh mẽ dựa trên Python để tạo bảng điều khiển và báo cáo – Streamlit, Dash, và Bokeh. Chúng ta sẽ tập trung vào Streamlit, trình bày cách xây dựng một bảng điều khiển bán hàng đơn giản nhưng tương tác với Python, và cuối cùng là triển khai nó lên đám mây.
Tại Sao Công Cụ Minh Họa Quan Trọng
Việc biến dữ liệu thành những thông tin có thể hành động đòi hỏi nhiều hơn là những biểu đồ tĩnh. Các công cụ như Streamlit, Dash và Bokeh cho phép bạn tạo ra bảng điều khiển tương tác cho phép các bên liên quan lọc, khám phá và đưa ra quyết định trong thời gian thực.
- Streamlit: Nhanh chóng để xây dựng, rất thân thiện với Python, yêu cầu ít mã.
- Dash: Linh hoạt hơn cho các ứng dụng đa trang phức tạp, dựa trên Plotly.
- Bokeh: Thư viện minh họa mạnh mẽ, thường được nhúng trong các ứng dụng web.
Trong bài viết này, chúng ta sẽ sử dụng Streamlit, vì nó kết hợp giữa tốc độ và sự đơn giản.
Ví Dụ Thực Tế: Bảng Điều Khiển Bán Hàng
Chúng ta sẽ xây dựng một bảng điều khiển nhỏ mà:
- Hiển thị tổng doanh thu và giá trị đơn hàng trung bình.
- Cho phép người dùng lọc theo danh mục sản phẩm.
- Hiển thị xu hướng doanh thu theo thời gian.
python
# sales_dashboard.py
import streamlit as st
import pandas as pd
import numpy as np
st.set_page_config(page_title="Bảng Điều Khiển Bán Hàng", layout="wide")
st.title("📊 Bảng Điều Khiển Bán Hàng")
st.markdown("Một bảng điều khiển tương tác để khám phá hiệu suất bán hàng.")
# Tạo dữ liệu mẫu
@st.cache_data
def load_data():
np.random.seed(42)
dates = pd.date_range("2023-01-01", periods=100)
categories = ["Điện Tử", "Thời Trang", "Nội Thất"]
data = {
"date": np.random.choice(dates, 500),
"category": np.random.choice(categories, 500),
"sales": np.random.randint(50, 500, 500)
}
return pd.DataFrame(data)
df = load_data()
# Bộ lọc thanh bên
st.sidebar.header("Bộ Lọc")
categories = st.sidebar.multiselect("Chọn Danh Mục", options=df["category"].unique(), default=df["category"].unique())
# Lọc dữ liệu
df_filtered = df[df["category"].isin(categories)]
# KPIs
total_sales = int(df_filtered["sales"].sum())
avg_order = round(df_filtered["sales"].mean(), 2)
col1, col2 = st.columns(2)
col1.metric("Tổng Doanh Thu", f"${total_sales}")
col2.metric("Giá Trị Đơn Hàng Trung Bình", f"${avg_order}")
# Biểu đồ
sales_over_time = df_filtered.groupby("date")["sales"].sum().reset_index()
st.line_chart(sales_over_time.set_index("date"))
st.subheader("Dữ Liệu Chi Tiết")
st.dataframe(df_filtered)
Yêu Cầu
plaintext
streamlit
pandas
numpy
Triển Khai Bảng Điều Khiển
Tùy Chọn A: Streamlit Community Cloud
- Đẩy mã của bạn (
sales_dashboard.py+requirements.txt) lên GitHub. - Truy cập Streamlit Community Cloud và đăng nhập bằng GitHub.
- Tạo một ứng dụng mới, chỉ định nó đến kho của bạn, và chọn
sales_dashboard.pylàm tệp đầu vào. - Nền tảng sẽ xây dựng và cho bạn một URL có thể chia sẻ.
Tùy Chọn B: Render
-
Đẩy kho của bạn lên GitHub.
-
Tạo một Web Service trên Render.
-
Đặt lệnh xây dựng:
plaintextpip install -r requirements.txt -
Đặt lệnh khởi động:
plaintextstreamlit run sales_dashboard.py --server.port $PORT --server.address 0.0.0.0 -
Triển khai và nhận một URL công cộng.
Tại Sao Streamlit Là Lựa Chọn Tốt Nhất
- Prototyping nhanh: Xây dựng một bảng điều khiển hoạt động chỉ trong dưới 50 dòng mã.
- Thân thiện với Python: Không cần học JavaScript hay HTML.
- Thân thiện với đám mây: Triển khai chỉ với một cú nhấp chuột với Community Cloud.
Những Lưu Ý Quan Trọng
- Đảm bảo kiểm tra từng bước trước khi triển khai để tránh lỗi không đáng có.
- Sử dụng các bộ lọc hợp lý để giảm thiểu khối lượng dữ liệu hiển thị.
Kết Luận
Dash và Bokeh là tuyệt vời cho những trường hợp sử dụng cụ thể, nhưng nếu mục tiêu của bạn là tốc độ, sự rõ ràng, và chia sẻ kết quả nhanh chóng, Streamlit thường là công cụ tốt nhất. Với chỉ một vài dòng mã, bạn có thể biến dữ liệu thô thành một bảng điều khiển tương tác sẵn sàng cho các bên liên quan.
Câu Hỏi Thường Gặp
Streamlit có miễn phí không?
Có, Streamlit có phiên bản Community Cloud miễn phí cho phép bạn triển khai ứng dụng của mình.
Tôi có thể sử dụng Streamlit với dữ liệu lớn không?
Có, nhưng bạn cần có các kỹ thuật tối ưu hóa để xử lý dữ liệu lớn.
Streamlit có hỗ trợ cho các biểu đồ phức tạp không?
Có, bạn có thể sử dụng các thư viện khác như Matplotlib hoặc Plotly để tạo biểu đồ phức tạp hơn trong Streamlit.