Upload 5 files
136cc9d verified
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
from pytrends.request import TrendReq
from prophet import Prophet
# Sayfa ayarları
st.set_page_config(page_title="Google Trends Analizi", layout="centered")
# Başlık
st.title("📈 Google Trends Zaman Serisi Analizi ve Tahmini")
st.write("Son 5 yıldaki Google arama trendlerini analiz edin ve geleceğe yönelik tahmin alın.")
# Anahtar kelime girişi
keyword = st.text_input("Anahtar Kelime Girin:", value="AI")
# Butona basıldığında işlem başlasın
if st.button("🔍 Veriyi Getir ve Tahmin Yap"):
with st.spinner("Google Trends verisi alınıyor..."):
try:
pytrends = TrendReq(hl='en-US', tz=360,)
pytrends.build_payload([keyword], cat=0, timeframe='today 5-y')
df = pytrends.interest_over_time()
if df.empty:
st.warning("❌ Bu anahtar kelime için veri bulunamadı.")
else:
df = df.drop(labels=['isPartial'], axis=1)
# Ham veriyi göster
st.subheader("📊 Ham Veri")
st.dataframe(df.tail())
# Zaman serisi grafiği
st.subheader("📈 Trend Grafiği")
fig, ax = plt.subplots()
ax.plot(df.index, df[keyword], label=keyword)
ax.set_xlabel("Tarih")
ax.set_ylabel("İlgi (0-100)")
ax.set_title(f"Google Trends: {keyword}")
ax.legend()
st.pyplot(fig)
# CSV indir
csv = df.to_csv().encode('utf-8')
st.download_button(
label="⬇️ Veriyi CSV Olarak İndir",
data=csv,
file_name=f"{keyword}_trends.csv",
mime='text/csv'
)
# Prophet için veri hazırlığı
st.subheader("🔮 Prophet ile 30 Günlük Tahmin")
prophet_df = df.reset_index()[['date', keyword]]
prophet_df.columns = ['ds', 'y']
model = Prophet()
model.fit(prophet_df)
future = model.make_future_dataframe(periods=30)
forecast = model.predict(future)
# Tahmin grafiği
fig2 = model.plot(forecast)
st.pyplot(fig2)
st.subheader("📅 Tahmin Tablosu (Son 30 Gün)")
st.dataframe(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(30))
except Exception as e:
st.error(f"🚨 Hata oluştu: {str(e)}")