Streamlit, veri odaklı web uygulamaları yazmak için tasarlanmış bir Python kütüphanesidir — HTML/CSS/JavaScript bilmenize gerek kalmadan, sadece Python fonksiyonu çağırır gibi bir arayüz kurmanızı sağlar. Bu derste birkaç satırda bir hisse senedi görüntüleme uygulaması yapacağız.
Kurulum
pip install streamlit yfinance matplotlib
Temel Arayüz Bileşenleri
import streamlit as st
sembol = st.text_input("Hisse senedi sembolü", value="AAPL")
st.title(f"{sembol} Hisse Senedi Grafiği")
st.text_input(...), kullanıcının bir değer girebileceği bir metin kutusu oluşturur — value parametresi, kutunun başlangıç değerini belirler.
Uygulamayı Çalıştırmak
Streamlit uygulamaları normal bir Python scripti gibi çalıştırılmaz, kendi komutuyla başlatılır:
streamlit run app.py
Bu komut tarayıcınızda otomatik olarak yerel bir sayfa açar ve kodunuzda her değişiklik yaptığınızda (kaydettiğinizde) sayfa kendini otomatik günceller.
Tarih Aralığı Seçtirmek
import datetime
baslangic = st.date_input("Başlangıç tarihi", datetime.date(2020, 1, 1))
bitis = st.date_input("Bitiş tarihi", datetime.date.today())
Hisse Verisini Çekmek
import yfinance as yf
df = yf.download(sembol, start=baslangic, end=bitis)
yfinance, Yahoo Finance üzerinden hisse senedi geçmiş verisini (açılış, kapanış, en yüksek/düşük, hacim) ücretsiz olarak çeker.
Grafik Çizmek
st.line_chart(df["Close"])
Tek satırlık bu komut, kapanış fiyatlarının zaman içindeki değişimini interaktif bir çizgi grafiğe dönüştürür.
Veriyi Tablo Olarak Göstermek
st.write(df)
Borsa İstanbul Hisseleri için Sembol Farkı
Yahoo Finance, Borsa İstanbul hisseleri için sembolün sonuna .IS uzantısı ister — örneğin Aselsan için ASELS.IS, Ereğli Demir Çelik için EREGL.IS yazmanız gerekir; sade ASELS yazarsanız veri bulunamaz.
Neden Streamlit?
Streamlit, özellikle veri görselleştirme ağırlıklı, hızlıca prototip çıkarmak istediğiniz projelerde (bir Excel raporunu web'e taşımak, bir modelin sonuçlarını göstermek gibi) klasik bir Flask/Django uygulamasına göre çok daha az kod ve zamanla sonuca ulaşmanızı sağlar — karşılığında, tam kontrol isteyen karmaşık arayüzlerde esneklik açısından daha sınırlıdır.
Sırada Ne Var?
Sırada, tam kontrol isteyen durumlar için Flask ile sıfırdan bir web sitesi kurmayı göreceğiz.