
Sesuai dengan judulnya, kita akan berbicara tentang pustaka Panel, yang memungkinkan Anda untuk mengubah notebook Jupyter menjadi aplikasi web yang aman, di mana isinya disembunyikan dari pengguna non-teknis, tetapi masih ada kebebasan untuk memanipulasi parameter internal, yaitu, tidak hanya membangun kembali data, tetapi juga membuat permintaan ke kernel. TL; DR Shiny untuk Python.
Salah satu masalah utama analitik bisnis adalah betapa pun kerennya,
seringkali tidak menjangkau pengguna yang membuat keputusan berdasarkan itu. CTO IBM AI dan sains data
mengatakan bahwa hanya 13% proyek di bidang sains data yang menuju produksi dan salah satu alasan utamanya adalah kerja sama yang sulit dari semua yang terlibat dalam proyek. Dengan mempersempit kesenjangan antara ahli data, pemrogram yang menyebarkan proyek dan analis domain, Anda dapat secara signifikan meningkatkan keseluruhan knalpot, mengurangi waktu dan membuat produk akhir lebih bijaksana.
Masalah ini diselesaikan oleh beberapa produk yang saat ini tersedia di ceruk ini.
Untuk penyebaran yang bagus dan terukur, ada
Dash . Dalam
posting terakhir saya, saya melakukan sedikit
ilustrasi pada contoh analisis pasar mobil bekas. Untuk keuntungan Dasha, Anda perlu membayar harga dalam bentuk aplikasi terpisah yang perlu ditulis secara terpisah, Plotly didukung dari grafik, Anda perlu merancang antarmuka, mengubah beberapa CSS / HTML, dan ketika memperbarui model analisis, jika ada di notebook, Anda perlu mendukung dua kode, secara umum sangat tidak nyaman saat proyek sedang dalam pengembangan.
Dari ujung yang lain,
Voila dan
Panel memecahkan masalah (Voila harus dengan cepat, dalam suara D'Artagnanowski, untuk mengatakan: "Voila!"). Voila berasal dari notepad dan mendukung widget interaktif Jupyter yang dengannya ia dapat berkomunikasi dengan kernel dari aplikasi web, terlepas dari bahasanya (pembuatnya berbicara tentang independensi bahasa, tetapi bagi R itu tidak relevan bagi mereka untuk memiliki Shiny, dan tidak ada analitik bisnis pada Julia ) Voila memungkinkan Anda membuat aplikasi interaktif dalam dua klik (tidak termasuk pendahuluan, misalnya, ipywidgets, di sana Anda harus mengklik dengan baik). Panel adalah solusi python murni dan pergi ke masalah yang sama dari sisi lain - dari server, sementara notepad dan Jupyter adalah opsional. Model ini dapat disimpan dalam file python biasa dan server tidak akan memerlukan seluruh ekosistem Jupyter. Panel tidak dirancang untuk perpustakaan khusus untuk grafik (
contoh diberikan pada matplotlib, bokeh, altair dan plotly).
Kedua opsi - Panel dan Voila tidak optimal untuk digunakan sebagai aplikasi yang dimuat, tetapi mereka tidak dimaksudkan untuk ini, idenya adalah untuk melakukan analisis, mengajukan dasbor dengan hasilnya, letakkan tautan ke analis / manajer, biarkan mereka bermain dengan parameter dan permintaan, perbaiki perantara. hasil. Jika Anda tiba-tiba perlu mengajukan aplikasi berumur panjang untuk berbagai orang - Anda dapat mentransfer ke Dash dan menggunakan perunggu.
Selanjutnya, ilustrasi kecil tentang bagaimana proses terlihat. Mari kita buat dasbor sederhana berdasarkan data pada pasar mobil bekas di Perancis dan Jerman (hanya karena sudah dekat, Anda bisa berkenalan dengan detail dataset di
pos lain). Dari fungsional, dimungkinkan untuk menghitung harga rata-rata tergantung pada usia dan standar deviasi mereka berdasarkan statistik pada proposal untuk model, dan membangun distribusi harga yang dihaluskan dari kebisingan selama tahun tersebut.
Pertama, buat dasbor di Panel, lalu gunakan Voila. Notes bersama dengan data dapat diunduh dari
repositori , atau jelajahi melalui nbviewer (
panel ,
voila ).
Saya akan meninggalkan tindakan tidak berbeda dari hanya analisis di buku catatan tanpa detail, mereka dapat dilihat di buku catatan dengan tautan, tidak ada yang baru di sana.
Untuk memulai, kami mengimpor perpustakaan dan data. Saya akan menggunakan Bokeh untuk grafik, karena saya memilikinya standar dan ada yang kosong untuk copy paste.
Selanjutnya, kami akan menyiapkan beberapa fungsi:
wm dan std untuk menggunakannya saat mengelompokkan data dalam panda
default_graph dan default_bar_plot - buat kosong grafik kosong
color_picker - untuk mendistribusikan objek yang dipilih dalam palet warna
Pada bagian utama, kami mendeklarasikan widget yang digunakan
Selanjutnya, kami membuat fungsi yang menggambarkan interaksi menggunakan dekorator.
@pn.depends(multi_select.param.value, year_slider.param.value, checkbox.param.value) def update(models, year, checkbox_status):
Widget memungkinkan Anda memilih daftar model, memilih tahun untuk melihat distribusi penawaran berdasarkan harga, dan juga menunjukkan / menyembunyikan standar deviasi harga dari rata-rata untuk tahun itu pada grafik tren.
Di dalam interaksi, kami membuat grafik kosong, lalu untuk semua elemen yang dipilih, kami membuat statistik, membuat elemen grafik (garis, spidol, statistik kesalahan),
satukan semuanya dan kembalikan grafik sebagai dua tab untuk tampilan ringkas.
return pn.Tabs(('Distribution', bokehdist), ('Trend', bokehfig))
Selanjutnya, kami membuat tata letak kami dengan menempatkan widget dan tab dengan grafik di dalamnya.
Proses ini menyenangkan dengan kesederhanaan dan fleksibilitas ek, karena presentasi tabel sederhana.
pn.Row(pn.Column('### Dashboard demo', multi_select, year_slider, checkbox), update).servable()
Metode servable () membuat dasbor kami tersedia untuk dijalankan oleh server panel
secara independen dari baris perintah yang mengubah pengaturan server. Jika kita terus bekerja dengan notepad, maka semua fungsi interaktif tersedia untuk kita di dalamnya. Untuk menguji bagaimana tampilan aplikasi untuk pengguna eksternal, tambahkan metode show (). Dalam hal ini, semua upaya tambahan kami sudah selesai, dan mereka tidak berbeda secara signifikan dengan hanya membuat grafik.
Seperti inilah tampilan dashboard di notebook.

Jika kami ingin membuat dasbor dapat diakses dari luar localhost, kami harus diizinkan untuk melayani permintaan dari luar, dengan memasukkan daftar putih dengan hati-hati atau dengan gerakan lebar seperti
panel serve Dashboard_demo_panel.ipynb --allow-websocket-origin=*
Aplikasi yang akan dilihat analis tidak berbeda dengan yang ada di notebook

Para penulis mengatakan bahwa itu tidak akan memungkinkan kode pihak ketiga untuk dieksekusi, tetapi tingkat perlindungan di
webinar baru-baru
ini dikatakan agak mengelak. Untuk berbagi dengan analis - itu sudah cukup, tidak perlu hal-hal seperti itu dikumpulkan pada lutut untuk menonjol.
Terakhir, mari kita bandingkan cara melakukan hal yang sama menggunakan Voila.
Versi dengan ipywidgets dan bokeh tidak terbang untuk saya, bersumpah di javascript di output.
Karena itu, saya melihatnya di grafik statis matplotlib.
Untuk merakit antarmuka yang sama dari ipywidgets dengan daftar drop-down, slider, kotak centang dan dua tab membutuhkan upaya dan kruk, tidak memiliki fleksibilitas tabel yang sama. Badan fungsi utama harus digergaji untuk menarik grafik melintasi tab, yaitu notebook harus disesuaikan lebih dari pada kasus pertama.
Untuk memulai aplikasi web dengan ekstensi terinstal untuk Jupyter, satu klik sudah cukup. Gambarannya sangat mirip. Karena perbedaan fungsionalitas - widget Interaktif yang digunakan tidak menghitung fungsi secara default, oleh karena itu grafik hanya muncul setelah interaksi pertama dengan pengguna.

Secara pribadi, menurut perasaan saya - Panel jelas menang dalam hal kegunaan. Hasil yang sama diperoleh untuk jumlah tindakan yang jauh lebih kecil dan upaya tambahan untuk menambahkannya ke notebook minimal. Jadi semuanya ramah dan dengan gembira pindah ke panel!