Multichem commited on
Commit
3fffb63
·
verified ·
1 Parent(s): 2a5e5b7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +185 -181
app.py CHANGED
@@ -117,15 +117,17 @@ def convert_df_to_csv(df):
117
 
118
  t_stamp = load_time()
119
  site_slates = set_slate_teams()
120
- col1, col2 = st.columns([1, 5])
121
 
 
 
 
 
122
  with col1:
123
- #st.info(t_stamp)
124
- if st.button("Load/Reset Data", key='reset3'):
125
- t_stamp = load_time()
126
- st.cache_data.clear()
127
  slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary Slate', 'All Games'), key='slate_var1')
 
128
  site_var1 = st.radio("What table would you like to display?", ('Draftkings', 'Fanduel'), key='site_var1')
 
129
  custom_var1 = st.radio("Are you creating a custom table?", ('No', 'Yes'), key='custom_var1')
130
  if custom_var1 == 'No':
131
  if slate_var1 == 'Main Slate':
@@ -194,179 +196,181 @@ with col1:
194
  slate_teams = site_slates['FD Overall'].values.tolist()
195
  raw_baselines = load_fd_player_projections(all_fd_player_projections)
196
  raw_baselines = raw_baselines[raw_baselines['Team'].isin(slate_teams)]
197
- split_var1 = st.radio("Are you running the full slate or certain games?", ('Full Slate Run', 'Specific Games'), key='split_var1')
198
- if split_var1 == 'Specific Games':
199
- team_var1 = st.multiselect('Which teams would you like to include in the ROO?', options = raw_baselines['Team'].unique(), key='team_var1')
200
- elif split_var1 == 'Full Slate Run':
201
- team_var1 = raw_baselines.Team.values.tolist()
202
- pos_split1 = st.radio("Are you viewing all positions, specific groups, or specific positions?", ('All Positions', 'Specific Positions'), key='pos_split1')
203
- if pos_split1 == 'Specific Positions':
204
- pos_var1 = st.multiselect('What Positions would you like to view?', options = ['SP', 'P', 'C', '1B', '2B', '3B', 'SS', 'OF'])
205
- elif pos_split1 == 'All Positions':
206
- pos_var1 = 'All'
207
-
208
-
209
- with col2:
210
- if custom_var1 == 'No':
211
- if slate_var1 == 'Main Slate':
212
- if site_var1 == 'Draftkings':
213
- final_Proj = load_dk_player_roo(dk_player_projections)
214
- elif site_var1 == 'Fanduel':
215
- final_Proj = load_fd_player_roo(fd_player_projections)
216
- elif slate_var1 == 'Secondary Slate':
217
- if site_var1 == 'Draftkings':
218
- final_Proj = load_dk_player_roo(secondary_dk_player_projections)
219
- elif site_var1 == 'Fanduel':
220
- final_Proj = load_fd_player_roo(secondary_fd_player_projections)
221
- elif slate_var1 == 'All Games':
222
- if site_var1 == 'Draftkings':
223
- final_Proj = load_dk_player_roo(all_dk_player_projections)
224
- elif site_var1 == 'Fanduel':
225
- final_Proj = load_fd_player_roo(all_fd_player_projections)
226
- final_Proj = final_Proj[final_Proj['Team'].isin(team_var1)]
227
- if pos_var1 != 'All':
228
- final_Proj = final_Proj[final_Proj['Position'].str.contains('|'.join(pos_var1))]
229
- st.dataframe(final_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), use_container_width = True)
230
- st.download_button(
231
- label="Export Tables",
232
- data=convert_df_to_csv(final_Proj),
233
- file_name='Custom_MLB_export.csv',
234
- mime='text/csv',
235
- )
236
- elif custom_var1 == 'Yes':
237
- hold_container = st.empty()
238
- if st.button('Create Range of Outcomes for Slate'):
239
- with hold_container:
240
- # if slate_var1 == 'Main Slate':
241
- # if site_var1 == 'Draftkings':
242
- # raw_baselines = load_dk_player_projections(dk_player_projections)
243
- # elif site_var1 == 'Fanduel':
244
- # raw_baselines = load_fd_player_projections(fd_player_projections)
245
- # elif slate_var1 == 'Secondary Slate':
246
- # if site_var1 == 'Draftkings':
247
- # raw_baselines = load_dk_player_projections(secondary_dk_player_projections)
248
- # elif site_var1 == 'Fanduel':
249
- # raw_baselines = load_fd_player_projections(secondary_fd_player_projections)
250
- # elif slate_var1 == 'All Games':
251
- # if site_var1 == 'Draftkings':
252
- # raw_baselines = load_dk_player_projections(all_dk_player_projections)
253
- # elif site_var1 == 'Fanduel':
254
- # raw_baselines = load_fd_player_projections(all_fd_player_projections)
255
- working_roo = raw_baselines
256
- working_roo = working_roo[working_roo['Team'].isin(team_var1)]
257
- own_dict = dict(zip(working_roo.Player, working_roo.Own))
258
- team_dict = dict(zip(working_roo.Player, working_roo.Team))
259
- total_sims = 1000
260
-
261
- flex_file = working_roo[['Player', 'Position', 'Salary', 'Median', 'Ceiling_Var']]
262
- flex_file['Floor'] = flex_file['Median']*.25
263
- flex_file['Ceiling'] = np.where(flex_file['Position'] == 'SP', (flex_file['Median'] + (flex_file['Floor'])) + ((flex_file['Ceiling_Var'] * 10) * 3), (flex_file['Median'] + (flex_file['Floor'])) + ((flex_file['Ceiling_Var'] * 10)))
264
- flex_file['STD'] = (flex_file['Median']/4)
265
- flex_file = flex_file[['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD']]
266
- if pos_split1 == 'All Positions':
267
- flex_file = flex_file
268
- elif pos_split1 != 'All Positions':
269
- if pos_var1 == 'Pitchers':
270
- flex_file = flex_file[flex_file['Position'] == 'SP']
271
- elif pos_var1 == 'Hitters':
272
- flex_file = flex_file[flex_file['Position'] != 'SP']
273
- elif pos_var1 not in ['Pitchers', 'Hitters']:
274
- flex_file = flex_file[flex_file['Position'].str.contains('|'.join(pos_var1))]
275
- hold_file = flex_file
276
- overall_file = flex_file
277
- salary_file = flex_file
278
-
279
- overall_players = overall_file[['Player']]
280
-
281
- for x in range(0,total_sims):
282
- salary_file[x] = salary_file['Salary']
283
-
284
- salary_file=salary_file.drop(['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD'], axis=1)
285
- salary_file.astype('int').dtypes
286
-
287
- salary_file = salary_file.div(1000)
288
-
289
- for x in range(0,total_sims):
290
- overall_file[x] = np.random.normal(overall_file['Median'],overall_file['STD'])
291
-
292
- overall_file=overall_file.drop(['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD'], axis=1)
293
- overall_file.astype('int').dtypes
294
-
295
- players_only = hold_file[['Player']]
296
- raw_lineups_file = players_only
297
-
298
- for x in range(0,total_sims):
299
- maps_dict = {'proj_map':dict(zip(hold_file.Player,hold_file[x]))}
300
- raw_lineups_file[x] = sum([raw_lineups_file['Player'].map(maps_dict['proj_map'])])
301
- players_only[x] = raw_lineups_file[x].rank(ascending=False)
302
-
303
- players_only=players_only.drop(['Player'], axis=1)
304
- players_only.astype('int').dtypes
305
-
306
- salary_2x_check = (overall_file - (salary_file*2))
307
- salary_3x_check = (overall_file - (salary_file*3))
308
- salary_4x_check = (overall_file - (salary_file*4))
309
- gpp_check = (overall_file - ((salary_file*2)+10))
310
-
311
- players_only['Average_Rank'] = players_only.mean(axis=1)
312
- players_only['Top_finish'] = players_only[players_only == 1].count(axis=1)/total_sims
313
- players_only['Top_5_finish'] = players_only[players_only <= 5].count(axis=1)/total_sims
314
- players_only['Top_10_finish'] = players_only[players_only <= 10].count(axis=1)/total_sims
315
- players_only['20+%'] = overall_file[overall_file >= 20].count(axis=1)/float(total_sims)
316
- players_only['2x%'] = salary_2x_check[salary_2x_check >= 1].count(axis=1)/float(total_sims)
317
- players_only['3x%'] = salary_3x_check[salary_3x_check >= 1].count(axis=1)/float(total_sims)
318
- players_only['4x%'] = salary_4x_check[salary_4x_check >= 1].count(axis=1)/float(total_sims)
319
- players_only['GPP%'] = gpp_check[gpp_check >= 1].count(axis=1)/float(total_sims)
320
-
321
- players_only['Player'] = hold_file[['Player']]
322
-
323
- final_outcomes = players_only[['Player', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'GPP%']]
324
-
325
- final_Proj = pd.merge(hold_file, final_outcomes, on="Player")
326
- final_Proj = final_Proj[['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'GPP%']]
327
- final_Proj['Own'] = final_Proj['Player'].map(own_dict)
328
- final_Proj['Team'] = final_Proj['Player'].map(team_dict)
329
- final_Proj['Own'] = final_Proj['Own'].astype('float')
330
- if contest_var1 == 'Small Field GPP':
331
- if site_var1 == 'Draftkings':
332
- final_Proj['Own%'] = np.where((final_Proj['Position'] == 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean(), final_Proj['Own'])
333
- final_Proj['Own%'] = np.where((final_Proj['Position'] != 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (10 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean(), final_Proj['Own%'])
334
- final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
335
- elif site_var1 == 'Fanduel':
336
- final_Proj['Own%'] = np.where((final_Proj['Position'] == 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean(), final_Proj['Own'])
337
- final_Proj['Own%'] = np.where((final_Proj['Position'] != 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (10 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean())/150) + final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean(), final_Proj['Own%'])
338
- final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
339
- elif contest_var1 == 'Large Field GPP':
340
- if site_var1 == 'Draftkings':
341
- final_Proj['Own%'] = np.where((final_Proj['Position'] == 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (2.5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean(), final_Proj['Own'])
342
- final_Proj['Own%'] = np.where((final_Proj['Position'] != 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean(), final_Proj['Own%'])
343
- final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
344
- elif site_var1 == 'Fanduel':
345
- final_Proj['Own%'] = np.where((final_Proj['Position'] == 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (2.5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean(), final_Proj['Own'])
346
- final_Proj['Own%'] = np.where((final_Proj['Position'] != 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean())/150) + final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean(), final_Proj['Own%'])
347
- final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
348
- elif contest_var1 == 'Cash':
349
- if site_var1 == 'Draftkings':
350
- final_Proj['Own%'] = np.where((final_Proj['Position'] == 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (6 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean(), final_Proj['Own'])
351
- final_Proj['Own%'] = np.where((final_Proj['Position'] != 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (11 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean(), final_Proj['Own%'])
352
- final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
353
- elif site_var1 == 'Fanduel':
354
- final_Proj['Own%'] = np.where((final_Proj['Position'] == 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (6 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean(), final_Proj['Own'])
355
- final_Proj['Own%'] = np.where((final_Proj['Position'] != 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (11 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean())/150) + final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean(), final_Proj['Own%'])
356
- final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
357
-
358
- final_Proj = final_Proj[['Player', 'Position', 'Team', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'GPP%', 'Own%']]
359
- final_Proj = final_Proj.set_index('Player')
360
- final_Proj = final_Proj.sort_values(by='Median', ascending=False)
361
-
362
- with hold_container:
363
- hold_container = st.empty()
364
- final_Proj = final_Proj
365
- st.dataframe(final_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), use_container_width = True)
366
-
367
- st.download_button(
368
- label="Export Tables",
369
- data=convert_df_to_csv(final_Proj),
370
- file_name='Custom_MLB_export.csv',
371
- mime='text/csv',
372
- )
 
 
 
117
 
118
  t_stamp = load_time()
119
  site_slates = set_slate_teams()
120
+ col1, col2, col3, col4, col5 = st.columns([2, 2, 2, 2, 2])
121
 
122
+ #st.info(t_stamp)
123
+ if st.button("Load/Reset Data", key='reset3'):
124
+ t_stamp = load_time()
125
+ st.cache_data.clear()
126
  with col1:
 
 
 
 
127
  slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary Slate', 'All Games'), key='slate_var1')
128
+ with col2:
129
  site_var1 = st.radio("What table would you like to display?", ('Draftkings', 'Fanduel'), key='site_var1')
130
+ with col3:
131
  custom_var1 = st.radio("Are you creating a custom table?", ('No', 'Yes'), key='custom_var1')
132
  if custom_var1 == 'No':
133
  if slate_var1 == 'Main Slate':
 
196
  slate_teams = site_slates['FD Overall'].values.tolist()
197
  raw_baselines = load_fd_player_projections(all_fd_player_projections)
198
  raw_baselines = raw_baselines[raw_baselines['Team'].isin(slate_teams)]
199
+ with col4:
200
+ split_var1 = st.radio("Are you running the full slate or certain games?", ('Full Slate Run', 'Specific Games'), key='split_var1')
201
+ if split_var1 == 'Specific Games':
202
+ team_var1 = st.multiselect('Which teams would you like to include in the ROO?', options = raw_baselines['Team'].unique(), key='team_var1')
203
+ elif split_var1 == 'Full Slate Run':
204
+ team_var1 = raw_baselines.Team.values.tolist()
205
+ with col5:
206
+ pos_split1 = st.radio("Are you viewing all positions, specific groups, or specific positions?", ('All Positions', 'Specific Positions'), key='pos_split1')
207
+ if pos_split1 == 'Specific Positions':
208
+ pos_var1 = st.multiselect('What Positions would you like to view?', options = ['SP', 'P', 'C', '1B', '2B', '3B', 'SS', 'OF'])
209
+ elif pos_split1 == 'All Positions':
210
+ pos_var1 = 'All'
211
+
212
+
213
+
214
+ if custom_var1 == 'No':
215
+ if slate_var1 == 'Main Slate':
216
+ if site_var1 == 'Draftkings':
217
+ final_Proj = load_dk_player_roo(dk_player_projections)
218
+ elif site_var1 == 'Fanduel':
219
+ final_Proj = load_fd_player_roo(fd_player_projections)
220
+ elif slate_var1 == 'Secondary Slate':
221
+ if site_var1 == 'Draftkings':
222
+ final_Proj = load_dk_player_roo(secondary_dk_player_projections)
223
+ elif site_var1 == 'Fanduel':
224
+ final_Proj = load_fd_player_roo(secondary_fd_player_projections)
225
+ elif slate_var1 == 'All Games':
226
+ if site_var1 == 'Draftkings':
227
+ final_Proj = load_dk_player_roo(all_dk_player_projections)
228
+ elif site_var1 == 'Fanduel':
229
+ final_Proj = load_fd_player_roo(all_fd_player_projections)
230
+ final_Proj = final_Proj[final_Proj['Team'].isin(team_var1)]
231
+ if pos_var1 != 'All':
232
+ final_Proj = final_Proj[final_Proj['Position'].str.contains('|'.join(pos_var1))]
233
+ st.dataframe(final_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), use_container_width = True)
234
+ st.download_button(
235
+ label="Export Tables",
236
+ data=convert_df_to_csv(final_Proj),
237
+ file_name='Custom_MLB_export.csv',
238
+ mime='text/csv',
239
+ )
240
+ elif custom_var1 == 'Yes':
241
+ hold_container = st.empty()
242
+ if st.button('Create Range of Outcomes for Slate'):
243
+ with hold_container:
244
+ # if slate_var1 == 'Main Slate':
245
+ # if site_var1 == 'Draftkings':
246
+ # raw_baselines = load_dk_player_projections(dk_player_projections)
247
+ # elif site_var1 == 'Fanduel':
248
+ # raw_baselines = load_fd_player_projections(fd_player_projections)
249
+ # elif slate_var1 == 'Secondary Slate':
250
+ # if site_var1 == 'Draftkings':
251
+ # raw_baselines = load_dk_player_projections(secondary_dk_player_projections)
252
+ # elif site_var1 == 'Fanduel':
253
+ # raw_baselines = load_fd_player_projections(secondary_fd_player_projections)
254
+ # elif slate_var1 == 'All Games':
255
+ # if site_var1 == 'Draftkings':
256
+ # raw_baselines = load_dk_player_projections(all_dk_player_projections)
257
+ # elif site_var1 == 'Fanduel':
258
+ # raw_baselines = load_fd_player_projections(all_fd_player_projections)
259
+ working_roo = raw_baselines
260
+ working_roo = working_roo[working_roo['Team'].isin(team_var1)]
261
+ own_dict = dict(zip(working_roo.Player, working_roo.Own))
262
+ team_dict = dict(zip(working_roo.Player, working_roo.Team))
263
+ total_sims = 1000
264
+
265
+ flex_file = working_roo[['Player', 'Position', 'Salary', 'Median', 'Ceiling_Var']]
266
+ flex_file['Floor'] = flex_file['Median']*.25
267
+ flex_file['Ceiling'] = np.where(flex_file['Position'] == 'SP', (flex_file['Median'] + (flex_file['Floor'])) + ((flex_file['Ceiling_Var'] * 10) * 3), (flex_file['Median'] + (flex_file['Floor'])) + ((flex_file['Ceiling_Var'] * 10)))
268
+ flex_file['STD'] = (flex_file['Median']/4)
269
+ flex_file = flex_file[['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD']]
270
+ if pos_split1 == 'All Positions':
271
+ flex_file = flex_file
272
+ elif pos_split1 != 'All Positions':
273
+ if pos_var1 == 'Pitchers':
274
+ flex_file = flex_file[flex_file['Position'] == 'SP']
275
+ elif pos_var1 == 'Hitters':
276
+ flex_file = flex_file[flex_file['Position'] != 'SP']
277
+ elif pos_var1 not in ['Pitchers', 'Hitters']:
278
+ flex_file = flex_file[flex_file['Position'].str.contains('|'.join(pos_var1))]
279
+ hold_file = flex_file
280
+ overall_file = flex_file
281
+ salary_file = flex_file
282
+
283
+ overall_players = overall_file[['Player']]
284
+
285
+ for x in range(0,total_sims):
286
+ salary_file[x] = salary_file['Salary']
287
+
288
+ salary_file=salary_file.drop(['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD'], axis=1)
289
+ salary_file.astype('int').dtypes
290
+
291
+ salary_file = salary_file.div(1000)
292
+
293
+ for x in range(0,total_sims):
294
+ overall_file[x] = np.random.normal(overall_file['Median'],overall_file['STD'])
295
+
296
+ overall_file=overall_file.drop(['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD'], axis=1)
297
+ overall_file.astype('int').dtypes
298
+
299
+ players_only = hold_file[['Player']]
300
+ raw_lineups_file = players_only
301
+
302
+ for x in range(0,total_sims):
303
+ maps_dict = {'proj_map':dict(zip(hold_file.Player,hold_file[x]))}
304
+ raw_lineups_file[x] = sum([raw_lineups_file['Player'].map(maps_dict['proj_map'])])
305
+ players_only[x] = raw_lineups_file[x].rank(ascending=False)
306
+
307
+ players_only=players_only.drop(['Player'], axis=1)
308
+ players_only.astype('int').dtypes
309
+
310
+ salary_2x_check = (overall_file - (salary_file*2))
311
+ salary_3x_check = (overall_file - (salary_file*3))
312
+ salary_4x_check = (overall_file - (salary_file*4))
313
+ gpp_check = (overall_file - ((salary_file*2)+10))
314
+
315
+ players_only['Average_Rank'] = players_only.mean(axis=1)
316
+ players_only['Top_finish'] = players_only[players_only == 1].count(axis=1)/total_sims
317
+ players_only['Top_5_finish'] = players_only[players_only <= 5].count(axis=1)/total_sims
318
+ players_only['Top_10_finish'] = players_only[players_only <= 10].count(axis=1)/total_sims
319
+ players_only['20+%'] = overall_file[overall_file >= 20].count(axis=1)/float(total_sims)
320
+ players_only['2x%'] = salary_2x_check[salary_2x_check >= 1].count(axis=1)/float(total_sims)
321
+ players_only['3x%'] = salary_3x_check[salary_3x_check >= 1].count(axis=1)/float(total_sims)
322
+ players_only['4x%'] = salary_4x_check[salary_4x_check >= 1].count(axis=1)/float(total_sims)
323
+ players_only['GPP%'] = gpp_check[gpp_check >= 1].count(axis=1)/float(total_sims)
324
+
325
+ players_only['Player'] = hold_file[['Player']]
326
+
327
+ final_outcomes = players_only[['Player', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'GPP%']]
328
+
329
+ final_Proj = pd.merge(hold_file, final_outcomes, on="Player")
330
+ final_Proj = final_Proj[['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'GPP%']]
331
+ final_Proj['Own'] = final_Proj['Player'].map(own_dict)
332
+ final_Proj['Team'] = final_Proj['Player'].map(team_dict)
333
+ final_Proj['Own'] = final_Proj['Own'].astype('float')
334
+ if contest_var1 == 'Small Field GPP':
335
+ if site_var1 == 'Draftkings':
336
+ final_Proj['Own%'] = np.where((final_Proj['Position'] == 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean(), final_Proj['Own'])
337
+ final_Proj['Own%'] = np.where((final_Proj['Position'] != 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (10 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean(), final_Proj['Own%'])
338
+ final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
339
+ elif site_var1 == 'Fanduel':
340
+ final_Proj['Own%'] = np.where((final_Proj['Position'] == 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean(), final_Proj['Own'])
341
+ final_Proj['Own%'] = np.where((final_Proj['Position'] != 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (10 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean())/150) + final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean(), final_Proj['Own%'])
342
+ final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
343
+ elif contest_var1 == 'Large Field GPP':
344
+ if site_var1 == 'Draftkings':
345
+ final_Proj['Own%'] = np.where((final_Proj['Position'] == 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (2.5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean(), final_Proj['Own'])
346
+ final_Proj['Own%'] = np.where((final_Proj['Position'] != 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean(), final_Proj['Own%'])
347
+ final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
348
+ elif site_var1 == 'Fanduel':
349
+ final_Proj['Own%'] = np.where((final_Proj['Position'] == 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (2.5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean(), final_Proj['Own'])
350
+ final_Proj['Own%'] = np.where((final_Proj['Position'] != 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (5 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean())/150) + final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean(), final_Proj['Own%'])
351
+ final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
352
+ elif contest_var1 == 'Cash':
353
+ if site_var1 == 'Draftkings':
354
+ final_Proj['Own%'] = np.where((final_Proj['Position'] == 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (6 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'SP', 'Own'].mean(), final_Proj['Own'])
355
+ final_Proj['Own%'] = np.where((final_Proj['Position'] != 'SP') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean() >= 0), final_Proj['Own'] * (11 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] != 'SP', 'Own'].mean(), final_Proj['Own%'])
356
+ final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
357
+ elif site_var1 == 'Fanduel':
358
+ final_Proj['Own%'] = np.where((final_Proj['Position'] == 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (6 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean())/100) + final_Proj.loc[final_Proj['Position'] == 'P', 'Own'].mean(), final_Proj['Own'])
359
+ final_Proj['Own%'] = np.where((final_Proj['Position'] != 'P') & (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean() >= 0), final_Proj['Own'] * (11 * (final_Proj['Own'] - final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean())/150) + final_Proj.loc[final_Proj['Position'] != 'P', 'Own'].mean(), final_Proj['Own%'])
360
+ final_Proj['Own%'] = np.where(final_Proj['Own%'] > 75, 75, final_Proj['Own%'])
361
+
362
+ final_Proj = final_Proj[['Player', 'Position', 'Team', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%', 'GPP%', 'Own%']]
363
+ final_Proj = final_Proj.set_index('Player')
364
+ final_Proj = final_Proj.sort_values(by='Median', ascending=False)
365
+
366
+ with hold_container:
367
+ hold_container = st.empty()
368
+ final_Proj = final_Proj
369
+ st.dataframe(final_Proj.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(player_roo_format, precision=2), use_container_width = True)
370
+
371
+ st.download_button(
372
+ label="Export Tables",
373
+ data=convert_df_to_csv(final_Proj),
374
+ file_name='Custom_MLB_export.csv',
375
+ mime='text/csv',
376
+ )