MSK34's picture
Update src/streamlit_app.py
a2cfa15 verified
Raw
History Blame Contribute Delete
4.89 kB
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)