kbo_broadcast / app.py
freud-sensei's picture
Update app.py
dd20d76 verified
import streamlit as st
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import pickle
import plotly.express as px
st.title("2023년 KBO 리그 중계방송 통계")
result_bc = pd.read_pickle('resultA.pickle')
result_team = pd.read_pickle('resultB.pickle')
team_list = ["LG", "KT", "SSG", "NC", "두산", "KIA", "롯데", "삼성", "한화", "키움"]
custom_palette = {"LG": (165, 0, 52), 'KT': (0, 0, 0), "SSG": (206, 14, 45), "NC": (49, 82, 136), "두산": (19, 19, 48),
"KIA": (234, 0, 41), "롯데": (4, 30, 66), "삼성": (7, 76, 161), "한화": (255, 102, 0), "키움": (87, 5, 20)}
team = st.selectbox(
'확인하고 싶은 팀을 선택해주세요', team_list)
df = result_team[team]
fig = px.bar(df, x="경기수", text="경기수", title=f"{team}의 방송사별 중계 횟수 (총 {df['경기수'].sum()}회 중계)")
fig.update_xaxes(range=[0, 55])
fig.update_traces(textposition='outside')
fig.update_layout(yaxis={'categoryorder': 'total ascending'}, yaxis_title="방송사", dragmode=False)
st.plotly_chart(fig, use_container_width=True)
bc_names = {"SPO": "SPOTV 및 SPOTV-2", "MS-T": "MBC Sports+", "KN-T": "KBS N Sports", "SS-T": "SBS Sports",
"SPO-T": "SPOTV", "SPO-2T": "SPOTV-2", "S-T": "SBS(지상파)", "M-T": "MBC(지상파)", "K-2T": "KBS2(지상파)",
"G-CMB": "CMB광주방송", "D-CMB": "CMB대전방송", "중계없음": "중계없음(OTT)", "KMS": "지상파(KBS2 + MBC + SBS)"}
bc_list = bc_names.values()
bc = st.selectbox(
'확인하고 싶은 방송국을 선택해주세요', bc_list)
bc_names_back = {v: k for k, v in bc_names.items()}
bc_code = bc_names_back[bc]
if bc_code == "SPO":
max_y = 100
elif bc_code in ["G-CMB", "D-CMB"]:
max_y = 30
elif bc_code == "KMS":
max_y = 10
elif bc_code in ["M-T", "S-T", "K-2T", "중계없음"]:
max_y = 5
else:
max_y = 60
sr = result_bc[bc_code]
fig = px.bar(sr, y="팀", text="팀", title=f"{bc}의 팀별 중계 횟수 (총 {int(sr.sum())}회 중계)")
fig.update_yaxes(range=[0, max_y])
fig.update_traces(textposition='outside')
fig.update_layout(xaxis_title="팀", yaxis_title="경기수", dragmode=False)
st.plotly_chart(fig, use_container_width=True)