|
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_snap_counts, get_current_tables, SEASON |
|
|
|
|
|
def load_data(): |
|
data = get_snap_counts(YEAR) |
|
data = data[data.fantasy_position] |
|
teams_list = sorted(data.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, position_list, weeks_list, data_load_time_str |
|
|
|
|
|
def get_page(): |
|
page_title = f"Snap Counts and Percentages - {YEAR}" |
|
st.set_page_config(page_title=page_title, page_icon=DEFAULT_ICON, layout="wide") |
|
common_page_config() |
|
st.title(page_title) |
|
if f"snap_counts_snap_counts_{SEASON}" not in get_current_tables(): |
|
st.write("Data not loaded.") |
|
st.write("Check loaded data [here](./Load_Data)") |
|
return |
|
data, teams_list, position_list, weeks_list, data_load_time_str = load_data() |
|
st.write(f"Data loaded as of: {data_load_time_str} UTC") |
|
teams_selected = st.multiselect("Team:", teams_list, placeholder="Select a team to filter") or teams_list |
|
positions_selected = ( |
|
st.multiselect("Position:", position_list, placeholder="Select a position to filter") or position_list |
|
) |
|
weeks_selected = st.multiselect("Week:", weeks_list, placeholder="Select a week to filter") or weeks_list |
|
|
|
with st.container(): |
|
filtered_data = data[ |
|
(data.team.isin(teams_selected) & data.position.isin(positions_selected) & data.week.isin(weeks_selected)) |
|
] |
|
st.dataframe( |
|
filtered_data, |
|
hide_index=True, |
|
|
|
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={ |
|
"season": st.column_config.TextColumn(help="Year of NFL Season"), |
|
}, |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
get_page() |
|
|