| 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) |