Multichem commited on
Commit
3e64338
·
1 Parent(s): ead5547

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -2
app.py CHANGED
@@ -12,6 +12,46 @@ import gspread
12
  import random
13
  import gc
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  tab1, tab2 = st.tabs(['Uploads', 'Manage Portfolio'])
16
 
17
  with tab1:
@@ -136,11 +176,13 @@ with tab1:
136
 
137
  display_portfolio = split_portfolio[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'UTIL', 'Salary', 'Projection', 'Ownership']]
138
  st.session_state.display_portfolio = display_portfolio
 
139
  hold_portfolio = display_portfolio.sort_values(by='Projection', ascending=False)
140
 
141
  st.session_state.player_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.display_portfolio.iloc[:,0:8].values, return_counts=True)),
142
  columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
143
  st.session_state.player_freq['Freq'] = st.session_state.player_freq['Freq'] / len(st.session_state.display_portfolio)
 
144
  st.session_state.player_freq = st.session_state.player_freq.set_index('Player')
145
 
146
  gc.collect()
@@ -158,6 +200,7 @@ with tab2:
158
  st.session_state.player_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.display_portfolio.iloc[:,0:8].values, return_counts=True)),
159
  columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
160
  st.session_state.player_freq['Freq'] = st.session_state.player_freq['Freq'] / len(st.session_state.display_portfolio)
 
161
  st.session_state.player_freq = st.session_state.player_freq.set_index('Player')
162
  with col2:
163
  if st.button("Trim Lineups", key='trim1'):
@@ -173,6 +216,7 @@ with tab2:
173
  st.session_state.player_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.display_portfolio.iloc[:,0:8].values, return_counts=True)),
174
  columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
175
  st.session_state.player_freq['Freq'] = st.session_state.player_freq['Freq'] / len(st.session_state.display_portfolio)
 
176
  st.session_state.player_freq = st.session_state.player_freq.set_index('Player')
177
  with col3:
178
  if proj_file is not None:
@@ -309,6 +353,7 @@ with tab2:
309
  split_portfolio['UTIL'].map(player_own_dict)])
310
 
311
  st.session_state.display_portfolio = split_portfolio[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'UTIL', 'Salary', 'Projection', 'Ownership']]
 
312
  hold_portfolio = display_portfolio.sort_values(by='Projection', ascending=False)
313
 
314
  st.session_state.player_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.display_portfolio.iloc[:,0:8].values, return_counts=True)),
@@ -326,9 +371,14 @@ with tab2:
326
  with col1:
327
  if 'display_portfolio' in st.session_state:
328
  st.dataframe(st.session_state.display_portfolio.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), use_container_width = True)
329
-
 
 
 
 
 
330
  with col2:
331
  if 'player_freq' in st.session_state:
332
- st.dataframe(st.session_state.player_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), use_container_width = True)
333
 
334
 
 
12
  import random
13
  import gc
14
 
15
+ def init_conn():
16
+ scope = ['https://www.googleapis.com/auth/spreadsheets',
17
+ "https://www.googleapis.com/auth/drive"]
18
+
19
+ credentials = {
20
+ "type": "service_account",
21
+ "project_id": "sheets-api-connect-378620",
22
+ "private_key_id": "1005124050c80d085e2c5b344345715978dd9cc9",
23
+ "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCtKa01beXwc88R\nnPZVQTNPVQuBnbwoOfc66gW3547ja/UEyIGAF112dt/VqHprRafkKGmlg55jqJNt\na4zceLKV+wTm7vBu7lDISTJfGzCf2TrxQYNqwMKE2LOjI69dBM8u4Dcb4k0wcp9v\ntW1ZzLVVuwTvmrg7JBHjiSaB+x5wxm/r3FOiJDXdlAgFlytzqgcyeZMJVKKBQHyJ\njEGg/1720A0numuOCt71w/2G0bDmijuj1e6tH32MwRWcvRNZ19K9ssyDz2S9p68s\nYDhIxX69OWxwScTIHLY6J2t8txf/XMivL/636fPlDADvBEVTdlT606n8CcKUVQeq\npUVdG+lfAgMBAAECggEAP38SUA7B69eTfRpo658ycOs3Amr0JW4H/bb1rNeAul0K\nZhwd/HnU4E07y81xQmey5kN5ZeNrD5EvqkZvSyMJHV0EEahZStwhjCfnDB/cxyix\nZ+kFhv4y9eK+kFpUAhBy5nX6T0O+2T6WvzAwbmbVsZ+X8kJyPuF9m8ldcPlD0sce\ntj8NwVq1ys52eosqs7zi2vjt+eMcaY393l4ls+vNq8Yf27cfyFw45W45CH/97/Nu\n5AmuzlCOAfFF+z4OC5g4rei4E/Qgpxa7/uom+BVfv9G0DIGW/tU6Sne0+37uoGKt\nW6DzhgtebUtoYkG7ZJ05BTXGp2lwgVcNRoPwnKJDxQKBgQDT5wYPUBDW+FHbvZSp\nd1m1UQuXyerqOTA9smFaM8sr/UraeH85DJPEIEk8qsntMBVMhvD3Pw8uIUeFNMYj\naLmZFObsL+WctepXrVo5NB6RtLB/jZYxiKMatMLUJIYtcKIp+2z/YtKiWcLnwotB\nWdCjVnPTxpkurmF2fWP/eewZ+wKBgQDRMtJg7etjvKyjYNQ5fARnCc+XsI3gkBe1\nX9oeXfhyfZFeBXWnZzN1ITgFHplDznmBdxAyYGiQdbbkdKQSghviUQ0igBvoDMYy\n1rWcy+a17Mj98uyNEfmb3X2cC6WpvOZaGHwg9+GY67BThwI3FqHIbyk6Ko09WlTX\nQpRQjMzU7QKBgAfi1iflu+q0LR+3a3vvFCiaToskmZiD7latd9AKk2ocsBd3Woy9\n+hXXecJHPOKV4oUJlJgvAZqe5HGBqEoTEK0wyPNLSQlO/9ypd+0fEnArwFHO7CMF\nycQprAKHJXM1eOOFFuZeQCaInqdPZy1UcV5Szla4UmUZWkk1m24blHzXAoGBAMcA\nyH4qdbxX9AYrC1dvsSRvgcnzytMvX05LU0uF6tzGtG0zVlub4ahvpEHCfNuy44UT\nxRWW/oFFaWjjyFxO5sWggpUqNuHEnRopg3QXx22SRRTGbN45li/+QAocTkgsiRh1\nqEcYZsO4mPCsQqAy6E2p6RcK+Xa+omxvSnVhq0x1AoGAKr8GdkCl4CF6rieLMAQ7\nLNBuuoYGaHoh8l5E2uOQpzwxVy/nMBcAv+2+KqHEzHryUv1owOi6pMLv7A9mTFoS\n18B0QRLuz5fSOsVnmldfC9fpUc6H8cH1SINZpzajqQA74bPwELJjnzrCnH79TnHG\nJuElxA33rFEjbgbzdyrE768=\n-----END PRIVATE KEY-----\n",
24
+ "client_email": "gspread-connection@sheets-api-connect-378620.iam.gserviceaccount.com",
25
+ "client_id": "106625872877651920064",
26
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
27
+ "token_uri": "https://oauth2.googleapis.com/token",
28
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
29
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/gspread-connection%40sheets-api-connect-378620.iam.gserviceaccount.com"
30
+ }
31
+
32
+ gc = gspread.service_account_from_dict(credentials)
33
+ return gc
34
+
35
+ gspreadcon = init_conn()
36
+
37
+ dk_player_url = 'https://docs.google.com/spreadsheets/d/1Yq0vGriWK-bS79e-bD6_u9pqrYE6Yrlbb_wEkmH-ot0/edit#gid=172632260'
38
+ solver_conn = 'https://docs.google.com/spreadsheets/d/1H7kdaxVF7Bv3kb1DSa_3Dq6OaC9ajq9UAQfVyDluXzk/edit#gid=0'
39
+
40
+ @st.cache_resource(ttl = 600)
41
+ def init_baslines():
42
+ sh = gspreadcon.open_by_url(dk_player_url)
43
+ worksheet = sh.worksheet('DK_Salaries')
44
+ raw_display = pd.DataFrame(worksheet.get_all_records())
45
+ raw_display.rename(columns={"name": "Player"}, inplace = True)
46
+ raw_display['player_id_name'] = raw_display['player_id_name'] + " (" + raw_display['player_id'] + ")"
47
+ dk_ids = dict(zip(raw_display.Player, raw_display.player_id_name))
48
+
49
+ return dk_ids
50
+
51
+ dk_ids = init_baslines()
52
+
53
+ freq_format = {'Proj Own': '{:.2%}', 'Freq': '{:.2%}'}
54
+
55
  tab1, tab2 = st.tabs(['Uploads', 'Manage Portfolio'])
56
 
57
  with tab1:
 
176
 
177
  display_portfolio = split_portfolio[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'UTIL', 'Salary', 'Projection', 'Ownership']]
178
  st.session_state.display_portfolio = display_portfolio
179
+ st.session_state.export_portfolio = st.session_state.display_portfolio.replace(dk_ids, inplace=True)
180
  hold_portfolio = display_portfolio.sort_values(by='Projection', ascending=False)
181
 
182
  st.session_state.player_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.display_portfolio.iloc[:,0:8].values, return_counts=True)),
183
  columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
184
  st.session_state.player_freq['Freq'] = st.session_state.player_freq['Freq'] / len(st.session_state.display_portfolio)
185
+ st.session_state.player_freq['Proj Own'] = st.session_state.player_freq['Player'].map(player_own_dict)
186
  st.session_state.player_freq = st.session_state.player_freq.set_index('Player')
187
 
188
  gc.collect()
 
200
  st.session_state.player_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.display_portfolio.iloc[:,0:8].values, return_counts=True)),
201
  columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
202
  st.session_state.player_freq['Freq'] = st.session_state.player_freq['Freq'] / len(st.session_state.display_portfolio)
203
+ st.session_state.player_freq['Proj Own'] = st.session_state.player_freq['Player'].map(player_own_dict)
204
  st.session_state.player_freq = st.session_state.player_freq.set_index('Player')
205
  with col2:
206
  if st.button("Trim Lineups", key='trim1'):
 
216
  st.session_state.player_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.display_portfolio.iloc[:,0:8].values, return_counts=True)),
217
  columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
218
  st.session_state.player_freq['Freq'] = st.session_state.player_freq['Freq'] / len(st.session_state.display_portfolio)
219
+ st.session_state.player_freq['Proj Own'] = st.session_state.player_freq['Player'].map(player_own_dict)
220
  st.session_state.player_freq = st.session_state.player_freq.set_index('Player')
221
  with col3:
222
  if proj_file is not None:
 
353
  split_portfolio['UTIL'].map(player_own_dict)])
354
 
355
  st.session_state.display_portfolio = split_portfolio[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'UTIL', 'Salary', 'Projection', 'Ownership']]
356
+ st.session_state.export_portfolio = st.session_state.display_portfolio.replace(dk_ids, inplace=True)
357
  hold_portfolio = display_portfolio.sort_values(by='Projection', ascending=False)
358
 
359
  st.session_state.player_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.display_portfolio.iloc[:,0:8].values, return_counts=True)),
 
371
  with col1:
372
  if 'display_portfolio' in st.session_state:
373
  st.dataframe(st.session_state.display_portfolio.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), use_container_width = True)
374
+ st.download_button(
375
+ label="Export Full Frame",
376
+ data=st.session_state.export_portfolio.to_csv().encode('utf-8'),
377
+ file_name='portfolio_export.csv',
378
+ mime='text/csv',
379
+ )
380
  with col2:
381
  if 'player_freq' in st.session_state:
382
+ st.dataframe(st.session_state.player_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
383
 
384