import streamlit as st import pandas as pd import matplotlib.pyplot as plt st.set_page_config( page_title="Olympic Games Data Visualization", page_icon="🏅", layout="wide" ) st.title("🏅 Olympic Games Data Visualization") st.write( "Bu uygulama, Olimpiyat Oyunları verilerini kullanarak ülke, sporcu, spor dalı, " "madalya ve ev sahibi şehirler üzerine görselleştirme analizleri sunar." ) @st.cache_data def load_data(): athlete_bio = pd.read_csv("src/Olympic_Athlete_Biography.csv") athlete_event = pd.read_csv("src/Olympic_Athlete_Event_Details.csv") games = pd.read_csv("src/Olympic_Games_Summary.csv") medals = pd.read_csv("src/Olympic_Medal_Tally_History.csv") return athlete_bio, athlete_event, games, medals athlete_bio, athlete_event, games, medals = load_data() st.sidebar.title("Grafik Seçimi") grafik = st.sidebar.selectbox( "Bir grafik seçin:", [ "En Çok Madalya Kazanan Ülkeler", "En Fazla Altın Madalya Kazanan Ülkeler", "Yıllara Göre Toplam Madalya", "En Çok Madalya Kazanılan Spor Dalları", "En Çok Madalya Kazanan Sporcular", "En Çok Olimpiyat Düzenleyen Şehirler", "Yıllara Göre Katılan Ülke Sayısı", "Kadın ve Erkek Sporcu Dağılımı" ] ) if grafik == "En Çok Madalya Kazanan Ülkeler": st.subheader("En Çok Madalya Kazanan 15 Ülke") top_countries = ( medals.groupby("country")["total"] .sum() .sort_values(ascending=False) .head(15) ) fig, ax = plt.subplots(figsize=(10, 6)) top_countries.sort_values().plot(kind="barh", ax=ax) ax.set_title("En Çok Madalya Kazanan 15 Ülke") ax.set_xlabel("Toplam Madalya") ax.set_ylabel("Ülke") st.pyplot(fig) elif grafik == "En Fazla Altın Madalya Kazanan Ülkeler": st.subheader("En Fazla Altın Madalya Kazanan 15 Ülke") top_gold = ( medals.groupby("country")["gold"] .sum() .sort_values(ascending=False) .head(15) ) fig, ax = plt.subplots(figsize=(10, 6)) top_gold.sort_values().plot(kind="barh", ax=ax) ax.set_title("En Fazla Altın Madalya Kazanan 15 Ülke") ax.set_xlabel("Altın Madalya") ax.set_ylabel("Ülke") st.pyplot(fig) elif grafik == "Yıllara Göre Toplam Madalya": st.subheader("Yıllara Göre Toplam Madalya Sayısı") yearly_medals = medals.groupby("year")["total"].sum() fig, ax = plt.subplots(figsize=(12, 5)) ax.plot(yearly_medals.index, yearly_medals.values) ax.set_title("Yıllara Göre Toplam Madalya Sayısı") ax.set_xlabel("Yıl") ax.set_ylabel("Toplam Madalya") st.pyplot(fig) elif grafik == "En Çok Madalya Kazanılan Spor Dalları": st.subheader("En Çok Madalya Kazanılan Spor Dalları") top_sports = ( athlete_event["sport"] .value_counts() .head(15) ) fig, ax = plt.subplots(figsize=(10, 6)) top_sports.sort_values().plot(kind="barh", ax=ax) ax.set_title("En Çok Madalya Kazanılan Spor Dalları") ax.set_xlabel("Madalya Sayısı") ax.set_ylabel("Spor Dalı") st.pyplot(fig) elif grafik == "En Çok Madalya Kazanan Sporcular": st.subheader("En Çok Madalya Kazanan Sporcular") top_athletes = ( athlete_event["athlete"] .value_counts() .head(15) ) fig, ax = plt.subplots(figsize=(10, 6)) top_athletes.sort_values().plot(kind="barh", ax=ax) ax.set_title("En Çok Madalya Kazanan Sporcular") ax.set_xlabel("Madalya Sayısı") ax.set_ylabel("Sporcu") st.pyplot(fig) elif grafik == "En Çok Olimpiyat Düzenleyen Şehirler": st.subheader("En Çok Olimpiyat Düzenleyen Şehirler") top_city = games["city"].value_counts().head(15) fig, ax = plt.subplots(figsize=(10, 6)) top_city.sort_values().plot(kind="barh", ax=ax) ax.set_title("En Çok Olimpiyat Düzenleyen Şehirler") ax.set_xlabel("Olimpiyat Sayısı") ax.set_ylabel("Şehir") st.pyplot(fig) elif grafik == "Yıllara Göre Katılan Ülke Sayısı": st.subheader("Yıllara Göre Katılan Ülke Sayısı") country_per_year = medals.groupby("year")["country"].nunique() fig, ax = plt.subplots(figsize=(12, 5)) ax.plot(country_per_year.index, country_per_year.values) ax.set_title("Yıllara Göre Katılan Ülke Sayısı") ax.set_xlabel("Yıl") ax.set_ylabel("Ülke Sayısı") st.pyplot(fig) elif grafik == "Kadın ve Erkek Sporcu Dağılımı": st.subheader("Kadın ve Erkek Sporcu Dağılımı") gender_counts = athlete_bio["sex"].value_counts() fig, ax = plt.subplots(figsize=(7, 7)) ax.pie( gender_counts, labels=gender_counts.index, autopct="%1.1f%%" ) ax.set_title("Kadın ve Erkek Sporcu Dağılımı") st.pyplot(fig)