0
0
Lập trình
Admin Team
Admin Teamtechmely

Từ Dữ Liệu đến Bảng Điều Khiển: Tạo Báo Cáo Tương Tác với Streamlit

Đăng vào 1 tháng trước

• 3 phút đọc

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 Copy
# 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 Copy
streamlit
pandas
numpy

Triển Khai Bảng Điều Khiển

Tùy Chọn A: Streamlit Community Cloud

  1. Đẩy mã của bạn (sales_dashboard.py + requirements.txt) lên GitHub.
  2. Truy cập Streamlit Community Cloud và đăng nhập bằng GitHub.
  3. Tạo một ứng dụng mới, chỉ định nó đến kho của bạn, và chọn sales_dashboard.py làm tệp đầu vào.
  4. 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

  1. Đẩy kho của bạn lên GitHub.

  2. Tạo một Web Service trên Render.

  3. Đặt lệnh xây dựng:

    plaintext Copy
    pip install -r requirements.txt
  4. Đặt lệnh khởi động:

    plaintext Copy
    streamlit run sales_dashboard.py --server.port $PORT --server.address 0.0.0.0
  5. 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.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào