YFDashboard / src /pages /9_Team_Formations.py
Jon Solow
Remove page specific refresh buttons and have escape when data not yet loaded
130c598
raw
history blame
2.61 kB
import datetime
import streamlit as st
from config import DEFAULT_ICON
from shared_page import common_page_config
from queries.footballguys.constants import YEAR
from queries.nflverse.github_data import get_pbp_participation, get_current_tables, SEASON
@st.cache_data(ttl=60 * 60 * 24)
def load_data():
data = get_pbp_participation(YEAR)
# data = data[data.fantasy_position]
teams_list = sorted(filter(None, data.possession_team.unique()))
# position_list = data.position.unique()
# weeks_list = sorted(data.week.unique())
data_load_time_str = datetime.datetime.utcnow().strftime("%m/%d/%Y %I:%M %p")
return data, teams_list, data_load_time_str
def get_page():
page_title = f"Team Formations - {YEAR}"
st.set_page_config(page_title=page_title, page_icon=DEFAULT_ICON, layout="wide")
common_page_config()
st.title(page_title)
if f"ftn_charting_ftn_charting_{SEASON}" not in get_current_tables():
st.write("Data not loaded.")
st.write("Check loaded data [here](./Load_Data)")
return
data, teams_list, data_load_time_str = load_data()
st.write(f"Data loaded as of: {data_load_time_str} UTC")
default_groups = [
"possession_team",
"offense_formation",
]
group_options = [
"possession_team",
"offense_formation",
"offense_personnel",
"number_of_pass_rushers",
"defenders_in_box",
"defense_personnel",
]
group_by_selected = st.multiselect("Group by:", group_options) or default_groups
teams_selected = st.multiselect("Team:", teams_list, placeholder="Select a team to filter") or teams_list
with st.container():
filtered_data = data[(data.possession_team.isin(teams_selected))]
grouped_data = filtered_data.groupby(group_by_selected).size()
st.dataframe(
grouped_data,
hide_index=False,
# height=35 * (len(filtered_data) + 1) + 12,
use_container_width=False,
# column_order=[
# "season",
# "game_type",
# "week",
# "player",
# "position",
# "team",
# "opponent",
# "offense_snaps",
# "offense_pct",
# "defense_snaps",
# "defense_pct",
# "st_snaps",
# "st_pct",
# ],
column_config={
"0": st.column_config.NumberColumn(label="Count"),
},
)
if __name__ == "__main__":
get_page()