Jon Solow commited on
Commit
fb558a3
1 Parent(s): a072434

Add Snap Counts with filters and allow for option in streamlit_filter

Browse files
src/pages/7_Snap_Counts.py CHANGED
@@ -17,7 +17,7 @@ def load_data():
17
 
18
 
19
  def get_page():
20
- page_title = f"Player Redzone Opportunities - {YEAR}"
21
  st.set_page_config(page_title=page_title, page_icon=DEFAULT_ICON, layout="wide")
22
  common_page_config()
23
  st.title(page_title)
@@ -27,13 +27,30 @@ def get_page():
27
  st.write(f"Data loaded as of: {data_load_time_str} UTC")
28
 
29
  with st.container():
30
- filtered_data = filter_dataframe(data)
31
  st.dataframe(
32
  filtered_data,
33
  hide_index=True,
34
  # height=35 * (len(filtered_data) + 1) + 12,
35
  use_container_width=False,
36
- column_config={},
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  )
38
 
39
 
 
17
 
18
 
19
  def get_page():
20
+ page_title = f"Snap Counts and Percentages - {YEAR}"
21
  st.set_page_config(page_title=page_title, page_icon=DEFAULT_ICON, layout="wide")
22
  common_page_config()
23
  st.title(page_title)
 
27
  st.write(f"Data loaded as of: {data_load_time_str} UTC")
28
 
29
  with st.container():
30
+ filtered_data = filter_dataframe(data, force_on=True, force_on_columns=["team", "position", "week", "opponent"])
31
  st.dataframe(
32
  filtered_data,
33
  hide_index=True,
34
  # height=35 * (len(filtered_data) + 1) + 12,
35
  use_container_width=False,
36
+ column_order=[
37
+ "season",
38
+ "game_type",
39
+ "week",
40
+ "player",
41
+ "position",
42
+ "team",
43
+ "opponent",
44
+ "offense_snaps",
45
+ "offense_pct",
46
+ "defense_snaps",
47
+ "defense_pct",
48
+ "st_snaps",
49
+ "st_pct",
50
+ ],
51
+ column_config={
52
+ "season": st.column_config.TextColumn(help="Year of NFL Season"),
53
+ },
54
  )
55
 
56
 
src/streamlit_filter.py CHANGED
@@ -10,7 +10,7 @@ import pandas as pd
10
  import streamlit as st
11
 
12
 
13
- def filter_dataframe(df: pd.DataFrame) -> pd.DataFrame:
14
  """
15
  Adds a UI on top of a dataframe to let viewers filter columns
16
 
@@ -20,7 +20,10 @@ def filter_dataframe(df: pd.DataFrame) -> pd.DataFrame:
20
  Returns:
21
  pd.DataFrame: Filtered dataframe
22
  """
23
- modify = st.checkbox("Add more filters")
 
 
 
24
 
25
  if not modify:
26
  return df
@@ -41,7 +44,7 @@ def filter_dataframe(df: pd.DataFrame) -> pd.DataFrame:
41
  modification_container = st.container()
42
 
43
  with modification_container:
44
- to_filter_columns = st.multiselect("Filter dataframe on", df.columns)
45
  for column in to_filter_columns:
46
  left, right = st.columns((1, 20))
47
  # Treat columns with < 17 unique values as categorical
 
10
  import streamlit as st
11
 
12
 
13
+ def filter_dataframe(df: pd.DataFrame, force_on: bool = False, force_on_columns: list[str] = []) -> pd.DataFrame:
14
  """
15
  Adds a UI on top of a dataframe to let viewers filter columns
16
 
 
20
  Returns:
21
  pd.DataFrame: Filtered dataframe
22
  """
23
+ if force_on:
24
+ modify = True
25
+ else:
26
+ modify = st.checkbox("Add more filters")
27
 
28
  if not modify:
29
  return df
 
44
  modification_container = st.container()
45
 
46
  with modification_container:
47
+ to_filter_columns = st.multiselect("Filter dataframe on", df.columns) + force_on_columns
48
  for column in to_filter_columns:
49
  left, right = st.columns((1, 20))
50
  # Treat columns with < 17 unique values as categorical