Ana içeriğe geç

Mastering Shiny for Python: A Beginner’s Guide to Building Interactive Web Applications

Explore the basics of Shiny for Python so you can start making interactive dashboards and web applications with this new library quickly!

Yapay Zeka ile Keşfedin

Shiny’ye Giriş ve Sağladığı Faydalar

R ile çalışma deneyimi olanlar, etkileşimli web uygulamaları oluşturmanıza olanak tanıyan Shiny paketini muhtemelen duymuştur. R Shiny 2012’de yayınlandı ve kullanımının kolay olduğu anlaşılınca, bilim insanların ve analistlerin daha etkileşimli modeller ve panolar oluşturabilmesine imkan sağladığı için talep hızla arttı.

2023’te, Python için Shiny alfa sürecinden çıktı ve Python dili için benzer, tepkisel (reactive) bir çerçeve sundu. Shiny, kapsamla web geliştirme becerilerine gerek kalmadan web tabanlı panolar ve uygulamalar oluşturmada sağladığı sadelik ve etkililikle bilinir.

Shiny nedir?

Shiny, R için ve yakın zamandaki geliştirmelerle Python için de kullanılabilen açık kaynaklı bir web uygulama çerçevesidir. Veri profesyonellerinin analizlerini etkileşimli web uygulamalarına dönüştürmesine olanak tanır. Shiny’nin çekirdeğinde, girdi değişikliklerinin (kaydırıçlar veya düğmeler gibi) çıktıları (grafikler veya tablolar gibi) otomatik olarak güncellediği tepkisel programlama kavramı yer alır.

Web tabanlı uygulamalar oluşturmak için Shiny çerçevesinin birçok faydası vardır. Shiny, tepkisel programlamadan yararlanarak kullanıcı girdilerine dinamik olarak yanıt veren uygulamalar oluşturmanıza olanak tanır; bu da daha ilgi çekici ve kişiselleştirilmiş bir deneyim yaratır. Shiny’nin kullanıcı dostu bir kütüphanesi ve kapsamlı dokümanları bulunur; böylece temel programlama bilgisi olanlar bile etkileşimli ve görsel açıdan çekici uygulamalar geliştirebilir. Python meraklıları için Shiny, Python’un zengin veri bilimi ekosistemi ile Shiny’nin web geliştirme yetenekleri arasında bir köprü sunar.

Shiny çerçevesinin değerli olacağı bazı örnekler şunlardır:

  • Etkileşimli Panolar: Shiny, kullanıcıların verileri gerçek zamanlı olarak keşfetmesine ve görselleştirmesine olanak tanıyan etkileşimli panolar oluşturmak için idealdir. Mükemmel bir pano tasarlamak için bu ipuçlarını kullanabilirsiniz.
  • Veri Keşi: Analistler, kullanıcıların veri kümesini etkileşimli olarak keşfetmesini, parametreleri ve görselleştirmeleri anında ayarlamasını sağlayan uygulamalar için Shiny’yi kullanabilir.
  • Karar Destek Sistemleri: Shiny, dinamik içgörüler sunarak veriye dayalı karar vermeyi kolaylaştıran karar destek sistemleri geliştirmede kullanılabilir.
  • Eğitim Araçları: Shiny, etkileşimli öğretim materyalleri ve gösterimler oluşturmayı sağladığı için eğitim bağlamında da değerlidir.

Not: R için Shiny ile Python için Shiny farklıdır. Altyapıdaki kavramlar benzer olsa da sözdizimi ve terimler birebir değiştirilebilir değil. R için Shiny kullanmayı biliyorsanız, Python için Shiny öğrenirken öne geçersiniz; ancak Python’a uyum sağlamak için yapılan farklılıkları yine de öğrenmeniz gerekir.

Shiny’nin diğer web uygulama çerçeveleriyle karşılaştırılması

Veri bilimi için web uygulama geliştirmeyi değerlendirirken, Shiny’nin diğer çerçevelere göre konumunu anlamak faydalıdır.

Shiny, benzersiz bir sadelik ve esneklik bileşimi sunar. Ancak Python sürümü, diğer çerçevelere kıyasla görece yenidir. Shiny, Python kodlama bilgisi olan herkes için web uygulamaları geliştirmeyi erişilebilir kılmak üzere tasarlanmıştır.

Ayrıca, kullanım kolaylığının yanı sıra ölçeklemeyi sorunsuz kılacak şekilde tasarlanmıştır; önbellekleme ve seçici tepkiselliği kullanarak tepkisel çerçevesini verimli tutar. Bu da ona bazı diğer web tasarım çerçevelerine göre avantaj sağlar. Bildirimsel sözdizimi ve tepkisel programlama modeli, kapsamla web geliştirme uzmanlığı olmadan da veri analistlerinin etkileşimli uygulamalar oluşturmasını mümkün kılar.

Buna karşın, Dash ve Streamlit gibi diğer çerçeveler farklı güçlü yanlar sunar. Dash, Python’a özgü sözdizimi kullanır ve hızlı geliştirmeyi ön plana çıkarır. Streamlit, otomatik oluşturma ile hızlı prototiplemede öne çıkar; ancak girdiler değiştiğinde tüm programı yeniden çalıştırır ve uygulamalar büyüdükçe verimsizlik yaratabilir. Flask ve Django, esneklik ve kontrol sağlayan genel amaçlı web çerçeveleridir; ancak genellikle daha fazla web geliştirme uzmanlığı gerektirir. Bunları öğrenmek ilginizi çekiyorsa, DataCamp’in Django eğiticisini okuyabilirsiniz.

Koda dayalı web geliştirme platformlarının yanı sıra, veri analistleri benzer pano oluşturma amaçları için Tableau ve Power BI’ı da kullanır. Bunlar, güçlü araçlar sunan veri görselleştirme platformlarıdır; ancak lisans maliyetleri vardır. Ayrıca bu programlar, saf koda kıyasla sınırlı analiz özelliklerine sahiptir ve çoğu karmaşık modelleme ve analizlerin başka yerde yapılmasını gerektirir. DataCamp’te Power BI hakkında daha fazla bilgi edinebilirsiniz.

Belirli bir veri bilimi uygulaması için en uygun çerçeveyi seçerken proje gereksinimlerini, dil tercihlerini ve özel özellik ihtiyaçlarını dikkate almak önemlidir. Diğer çerçeveler kendi güçlü yanlarını getirirken, Shiny’nin sadelik ve esnekliğin benzersiz karışımı ile Python entegrasyonu, veri bilimi projelerini yükseltmek isteyen herkes için onu cazip bir seçenek haline getirir.

Çerçeve

Ana Özellikler

Dil Desteği

Öğrenme Eğrisi

Kullanım Alanı

Shiny

Sadelik ve çok yönlülülülük

R, Python

Düşük

Etkileşimli uygulamalar ve görselleştirmeler

Dash

Python’a özgü sözdizimi

Python

Orta

Hafif web uygulamalarını hızlı geliştirme

Streamlit

Otomatik oluşturma ile hızlı prototipleme

Python

Düşük

Veri uygulamaları için hızlı prototipleme

Flask

Genel amaçlı web çerçevesi

Python

Orta ila Yüksek

Tam donanımlı web uygulamaları

Django

Yüksek seviyeli Python web çerçevesi

Python

Orta ila Yüksek

Ölçeklenebilir web uygulamaları ve hizmetler

Tableau/Power BI

Veri görselleştirme platformları

Uygulanamaz

Düşük

İş Zekâsı Görselıstirme

Geliştirme Ortamını Kurma

Python için Shiny’nin harika yanlarından biri, hiçbir şey indirip yüklemeden uygulamanızı oluşturabileceğiniz bir web düzenleyicisinin bulunmasıdır. Bu web düzenleyici, başlamanıza ve yeni Shiny uygulamanızı denemenize yardımcı olacak birçok uygulama ve işlevsellik örneğiyle birlikte gelir.

Ancak geliştirmenizin bir aşamasında, muhtemelen Shiny’yi yerel cihazınızda çalıştırmak isteyeceksiniz. Bu bölüm, Python ve Shiny’nin ve bunların bağımlılıklarının kurulumunun yanı sıra yerel ortamınızı sorunsuz çalışır hale getirmek için gerekli yapılandırmalar konusunda size rehberlik edecektir.

Python’ın kurulumu

Shiny ile çevrimdışı çalışmaya başlamak için bilgisayarınızda Python kurulu olmalıdır. Henüz Python kurmadıysanız, resmi Python web sitesini ziyaret edip python.org adresinden işletim sisteminize uygun en son sürümü indirin. Daha önceden Python kurduysanız, Shiny’nin doğru çalışmasını sağlamak için en yeni sürüme güncellemeyi öneririm.

İndirilen yükleyiciyi çalıştırın ve kurulum sürecinde "Add Python to PATH" kutucuğunu işaretleyin. Bu, komut satırından Python çalıştırmayı kolaylaştırır. Bir komut istemi veya terminal açın ve Python’un başarıyla kurulduğunu doğrulamak için python --version yazın. Sürüm numarasını görmelisiniz. Ayrıca, kolaydır diye Tümleşik Geliştirme Ortamı (IDE) de kurmayı tercih edebilirsiniz.

Shiny’nin kurulumu

Python ayarlandıktan sonra Shiny’yi kurabilirsiniz. En yeni Python sürümüne sahip olduğunuz sürece, bir komut istemi veya terminal açıp pip kullanarak Python için Shiny kütüphanesini kurmak için aşağıdaki komutu kullanabilmelisiniz:

pip install shiny

pip yerine conda kullanıyorsanız, bunun yerine şu komutu kullanın:

conda install -c conda-forge shiny

Sistem yapılandırmanıza bağlı olarak Shiny’nin ek bağımlılıkları olabilir. Bu bağımlılıkların kurulduğundan Shiny dokümanlarındaki talimatları izleyerek emin olun.

Geliştirme ortamının yapılandırılması

Artık Python ve Shiny kurulduğuna göre, ele almanız gereken üç konu daha var.

  1. IDE: VS Code gibi bir IDE kullanıyorsanız, Shiny çıktılarınızın IDE içinde görüntülenmesini sağlayan bir uzantı yüklemeyi tercih edebilirsiniz.
  2. Sürüm Kontrolü: Kodunuzdaki değişiklikleri izlemek için Git gibi sürüm kontrol sistemlerini kullanmayı düşünün. Shiny uygulamalarınızı kolayca yönetmek ve işbirliği yapmak için proje klasörünüzde bir Git deposu başlatın.
  3. Kod Yapısı: Proje yapınızı düzenleyin. Shiny uygulamalarınız, veri kümeniz ve diğer kaynaklar için ayrı klasörler oluşturun. Bu, temiz ve düzenli bir kod tabanı sürdürmeye yardımcı olur ve her kodlama projesi için en iyi uygulamadır.

Geliştirme ortamınız artık kurulu ve yapılandırılmış olduğuna göre, Python için Shiny ile etkileşimli web uygulamaları oluşturmaya hazırsınız.

Temel Bir Shiny Uygulaması Oluşturma

Bir Shiny uygulamasının yapısını anlama

Bir Shiny uygulaması iki ana bileşenden oluşur: kullanıcı arayüzü (UI) ve sunucu mantığı.

UI, uygulamanın nasıl görüneceğini ve kullanıcı etkileşimi için hangi öğelerin bulunduğunu tanımlar. Kullanıcının görebildiği veya etkileşime girebildiği her şey UI’ın parçasıdır; kaydırıçlar, düğmeler ve grafikler gibi öğeler buna dahildir.

UI, “ui.” ile başlayan işlevler kullanılarak oluşturulur; ui.input_numeric, ui.input_slider ve ui.output_text gibi. Bu işlevler, genellikle sayfanın temel yerleşimini tanımlayan ui.page_fluid gibi bir sayfa işlevi içine alınır.

Sunucu mantığı, uygulamanın nasıl davrandığını ve kullanıcı girdilerine nasıl yanıt verdiğini tanımlar. UI’dan gelen kullanıcı girdilerini alan, bunları işleyen ve buna göre çıktı öğelerini güncelleyen işlevlerden oluşur. Sunucu mantığı, server işlevi kullanılarak oluşturulur ve girdileri ve çıktıları yönetmek için tepkisel ifadeler içerir.

UI ve sunucu mantığı tanımlandıktan sonra, bunları tamamlanmış bir uygulamada birleştiririz ve bu uygulamanın adı mutlaka “app” olmalıdır.

image3.png

Tepkisel programlama modelini anlama

Shiny dokümanlarından bu örneği ele alalım.

Bu örnek, kaydırıçtan gelen kullanıcı girdisini alır ve aşağıdaki metin kutusunda görüntülenen bir hesaplama yapmak için kullanır. Bu çok basit örnek, VS Code içinde yerel ana makinede basit bir tarayıcıda çalışıyor.

Bu basit gösterimden de görebileceğiniz gibi, Shiny’nin büyüsü etkileşimselliğinde yatar. Shiny’nin etkileşimselliğinin motoru, tepkisel programlama modelidir. Shiny’de, girdiler ve çıktılar arasında bağımlılık zinciri oluşturmak için tepkisel ifadeler tanımlarız. Bir girdi değiştiğinde, tüm bağımlı tepkisel ifadeler ve çıktılar otomatik olarak güncellenir. Bu tepkisellik, Shiny’nin özündedir. Shiny’nin tepkiselliği hakkında daha fazla ayrıntıyı buradan okuyabilirsiniz.

Bu tepkiselliği mümkün kılan bazı temel öğeler vardır.

Öncelikle, tepkisel hesaplama ya da reactive.Calc vardır. Bu, bir girdiye dayalı bir hesaptır. Bu hesap, döndürdüğü değeri, girdi değişene kadar önbelleğinde tutar; girdi değiştiğinde ise yeni girdiye göre yeniden çalışır. Bu, uygulamanızın kullanıcı girdilerine verimli şekilde yanıt vermesini sağlar. Tepkisel hesaplamalar, aşağıdaki örnekte olduğu gibi @reactive.Calc süsleyicisini (decorator) kullanır.

@reactive.Calc
def double_number():
	return input.number() * 2

Bir diğer tepkisel öğe, tepkisel etkidir ya da reactive.Effect. Tepkisel etki, çalıştığında bir değer döndürmez. Bunun yerine, bir değişkeni değiştirmek veya bir dosyayı kaydetmek gibi bir etki tetikler. Girdiler değiştiğinde de yeniden çalışır. En yaygın reactive.Effect, aşağıdaki örnekte olduğu gibi sonucun bir dizi olarak mesaj kuyruğuna eklenmesini sağlayan @output süsleyicisidir.

@output
@render.text
def txt():
	return f"The value of x is {input.x()}"

Bazen, uygulamanızın tepkiselliğinin bu kadar anlık olmasını istemeyebilirsiniz. Örneğin, hesaplama açısından maliyetli bir modeliniz varsa, modeli yeniden çalıştırmadan önce birkaç parametrenin güncellenmesini beklemek isteyebilirsiniz. Bu durumda, reactive.event() veya reactive.isolate() ile uygulamanızın tepkiselliğini sınırlamak için seçenekler sunulur.

Shiny Uygulamanıza Etkileşimsellik Ekleme

Daha karmaşık bir uygulamaya ihtiyaç duyduğunuzda

Bu tepkisellik mantığıyla, Python için Shiny ihtiyacınız olduğu kadar karmaşık ya da basit uygulamalar oluşturabilir. Radyo düğmeleri, onay kutuları, kaydırıçlar, metin girişi kutuları, grafikler, haritalar ve çok daha fazlasını ekleyebilirsiniz! İşte Shiny dokümanlarından biraz daha karmaşık bir örnek.

Bu örnekte, bazı rastgele verilerin bir sıcaklık haritasını oluşturduk. Kullanıcının görüntülemek istediği sıcaklık haritası stilini seçmesi için bir radyo düğmesi seçeneği vardır ve kaydırıç işlevi, sıcaklık haritasındaki renk aralığını değiştirir. Shiny’yi oluşturan şirket olan Posit, web sitelerinde bu eğlenceli Wordle klonu dahil olmak üzere daha pek çok örnek sunuyor.

Bu tür etkileşimlilik eğlenceli olsa da birçok kullanışlı uygulaması da vardır. Tuzluluk ve sıcaklık gibi çevresel faktörleri alan ve bunları kullanarak yosun patlamalarını tahmin eden bir model tasarlayabilirsiniz. Sahadaki bir araştırmacı, geçerli değerleri Shiny uygulamanıza girebilir ve uygulama, araştırmacıya anlık bir tahmin sunar.

Belirli koşullar sağlanırsa yıllık kazç projeksiyonlarını gösteren bir model de tasarlayabilirsiniz. Bu durumda yöneticiler, farklı satış sayıları girerek veya hangi ürünleri sunduklarını işaretleyerek uygulamanızla farklı senaryoları deneyebilir ve tahmini sonucun gözlerinin önünde güncellendiğini görürler.

Kullanım alanları, birden çok sektöre yayılan sayısızdır.

Girdi ve çıktı türleri

Shiny, farklı veri görselleştirme ve etkileşim ihtiyaçlarına yönelik çeşitli girdi ve çıktı seçenekleri sunar. İşte Python için Shiny’de bulunan yaygın girdi ve çıktıların basit bir tablosu.

Girdiler

Ne iş yapar?

Eylem Düğmesi Girdisi

Kullanıcının seçmesi için bir düğme sağlar.

Eylem Bağlantısı Girdisi

Kullanıcının bir bağlantıya tıklamasına izin verir.

Metin girişi

Basit bir metin satırı için metin kutusu sağlar.

Sayısal giriş

Aşağı ve yukarı okları olan sayısal bir giriş kutusu sağlar.

Kaydırıç girişi

Sayısal bir kaydırıç oluşturur.

Onay kutusu girişi

Doğru/Yanlış uygulamaları için tek bir onay kutusu oluşturur.

Anahtar (switch) girişi

Tek bir açık/kapalı anahtar oluşturur.

Onay kutusu grubu girişi

Birden çok seçenek için birkaç onay kutusu oluşturur.

Seçim girişi

Açılır bir seçenek menüsü sağlar.

Radyo düğmeleri girişi

Tek seçimi zorunlu kılan radyo düğmesi seçenekleri oluşturur.

Metin alanı girişi

Daha uzun metin girdileri için boyutlandırılabilir büyük bir metin kutusu sağlar.

Tarih girişi

Kullanıcıların takvimden tarih seçebileceği bir tarih giriş kutusu oluşturur.

Tarih aralığı girişi

Temelde, bir aralık girilmesini sağlayan eşlemiş iki tarih giriş kutusudur.

Parola girişi

Giriş metnini gizleyen bir metin kutusu oluşturur.

——————————————————————————————————————

Çıktılar

Ne iş yapar?

Metin çıktısı

Düz HTML olarak metin yazar.

Aynen metin çıktısı

Metni sabit aralıklı bir kod bloğu içinde yazar.

UI çıktısı

Kullanıcı girdilerine dayalı daha dinamik bir arayüz sunar.

Grafik çıktısı

matplotlib gibi yaygın Python kütüphanelerini kullanarak bir grafik üretir.

Tablo çıktısı

Sütun başlıkları olan düz bir tablo oluşturur.

Veri Çerçevesi / Izgara çıktısı

Filtreler, izgara çizgileri ve satır sınırları ile özelleştirilebilir bir tablo oluşturur.

Shiny bileşenlerinin tam listesi için bu sayfaya göz atın.

Python için Shiny’de Kullanıcı Arayüzünü Özelleştirme

Yerleşimler ve temalar

Shiny, bir sayfa işlevi kullanarak çeşitli yerleşimler aracılığıyla kullanıcı arayüzünü özelleştirmede esneklik sunar. En sık kullanılan sayfa işlevi, farklı ekran boyutlarına uyarlanan duyarlı bir tasarım sağlayan page_fluid()'dır. Belirli tasarım gereksinimleri olan uygulamalar için uygun sabit geniişlikli bir yerleşim ise page_fixed() sayfa işlevi kullanılarak elde edilebilir.

Shiny, web tabanlı uygulamalarını oluşturmak için HTML’den yararlanır. Bu da CSS temalarını kullanarak uygulamanızı stillendirebileceğiniz anlamına gelir. Özel CSS stili eklemek, Shiny uygulamanızın görünümünü estetik tercihlerinizle ya da kurumsal markanızla uyumlu hale getirmenize olanak tanır. Top of Form

Özel bileşen ve uzantıların uygulanması

Shiny, ipywidgets’ı destekler ve çeşitli etkileşimli grafikler, haritalar, 3B görselleştirmeler ve medya akışı sağlar. Ayrıca, HTML dosyası olarak kaydedilebilen bazı diğer Python bileşenleri için de işlevsellik bulunur. Özel bileşenleri entegre ederek Shiny uygulamanızı belirli kullanım senaryolarına uyarlayabilir ve daha kişiselleştirilmiş bir kullanıcı deneyimi yaratabilirsiniz.

Python için Shiny Uygulamanızı Yayınlama

Farklı yayınlama seçeneklerinin açıklanması

Etkileyici bir Shiny uygulaması oluşturduktan sonra, onu portföyünüz için ya da bir müşteri adına web’e yayınlayarak daha geniş bir kitleyle paylaşmak isteyebilirsiniz. Shiny, farklı ihtiyaçlara uygun çeşitli yayınlama seçeneklerini destekler.

Yerel Yayınlama: Shiny uygulamanızı yerel bir sunucuda yayınlayabilir ve kurumunuz içinde ya da belirli bir kullanıcı grubunun erişimine açabilirsiniz.

Bulut Tabanlı Platformlar: Bulut platformları, Shiny uygulamalarını yayınlamak için ölçeklenebilir ve erişilebilir çözümler sunar. Popüler seçenekler şunlardır:

  • Shinyapps.io: Shiny uygulamalarını barındırmaya özel olarak tasarlanmış, Posit’in kendi platformu.
  • Heroku: Shiny uygulaması yayınlamayı destekleyen bir bulut platformu.
  • AWS, Azure ve Google Cloud: Shiny uygulamalarını sanal makinelerde veya kapsayıcılarda yayınlamanıza olanak tanıyan başlıca bulut sağlayıcıları.

ShinyLive: Shiny, Python çalıştıran ayrı bir sunucu olmadan Shiny uygulamalarını bir web tarayıcısı içinde çalıştırmanın yeni bir yolunu sunar. WebAssembly ve pyodide-ı birleştirerek, bilgisayarınıza Python veya Shiny kurmadan Shiny uygulamalarını çalıştırmanıza olanak sağlar. Bu platform, kullanılabilir Python paketlerini sınırlar ve diğer platformlar kadar güvenli olmayabilir; ancak hassas olmayan kodu hızla paylaşmanın iyi bir yoludur.

Sonuç

Python için Shiny, web uygulama geliştirme sahnesinin heyecan verici yeni oyuncularından biridir. Kullanımı, web geliştirme öğrenmeye büyük zaman yatırımı yapmadan veri projenizi önemli ölçüde bir üst seviyeye taşıyabilir. R için Shiny’yi denemekle ilgileniyorsanız, DataCamp’in şu Shiny temelleri kursuna ve R Shiny ile pano yapmaya yönelik bu kursa göz atın. Temelleri oturttuktan sonra, bir Shiny vaka çalışması ile yeni becerilerinizi pratik edin!

Amberle McKee

Yazar

Amberle McKee

Biyolojik araştırma ortamında verilerle çalışma konusunda 13 yıllık deneyime sahip bir doktora sahibiyim. Python, MATLAB ve R dahil olmak üzere birkaç programlama dilinde yazılım geliştiriyorum. Öğrenme sevgimi dünyayla paylaşma konusunda tutkuluyum.

Konular

İlgili