Multichem commited on
Commit
ace5d21
·
1 Parent(s): b3226fb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -27
app.py CHANGED
@@ -46,41 +46,76 @@ def init_conn():
46
 
47
  gcservice_account = init_conn()
48
 
49
- master_hold = 'https://docs.google.com/spreadsheets/d/1Yq0vGriWK-bS79e-bD6_u9pqrYE6Yrlbb_wEkmH-ot0/edit#gid=853878325'
 
50
 
51
  @st.cache_resource(ttl = 300)
52
  def init_baselines():
53
- sh = gcservice_account.open_by_url(master_hold)
54
 
55
- worksheet = sh.worksheet('Arturo Props')
56
  raw_display = pd.DataFrame(worksheet.get_all_records())
57
  raw_display.replace('', np.nan, inplace=True)
58
- raw_display = raw_display[['Player', 'Pos', 'Team', 'Opponent', 'Min', 'mpgL3', 'Diff', 'Status', 'Pts', 'Rbs', 'Asst', 'TOs', '3PM',
59
- 'Steals', 'Blk', 'FD', 'DK']]
60
- player_stats = raw_display[raw_display['Min'] > 0]
61
 
62
- return player_stats
 
 
 
 
 
 
 
 
 
 
 
63
 
64
  def convert_df_to_csv(df):
65
  return df.to_csv().encode('utf-8')
66
 
67
- player_stats = init_baselines()
68
-
69
- if st.button("Reset Data", key='reset1'):
70
- st.cache_data.clear()
71
- player_stats = init_baselines()
72
- split_var1 = st.radio("Would you like to view all teams or specific ones?", ('All', 'Specific Teams'), key='split_var1')
73
- if split_var1 == 'Specific Teams':
74
- team_var1 = st.multiselect('Which teams would you like to include in the tables?', options = player_stats['Team'].unique(), key='team_var1')
75
- elif split_var1 == 'All':
76
- team_var1 = player_stats.Team.values.tolist()
77
- player_stats = player_stats[player_stats['Team'].isin(team_var1)]
78
- player_stats_disp = player_stats.set_index('Player')
79
- player_stats_disp = player_stats_disp.sort_values(by=['Team', 'Min'], ascending=False)
80
- st.dataframe(player_stats_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), use_container_width = True)
81
- st.download_button(
82
- label="Export Prop Model",
83
- data=convert_df_to_csv(player_stats),
84
- file_name='AmericanNumbers_stats_export.csv',
85
- mime='text/csv',
86
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
  gcservice_account = init_conn()
48
 
49
+ NBAGetGameData = 'https://docs.google.com/spreadsheets/d/1tRQrF_I5rS7Q0g9vE8NrENDZ2P3_DvtbBZzKEakwOI0/edit#gid=1373653837'
50
+ NBABettingModel = 'https://docs.google.com/spreadsheets/d/1WBnvOHQi_zVTGF63efejK5ho02AY00HiYrMHnMJXY1E/edit#gid=1157978351'
51
 
52
  @st.cache_resource(ttl = 300)
53
  def init_baselines():
54
+ sh = gcservice_account.open_by_url(NBAGetGameData)
55
 
56
+ worksheet = sh.worksheet('MinPublic')
57
  raw_display = pd.DataFrame(worksheet.get_all_records())
58
  raw_display.replace('', np.nan, inplace=True)
59
+ raw_display = raw_display[['NBAID', 'PID', 'Player', 'TC', 'MP (Today)', 'Next Game', 'H/R', 'Injury Notes', 'Player Impact per 48', 'Player Impact',
60
+ 'Team PM', 'Last Updated']]
61
+ public_minutes = raw_display[raw_display['NBAID'] != ""]
62
 
63
+ return public_minutes
64
+
65
+ sh = gcservice_account.open_by_url(NBABettingModel)
66
+
67
+ worksheet = sh.worksheet('PlayerImpactByTeam')
68
+ raw_display = pd.DataFrame(worksheet.get_all_records())
69
+ raw_display.replace('', np.nan, inplace=True)
70
+ raw_display = raw_display[['PID', 'Player', 'Team', 'Avg Minutes last 30 days for team', 'Minutes Projection', 'Rotation Impact (versus last 30 days)',
71
+ 'Injury Notes', 'Minute Change', 'Baseline Team PM', 'Net Rotation PM +/- for Team', 'Projected PM for Game', 'Offset', 'Rank']]
72
+ player_impact = raw_display[raw_display['PID'] != ""]
73
+
74
+ return player_impact
75
 
76
  def convert_df_to_csv(df):
77
  return df.to_csv().encode('utf-8')
78
 
79
+ public_minutes, player_impact = init_baselines()
80
+
81
+ tab1, tab2 = st.tabs(["Minutes Baselines", "Player Impacts"])
82
+
83
+ with tab1:
84
+ if st.button("Reset Data", key='reset1'):
85
+ st.cache_data.clear()
86
+ public_minutes, player_impact = init_baselines()
87
+ split_var1 = st.radio("Would you like to view all teams or specific ones?", ('All', 'Specific Teams'), key='split_var1')
88
+ if split_var1 == 'Specific Teams':
89
+ team_var1 = st.multiselect('Which teams would you like to include in the tables?', options = public_minutes['TC'].unique(), key='team_var1')
90
+ elif split_var1 == 'All':
91
+ team_var1 = public_minutes.TC.values.tolist()
92
+ public_minutes = public_minutes[public_minutes['Team'].isin(team_var1)]
93
+ player_min_disp = public_minutes.set_index('Player')
94
+ player_min_disp = player_min_disp.sort_values(by=['TC', 'MP (Today)'], ascending=[False, True])
95
+ st.dataframe(player_min_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), use_container_width = True)
96
+ st.download_button(
97
+ label="Export Prop Model",
98
+ data=convert_df_to_csv(public_minutes),
99
+ file_name='AmericanNumbers_stats_export.csv',
100
+ mime='text/csv',
101
+ )
102
+
103
+ with tab2:
104
+ if st.button("Reset Data", key='reset2'):
105
+ st.cache_data.clear()
106
+ public_minutes, player_impact = init_baselines()
107
+ split_var2 = st.radio("Would you like to view all teams or specific ones?", ('All', 'Specific Teams'), key='split_var2')
108
+ if split_var2 == 'Specific Teams':
109
+ team_var2 = st.multiselect('Which teams would you like to include in the tables?', options = player_impact['Team'].unique(), key='team_var2')
110
+ elif split_var2 == 'All':
111
+ team_var2 = player_impact.Team.values.tolist()
112
+ player_impact = player_impact[player_impact['Team'].isin(team_var2)]
113
+ player_impact_disp = player_impact.set_index('Player')
114
+ player_impact_disp = player_impact_disp.sort_values(by=['Team', 'Rotation Impact (versus last 30 days)'], ascending=[False, True])
115
+ st.dataframe(player_impact_disp.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), use_container_width = True)
116
+ st.download_button(
117
+ label="Export Prop Model",
118
+ data=convert_df_to_csv(player_impact),
119
+ file_name='AmericanNumbers_stats_export.csv',
120
+ mime='text/csv',
121
+ )