Spaces:
Sleeping
Sleeping
File size: 4,914 Bytes
5dfb440 e8712f9 ebcbda5 cef78e9 bf7b666 cef78e9 b024aa7 10fd909 cef78e9 60ad9f2 cef78e9 b024aa7 e3d5fa5 cef78e9 e8712f9 360f218 e8712f9 bf7b666 1c6dbb4 bf7b666 1c6dbb4 bf7b666 81562bc 360f218 10fd909 60ad9f2 360f218 60ad9f2 e8712f9 360f218 e8712f9 360f218 10fd909 e3d5fa5 10fd909 81562bc 10fd909 81562bc e3d5fa5 10fd909 81562bc 10fd909 81562bc e8712f9 360f218 e3d5fa5 360f218 81562bc cef78e9 10fd909 81562bc 1c6dbb4 10fd909 1c6dbb4 360f218 f789148 360f218 81562bc 1c6dbb4 360f218 10fd909 81562bc 360f218 10fd909 81562bc 360f218 81562bc 360f218 81562bc 10fd909 360f218 81562bc 360f218 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | import streamlit as st
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
import os
# 1. SAYFA AYARLARI
st.set_page_config(layout="wide", page_title="Gold Price Analysis")
# CSS: Tasarım Ayarları
st.markdown("""
<style>
.stApp { background-color: #FFFFFF; }
[data-testid="stMetricValue"] { font-size: 45px !important; font-weight: bold !important; color: #B28F2D !important; }
[data-testid="stMetricLabel"] { font-size: 18px !important; font-weight: bold !important; color: #333333 !important; }
</style>
""", unsafe_allow_html=True)
# 2. VERİ YÜKLEME
def load_data():
csv_files = [f for f in os.listdir('.') if f.endswith('.csv')]
if csv_files:
df = pd.read_csv(csv_files[0])
date_col = next((col for col in df.columns if 'date' in col.lower()), df.columns[0])
df[date_col] = pd.to_datetime(df[date_col])
df['YEAR'] = df[date_col].dt.year
df = df.rename(columns={date_col: 'Date'})
return df
return None
df = load_data()
if df is None:
st.error("Veri dosyası bulunamadı!")
st.stop()
# 3. SIDEBAR (Yıl Seçimi)
st.sidebar.header("📅 Filtreler / Filters")
years_list = sorted(df['YEAR'].unique(), reverse=True)
year = st.sidebar.selectbox("Yıl Seçin / Select Year", options=years_list, key="year_selector")
# FİLTRELEME (Her yıl seçildiğinde veriyi tamamen yeniler)
filtered_df = df[df['YEAR'] == year].copy().reset_index(drop=True)
# 4. ANA BAŞLIK (İstediğin Gibi Dinamik Yıl Eklendi)
st.markdown(f"<h1 style='text-align: center; color: #333;'>Gold Price Analysis / Altın Fiyat Analizi ({year})</h1>", unsafe_allow_html=True)
st.divider()
# 5. YÖNETİCİ BİLGİ NOTU
st.markdown("### 💼 Yönetici Bilgi Notu / Executive Summary")
col_tr, col_en = st.columns(2)
with col_tr:
if year == 2008:
st.warning("### 🇹🇷 2008'de altın güvenli limandır, alım faydalıdır.")
else:
st.success(f"### 🇹🇷 {year} yılı verileri istikrarlı görünüyor, teknik seviyeler izlenmeli.")
with col_en:
if year == 2008:
st.warning("### 🇺🇸 Gold is a safe haven in 2008; buying is beneficial.")
else:
st.success(f"### 🇺🇸 Data for {year} appears stable, monitor technical levels.")
st.divider()
# 6. ÖZEL METRİKLER (Dinamik)
m1, m2, m3 = st.columns(3)
m1.metric("Son Kapanış", f"{filtered_df['GLD'].iloc[-1]:.2f}")
m2.metric(f"{year} Zirve", f"{filtered_df['GLD'].max():.2f}")
m3.metric(f"{year} Dip", f"{filtered_df['GLD'].min():.2f}")
# 7. ANA TREND GRAFİĞİ (Dinamik)
st.markdown(f"#### 📈 {year} Altın Fiyat Trendi")
fig1 = go.Figure()
fig1.add_trace(go.Scatter(x=filtered_df['Date'], y=filtered_df['GLD'],
mode='lines',
line=dict(color='gold', width=2)))
fig1.update_layout(
template="plotly_dark", paper_bgcolor='black', plot_bgcolor='black',
height=400, margin=dict(l=40, r=40, t=20, b=40),
xaxis=dict(showgrid=True, gridcolor='#222', tickfont=dict(color='white')),
yaxis=dict(showgrid=True, gridcolor='#222', tickfont=dict(color='white'))
)
st.plotly_chart(fig1, use_container_width=True, key=f"trend_graph_{year}")
# Grafik Altı Dinamik Yorum
st.info(f"💡 **Analiz Notu:** {year} yılı için en yüksek fiyat {filtered_df['GLD'].max():.2f} USD, en düşük fiyat ise {filtered_df['GLD'].min():.2f} USD olarak kaydedilmiştir.")
st.divider()
# 8. YAN YANA GRAFİKLER VE YORUMLARI
c1, c2 = st.columns(2)
with c1:
st.markdown("#### 🎯 Dağılım / Distribution")
fig2 = px.histogram(filtered_df, x="GLD", nbins=30, color_discrete_sequence=['gold'], template="plotly_dark")
fig2.update_layout(paper_bgcolor='black', plot_bgcolor='black', height=350)
st.plotly_chart(fig2, use_container_width=True, key=f"dist_graph_{year}")
st.warning(f"📊 **Yorum:** {year} yılında altın fiyatlarının en yoğun olduğu bölgeler yukarıdaki histogramda gösterilmektedir.")
with c2:
st.markdown("#### 🌡️ Korelasyon / Correlation")
numeric_df = filtered_df.select_dtypes(include=['number']).drop(columns=['YEAR'], errors='ignore')
fig3 = px.imshow(numeric_df.corr(), text_auto=".2f", color_continuous_scale='YlOrRd', template="plotly_dark")
fig3.update_layout(paper_bgcolor='black', plot_bgcolor='black', height=350)
st.plotly_chart(fig3, use_container_width=True, key=f"corr_graph_{year}")
st.warning(f"🔗 **Yorum:** {year} yılında altının petrol, gümüş ve borsa ile olan korelasyon katsayıları hesaplanmıştır.")
st.divider()
# 9. VERİ TABLOSU (Her zaman açık)
st.markdown(f"### 📋 {year} Yılı Ham Veri Seti / View Data")
st.dataframe(filtered_df, use_container_width=True)
# İndirme Butonu
csv = filtered_df.to_csv(index=False).encode('utf-8')
st.download_button(f"📥 {year} Verilerini CSV İndir", data=csv, file_name=f'gold_data_{year}.csv') |