Jon Solow commited on
Commit
8cbbcd9
·
1 Parent(s): ad48790

Add snap counts page from nflverse

Browse files
src/pages/7_Snap_Counts.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import datetime
2
+ import streamlit as st
3
+
4
+ from config import DEFAULT_ICON
5
+ from shared_page import common_page_config
6
+
7
+ from queries.footballguys.constants import YEAR
8
+ from queries.nflverse.github_data import get_snap_counts
9
+ from streamlit_filter import filter_dataframe
10
+
11
+
12
+ @st.cache_data(ttl=60 * 60 * 24)
13
+ def load_data():
14
+ data = get_snap_counts(YEAR)
15
+ data_load_time_str = datetime.datetime.utcnow().strftime("%m/%d/%Y %I:%M %p")
16
+ return data, data_load_time_str
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)
24
+ if st.button("Refresh Data"):
25
+ st.cache_data.clear()
26
+ data, data_load_time_str = load_data()
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
+
40
+ if __name__ == "__main__":
41
+ get_page()
src/queries/nflverse/__init__.py ADDED
File without changes
src/queries/nflverse/github_data.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+
3
+
4
+ def get_parquet_github(season_int: int, parquet_prefix: str):
5
+ location = f"https://github.com/nflverse/nflverse-data/releases/download/{parquet_prefix}_{season_int}.parquet"
6
+ df = pd.read_parquet(location)
7
+ return df
8
+
9
+
10
+ def get_snap_counts(season_int: int) -> pd.DataFrame:
11
+ return get_parquet_github(season_int, "snap_counts/snap_counts")
12
+
13
+
14
+ def get_play_by_play(season_int: int) -> pd.DataFrame:
15
+ return get_parquet_github(season_int, "pbp/play_by_play")
16
+
17
+
18
+ def get_player_stats(season_int: int) -> pd.DataFrame:
19
+ return get_parquet_github(season_int, "player_stats/player_stats")