Str đầu tiên
Hơn cả một nhà khoa học và kỹ sư máy tính, tôi là một con người. Và với tư cách là một con người, nhìn thấy là một trong những trải nghiệm giác quan quan trọng và bổ ích nhất mà chúng ta có thể có. Do đó, để bắt đầu, tôi sẽ giới thiệu bảng điều khiển đầu tiên của mình được xây dựng trên khung Streamlit (với sự trợ giúp của python, pandas và Altair).
Giới thiệu
Bảng điều khiển? Hoạt cảnh? Power BI? Tại sao không chỉ sử dụng một số trang tính Excel?
Từ “bảng điều khiển” chắc chắn là một từ thông dụng thịnh hành trong lĩnh vực khoa học dữ liệu, kỹ thuật dữ liệu, kinh doanh thông minh, v.v. Nhưng bảng điều khiển là gì? Và tôi có thể làm gì với nó?
Đầu tiên, khi chúng ta nghe đến từ bảng điều khiển, người ta sẽ nhớ nhanh hơn đến cảnh sát kéo xe trong phim, thay vì một hệ thống máy tính chứa đầy các biểu đồ. “Anh không thấy biển báo chạy quá tốc độ trên bảng điều khiển của xe à?” Chà… Bảng điều khiển chỉ đơn giản là một khung trực quan chứa một số chỉ số, biểu đồ và số liệu thống kê về hiệu suất chính. Chúng có thể đáp ứng, tương tác và cập nhật trong thời gian thực. Sử dụng một cách tiếp cận khác, chúng là công cụ để trực quan hóa thông tin được sắp xếp liên quan đến một tình huống cụ thể. Tại sao giám tuyển? Bởi vì hệ thống được sử dụng thường xuyên và dữ liệu cần được giữ ở mức thiết yếu để tránh việc ứng dụng nạp quá mức. Thời gian là rất quan trọng và thông tin được tiêu hóa càng nhanh thì càng tốt.
Vì vậy… Tableau và Power BI chỉ là các khung để tạo bảng điều khiển và câu chuyện. Ngoài ra, Excel có thể được sử dụng để tạo bảng điều khiển. Trên thực tế, Excel là ông lớn của bảng điều khiển… Cuối cùng, từ này chỉ là một thuật ngữ ưa thích được sử dụng để mô tả một hệ thống thông tin chứa số liệu thống kê.
Như một số người nói, một hình ảnh tốt hơn một ngàn từ, vì vậy chúng tôi chuyển sang phần thực hành. Chúng tôi kết thúc phần giới thiệu tại đây và chuyển sang phần chọn công cụ và chọn tập dữ liệu ngẫu nhiên để thực hiện EDA, sau đó tìm các điểm căng thẳng có thể giải quyết hoặc phân tích bằng bảng điều khiển của chúng tôi và cố gắng trả lời chúng. Tất cả, trong khi bảng điều khiển song song.
ngăn xếp
Để phá vỡ một lượng lớn đá một cách hiệu quả, có lẽ người ta cần có một bộ công cụ mạnh mẽ và chuyên dụng. Danh sách tiếp theo mô tả một số công cụ được sử dụng trong dự án mini.
Hợp lý hóa . Khung nguồn mở tuân theo ba nguyên tắc chính: viết kịch bản dưới dạng hình ảnh, tương tác thông qua việc sử dụng các thành phần làm biến và triển khai nhanh. Nói cách khác, với Streamlit, có thể tạo bảng điều khiển trực quan hấp dẫn mà không cần biết cách sử dụng khung giao diện người dùng và kiểu dáng. Mô hình này cho phép hệ thống bỏ qua các chi tiết cụ thể về kiểu dáng và tập trung tất cả sự chú ý vào việc xác định KPI và phương pháp nào tốt hơn để thể hiện chúng.
bàn thờ. Công cụ trực quan hóa dữ liệu. Altair có mục đích tương tự như Matplotlib, nhưng nó được xây dựng dựa trên một bộ nguyên tắc khác. Kiểu mã hóa tuân theo mô hình khai báo và cú pháp của nó giống với định dạng JSON.
gấu trúc . Thư viện có thể được sử dụng để khám phá, làm sạch và thao tác dữ liệu dạng bảng. Cho phép nối nhiều bảng, điền giá trị còn thiếu, chuyển đổi, dọn dẹp, lọc và truy vấn.
Scikit-Tìm hiểu . Thư viện cung cấp nhiều công cụ để phân tích dữ liệu. Từ các mô hình thống kê và học máy, lịch trình đào tạo, số liệu để định lượng lỗi và dự đoán dữ liệu. Bằng cách sử dụng Scikit-Learn này, có thể phân tích dữ liệu nhanh chóng và dễ dàng. Nhưng hãy nhớ rằng các mô hình được triển khai không phải là những mô hình tiên tiến nhất.
Nặng nề . Cải thiện thời gian cần thiết để tính toán số trong hệ sinh thái Python. Dữ liệu gốc của Numpy bao gồm các mảng N-Dimensional.
dưa chua . Công cụ này được sử dụng để tuần tự hóa và giải tuần tự hóa các đối tượng Python.
Bộ dữ liệu
Dự án tập trung vào việc khám phá những gì Streamlit cung cấp, chứ không phải để thực hiện một dự án khoa học dữ liệu được quản lý từ đầu đến cuối. Vì vậy, tập dữ liệu mà chúng ta sẽ chọn gần như được chọn một cách hoàn toàn may mắn.
Phát hiện của chúng tôi bao gồm bộ dữ liệu thị trường nhà ở Seattle (Hoa Kỳ). Các phiên bản được thu thập từ ngày 14 tháng 5 đến ngày 15 tháng 5.
Các thành phần
Bây giờ, đã đến lúc kiểm tra một số thành phần bổ sung cho bảng điều khiển cuối cùng. Kiểm tra triển khai đầy đủ trên trang Github của tôi (https://github.com/LOCLuisPereira/streamlit_house_market).
Chỉ số KPI ban đầu
Số liệu KPI này là thứ đầu tiên mà người dùng nhìn thấy. Họ nên cung cấp thông tin quan trọng một cách chính xác. Streamlit cung cấp một thành phần giống như thẻ (streamlit.metric), trong đó người ta có thể xác định tiêu đề KPI, giá trị và delta. Chúng được sử dụng để nhận dạng, định lượng và đo lường sự biến động giá trị.
Trong trường hợp của chúng tôi, chúng tôi có tổng số nhà và một số giá trị trung bình khác về thị trường nhà ở Seattle (chẳng hạn như giá nhà trung bình, tình trạng số tầng, v.v.).

Bản Đồ Seattle và Phân Bố Nhà
Streamlit có một thành phần bản đồ cho phép nhà phát triển tạo nhanh một từ hoặc bản đồ thành phố (streamlit.map). Thành phần này khá đơn giản và không yêu cầu phức tạp vì mức độ tùy biến của nó thấp.
Lấy ví dụ, để kiểm tra sự phân bố phiên bản trên một thành phố nhất định, thành phần này là đủ. Nhưng để trực quan hóa phân bố cụm và màu tương ứng của chúng, cần có một công cụ khác.

Sử dụng đồ thị bản đồ Altair để trực quan hóa cụm
Thành phần bản đồ gốc của Streamlit sử dụng Altair dưới mui xe. Đơn giản vậy thôi. Chúng tôi đã nói trước đó rằng thành phần này là plug-and-play nhưng không cung cấp loại tùy chỉnh nào. Một giải pháp thay thế cho triển khai gốc là sử dụng Biểu đồ Altair và liên kết nó với thành phần Biểu đồ Streamlit-Altair.
Vị trí là chìa khóa. Đặc biệt, về kinh doanh thị trường nhà ở. Cùng một ngôi nhà có thể có giá trị nhân lên gấp 20 lần chỉ bằng cách nằm gần biển hoặc bên trong một thành phố lớn.
Để đảm bảo điều đó thực sự đúng, chúng tôi đã tiến hành một thử nghiệm. Sử dụng Scikit-Learn và các triển khai K-Means của nó, chúng tôi chạy thuật toán với số cụm khác nhau (từ 2 đến 10). Kinh độ và vĩ độ được sử dụng làm đối tượng địa lý. Từ mỗi lần chạy, chúng tôi kiểm tra giá nhà ở trung bình.
Bước cuối cùng, trực quan hóa, được thực hiện bằng cách hợp nhất ba thành phần. Một thanh trượt để chọn số cụm mong muốn. Bản đồ Altair để hiển thị các cá thể và vị trí bản đồ của chúng. Và một khung dữ liệu, để hiển thị giá trung bình cho mỗi cụm.


Cuối cùng, vị trí thực sự quan trọng. Khi chúng tôi đi từ Nam ra Bắc, giá nhà tăng lên. Những ngôi nhà ở bên trái Seattle có xu hướng rẻ hơn. Trong thị trường nhà ở, một số yếu tố có thể ảnh hưởng đến giá cả. Ví dụ, những ngôi nhà ở phía bên phải gần đất liền hơn và dễ dàng di chuyển đến các khu vực khác của Seattle hoặc các thành phố lân cận. Lý do này không quan trọng, nhưng có thể ảnh hưởng đến giá cuối cùng của ngôi nhà.
Lớp và điều kiện
Thành phần này đơn giản và ngắn gọn. Bằng cách sử dụng hai biểu đồ thanh, `streamlit.bar_chart`, chúng tôi đã vẽ biểu đồ phân phối điều kiện và cấp độ. Bằng cách trực quan hóa biểu đồ, chúng tôi kết luận rằng phần lớn các trường hợp nằm ở giữa (đối với cả hai biểu đồ).

Chúng tôi đã vẽ hai tính năng này với nhau. Nếu chúng ta coi điểm trung bình là trung lập, thì phần lớn các ngôi nhà có xu hướng nằm ở phía trung lập của điểm. Nếu không trung lập, họ sẽ rơi vào điểm tích cực rụt rè.

Làm thế nào về việc cải tạo nhà? Một bộ KPI khác
Bằng cách sử dụng streamlit.metric, chúng tôi đã triển khai ba chỉ số KPI nội tuyến để nhanh chóng phân tích dữ liệu liên quan đến việc cải tạo nhà ở. Chúng tôi đã chỉ ra số lượng những ngôi nhà được cải tạo, đại diện của chúng so với những ngôi nhà còn lại và khoảng thời gian giữa năm xây dựng và năm cải tạo là bao nhiêu.

Bằng cách nhìn vào bảng điều khiển, chúng tôi thấy rằng 914 ngôi nhà đã được cải tạo. Và những ngôi nhà có xu hướng được khôi phục sau 56 năm kể từ khi xây dựng.
Một trang tổng quan không có biểu đồ đường? Không thể nào…
Biểu đồ đường có xu hướng khá phổ biến. Streamlit cung cấp một thành phần bọc để vẽ chúng một cách nhanh chóng và dễ dàng. Trên bảng điều khiển của chúng tôi, chúng tôi sử dụng chúng để xem doanh số bán nhà mỗi tháng.

Hãy xem nhanh… Tháng bán chạy nhất là tháng 7 năm 2014 và tháng 4 năm 2015.
Phòng ngủ và phòng tắm? Xếp chồng hoặc cân bằng chúng?
Đôi khi, nhiều hơn không liên quan chặt chẽ với tốt hơn. Để xác nhận hoặc gỡ lỗi, chúng tôi triển khai một ký tự bản đồ nhiệt có liên quan đến số lượng phòng ngủ, phòng tắm và giá trung bình cho mỗi tổ hợp phòng ngủ-phòng tắm.
Khi nhìn vào biểu đồ mới, chúng ta có thể thấy rằng việc cân bằng số lượng phòng ngủ và phòng tắm là điều cơ bản. Ngành công nghiệp ủng hộ tỷ lệ 1:1 và nhiều phòng tắm hơn phòng ngủ.
Khi xếp chồng phòng ngủ, giá có xu hướng trong cùng một phạm vi. Nhưng khi thêm phòng tắm, giá luôn có xu hướng tăng lên.

Điều này có lẽ có thể được giải thích bằng cách làm theo một lý do đơn giản. Người ta không thích chờ đợi, và người ta không thích chia sẻ những không gian cực kỳ riêng tư. Tóm lại, việc cho phép cư dân và khách có mức độ riêng tư cao hơn dẫn đến giá trị tài sản cao hơn.
Tôi có một bất động sản ở Seattle… Bạn có thể giúp tôi tìm một mức giá hợp lý để bán không?
Chúng ta có thể giải cấu trúc câu hỏi này thành hai vấn đề nhỏ hơn. Chúng ta có thể làm gì để kết nối luồng thông tin từ người dùng đến hệ thống thông tin của chúng ta. Và chúng ta có thể sử dụng bất kỳ thuật toán học máy nào để tiêu hóa dữ liệu và quy một mức giá có thể cho thông tin đầu vào không.
Streamlit cung cấp một số thành phần tự động kết nối giao tiếp giữa người dùng và hệ thống. Trong trường hợp cụ thể này, chúng tôi sẽ sử dụng các thành phần biểu mẫu. Thành phần này cho phép hợp nhất các thành phần khác với yêu cầu duy nhất là nút cuối cùng, nút này sẽ kích hoạt việc gửi dữ liệu.

Thông tin từ thành phần biểu mẫu được đưa vào hai mô hình được đào tạo trước. Sau khi suy luận, dữ liệu được gửi vào bảng điều khiển và người dùng có thể thấy hai ước tính giá trị có thể có.
Vì nhiệm vụ của dự án là xây dựng một bảng điều khiển và khám phá phần lớn các thành phần của Streamlit, nên chúng tôi đã sử dụng hai thuật toán mô hình máy học cơ bản, được triển khai trên Scikit-Learn. Cuối cùng, chúng ta có Bayesian Ridge và Random Forest với điểm R2 là 0,54 và 0,87 trên toàn bộ dữ liệu.

Người ta có thể đặt câu hỏi, tại sao giữ một mô hình với số điểm 0,54? Chúng tôi giữ là như một trò đùa. Mô hình đôi khi xuất ra các giá trị âm. Nói theo thứ tự, mô hình cho chúng ta biết rằng chúng ta có thể mua một ngôi nhà… và nhận tiền để giữ nó.
Có gì bên trong Dataframe?
Đối với tác vụ này, Streamlit cung cấp ba tùy chọn khác nhau. Một cho bảng tĩnh, một cho khung dữ liệu và một cho JSON. Ở đây, chúng ta sẽ tập trung vào hai điều cuối cùng.
Chức năng của Dataframe xuất ra một bảng cho phép hiển thị cấu trúc của tập dữ liệu theo cách dạng bảng. Có thể sắp xếp các cột tăng dần hoặc giảm dần, giúp cải thiện khả năng hiển thị và ngữ nghĩa dữ liệu.

Đầu ra của JSON giống với hàm kết xuất, với phần chú ý, có nguồn gốc từ thư viện JSON của Python.

Cả hai thành phần đều có trường hợp sử dụng. Thành phần khung dữ liệu có thể được sử dụng để nhanh chóng phân tích thông tin, chẳng hạn như tìm giá trị lớn nhất, giá trị nhỏ nhất, kiểm tra các giá trị bị thiếu hoặc không, v.v. JSON là tuyệt vời để kiểm tra cấu trúc dữ liệu và loại nào ngoại trừ từng trường trên tập dữ liệu.
Lượt đi cuối cùng
Đây là phần cuối của con đường cho dự án này. Chúng tôi đã không khám phá bất kỳ thuật toán phức tạp hoặc hiện đại nào. Chúng đơn giản về lý thuyết và thực hiện. Nhưng với việc triển khai này, chúng tôi có thể suy nghĩ và trả lời các câu hỏi về mức độ tốt của khung và liệu nó có tương thích với ngăn xếp của chúng tôi hay không.
Cuối cùng, Streamlit có thể cung cấp những gì nó đề xuất. Tạo một bảng điều khiển dễ dàng như viết một kịch bản. Dữ liệu được hiển thị theo cách tương tác và có tổ chức. Mặc dù chúng tôi không giới thiệu nó, nhưng việc triển khai một nguyên mẫu rất nhanh chóng và dễ dàng.
Tại thời điểm này, chúng ta chỉ có thể thấy hai nhược điểm có thể xảy ra. Định tuyến và tạo kiểu. Định tuyến cho bảng điều khiển nhiều trang. Tạo kiểu để mở rộng cơ chế tạo kiểu hiện tại và cho phép mức độ tùy chỉnh cao hơn.
Việc sử dụng Streamlit của cá nhân tôi rất đơn giản. Tôi khá hào hứng để sử dụng trong các dự án khác của tôi. Tạo nguyên mẫu hoặc bảng điều khiển nội bộ rất nhanh, kết quả mang tính thẩm mỹ và EDA thậm chí còn trở nên thú vị hơn… vì chúng tôi có thể trực quan hóa dữ liệu trên giao diện người dùng đơn giản như thế nào.
Thưởng. Còn bảng điều khiển thời gian thực thì sao?
Trong dự án của chúng tôi, chúng tôi không cần cập nhật dữ liệu theo thời gian thực. Nhưng Streamlit cung cấp các phương pháp để triển khai trực quan hóa dữ liệu theo thời gian thực. Cơ chế rất đơn giản. Tạo một thành phần trống, đặt vòng lặp, tìm nạp và cung cấp dữ liệu… Voilà! Luồng dữ liệu liên tục và thời gian thực. Xem những hình ảnh dưới đây như một bằng chứng về khả năng của khung.


Đó là nó! Hẹn gặp lại bạn lần sau.