Spaces:
Configuration error
Configuration error
| 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)}") | |