Spaces:
Running
Running
James McCool
commited on
Commit
·
55016b9
1
Parent(s):
6317102
Enhance app.py to support both NBA and WNBA leagues: refactor lineup initialization functions to accept league as an argument, update column definitions for WNBA, and implement conditional logic for data retrieval and display, improving overall functionality and user experience.
Browse files
app.py
CHANGED
@@ -19,10 +19,15 @@ def init_conn():
|
|
19 |
|
20 |
db, wnba_db = init_conn()
|
21 |
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
roo_format = {'Top_finish': '{:.2%}', 'Top_5_finish': '{:.2%}', 'Top_10_finish': '{:.2%}', '20+%': '{:.2%}', '4x%': '{:.2%}', '5x%': '{:.2%}', '6x%': '{:.2%}', 'GPP%': '{:.2%}'}
|
28 |
|
@@ -173,23 +178,35 @@ def load_overall_stats(league: str):
|
|
173 |
return dk_raw, fd_raw, dk_raw_sec, fd_raw_sec, roo_raw, sd_raw, dk_sd_raw, fd_sd_raw, timestamp
|
174 |
|
175 |
@st.cache_data(ttl = 60)
|
176 |
-
def init_DK_lineups(slate_desig: str):
|
177 |
|
178 |
if slate_desig == 'Main Slate':
|
179 |
-
|
|
|
|
|
|
|
180 |
cursor = collection.find()
|
181 |
raw_data = pd.DataFrame(list(cursor))
|
182 |
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
183 |
-
|
184 |
-
|
|
|
|
|
|
|
185 |
cursor = collection.find().limit(10000)
|
186 |
elif slate_desig == 'Secondary':
|
187 |
-
|
|
|
|
|
|
|
188 |
cursor = collection.find()
|
189 |
raw_data = pd.DataFrame(list(cursor))
|
190 |
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
191 |
-
|
192 |
-
|
|
|
|
|
|
|
193 |
cursor = collection.find().limit(10000)
|
194 |
elif slate_desig == 'Auxiliary':
|
195 |
collection = db['DK_NBA_Auxiliary_name_map']
|
@@ -201,8 +218,13 @@ def init_DK_lineups(slate_desig: str):
|
|
201 |
cursor = collection.find().limit(10000)
|
202 |
|
203 |
raw_display = pd.DataFrame(list(cursor))
|
204 |
-
|
205 |
-
|
|
|
|
|
|
|
|
|
|
|
206 |
for col in dict_columns:
|
207 |
raw_display[col] = raw_display[col].map(names_dict)
|
208 |
DK_seed = raw_display.to_numpy()
|
@@ -210,12 +232,18 @@ def init_DK_lineups(slate_desig: str):
|
|
210 |
return DK_seed
|
211 |
|
212 |
@st.cache_data(ttl = 60)
|
213 |
-
def init_DK_SD_lineups(slate_desig: str):
|
214 |
|
215 |
if slate_desig == 'Main Slate':
|
216 |
-
|
|
|
|
|
|
|
217 |
elif slate_desig == 'Secondary':
|
218 |
-
|
|
|
|
|
|
|
219 |
elif slate_desig == 'Auxiliary':
|
220 |
collection = db["DK_NBA_Auxiliary_SD_seed_frame"]
|
221 |
|
@@ -228,23 +256,35 @@ def init_DK_SD_lineups(slate_desig: str):
|
|
228 |
return DK_seed
|
229 |
|
230 |
@st.cache_data(ttl = 60)
|
231 |
-
def init_FD_lineups(slate_desig: str):
|
232 |
|
233 |
if slate_desig == 'Main Slate':
|
234 |
-
|
|
|
|
|
|
|
235 |
cursor = collection.find()
|
236 |
raw_data = pd.DataFrame(list(cursor))
|
237 |
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
238 |
|
239 |
-
|
|
|
|
|
|
|
240 |
cursor = collection.find().limit(10000)
|
241 |
elif slate_desig == 'Secondary':
|
242 |
-
|
|
|
|
|
|
|
243 |
cursor = collection.find()
|
244 |
raw_data = pd.DataFrame(list(cursor))
|
245 |
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
246 |
|
247 |
-
|
|
|
|
|
|
|
248 |
cursor = collection.find().limit(10000)
|
249 |
elif slate_desig == 'Auxiliary':
|
250 |
collection = db['FD_NBA_Auxiliary_name_map']
|
@@ -256,8 +296,12 @@ def init_FD_lineups(slate_desig: str):
|
|
256 |
cursor = collection.find().limit(10000)
|
257 |
|
258 |
raw_display = pd.DataFrame(list(cursor))
|
259 |
-
|
260 |
-
|
|
|
|
|
|
|
|
|
261 |
for col in dict_columns:
|
262 |
raw_display[col] = raw_display[col].map(names_dict)
|
263 |
FD_seed = raw_display.to_numpy()
|
@@ -265,12 +309,18 @@ def init_FD_lineups(slate_desig: str):
|
|
265 |
return FD_seed
|
266 |
|
267 |
@st.cache_data(ttl = 60)
|
268 |
-
def init_FD_SD_lineups(slate_desig: str):
|
269 |
|
270 |
if slate_desig == 'Main Slate':
|
271 |
-
|
|
|
|
|
|
|
272 |
elif slate_desig == 'Secondary':
|
273 |
-
|
|
|
|
|
|
|
274 |
elif slate_desig == 'Auxiliary':
|
275 |
collection = db["FD_NBA_Auxiliary_SD_seed_frame"]
|
276 |
|
@@ -297,10 +347,16 @@ salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
|
|
297 |
dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
298 |
fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
|
299 |
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
t_stamp = f"Last Update: " + str(timestamp) + f" CST"
|
305 |
|
306 |
tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
|
@@ -324,10 +380,15 @@ with tab1:
|
|
324 |
salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
|
325 |
dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
326 |
fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
|
|
|
|
|
|
|
|
|
|
331 |
t_stamp = f"Last Update: " + str(timestamp) + f" CST"
|
332 |
for key in st.session_state.keys():
|
333 |
del st.session_state[key]
|
@@ -425,31 +486,44 @@ with tab2:
|
|
425 |
salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
|
426 |
dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
427 |
fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
|
|
|
|
|
|
|
|
|
|
432 |
t_stamp = f"Last Update: " + str(timestamp) + f" CST"
|
433 |
for key in st.session_state.keys():
|
434 |
del st.session_state[key]
|
435 |
|
436 |
-
col1, col2, col3, col4, col5 = st.columns(
|
437 |
with col1:
|
438 |
-
|
439 |
with col2:
|
|
|
|
|
440 |
site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'))
|
441 |
if 'working_seed' in st.session_state:
|
442 |
del st.session_state['working_seed']
|
443 |
-
with col3:
|
444 |
-
slate_type_var1 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'))
|
445 |
with col4:
|
446 |
-
|
447 |
with col5:
|
|
|
|
|
448 |
if site_var1 == 'Draftkings':
|
449 |
-
if
|
450 |
-
|
451 |
-
|
452 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
453 |
|
454 |
player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
|
455 |
if player_var1 == 'Specific Players':
|
@@ -458,10 +532,16 @@ with tab2:
|
|
458 |
player_var2 = dk_raw.Player.values.tolist()
|
459 |
|
460 |
elif site_var1 == 'Fanduel':
|
461 |
-
if
|
462 |
-
|
463 |
-
|
464 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
465 |
|
466 |
player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
|
467 |
if player_var1 == 'Specific Players':
|
@@ -472,24 +552,24 @@ with tab2:
|
|
472 |
|
473 |
if site_var1 == 'Draftkings':
|
474 |
if slate_type_var1 == 'Regular':
|
475 |
-
data_export = init_DK_lineups(slate_var1)
|
476 |
data_export_names = data_export.copy()
|
477 |
for col_idx in range(8):
|
478 |
data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
|
479 |
elif slate_type_var1 == 'Showdown':
|
480 |
-
data_export = init_DK_SD_lineups(slate_var1)
|
481 |
data_export_names = data_export.copy()
|
482 |
for col_idx in range(6):
|
483 |
data_export[:, col_idx] = np.array([dk_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
|
484 |
|
485 |
elif site_var1 == 'Fanduel':
|
486 |
if slate_type_var1 == 'Regular':
|
487 |
-
data_export = init_FD_lineups(slate_var1)
|
488 |
data_export_names = data_export.copy()
|
489 |
for col_idx in range(9):
|
490 |
data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
|
491 |
elif slate_type_var1 == 'Showdown':
|
492 |
-
data_export = init_FD_SD_lineups(slate_var1)
|
493 |
data_export_names = data_export.copy()
|
494 |
for col_idx in range(6):
|
495 |
data_export[:, col_idx] = np.array([fd_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
|
@@ -518,17 +598,17 @@ with tab2:
|
|
518 |
|
519 |
elif 'working_seed' not in st.session_state:
|
520 |
if slate_type_var1 == 'Regular':
|
521 |
-
st.session_state.working_seed = init_DK_lineups(slate_var1)
|
522 |
elif slate_type_var1 == 'Showdown':
|
523 |
-
st.session_state.working_seed = init_DK_SD_lineups(slate_var1)
|
524 |
st.session_state.working_seed = st.session_state.working_seed
|
525 |
if player_var1 == 'Specific Players':
|
526 |
st.session_state.working_seed = st.session_state.working_seed[np.equal.outer(st.session_state.working_seed, player_var2).any(axis=1).all(axis=1)]
|
527 |
elif player_var1 == 'Full Slate':
|
528 |
if slate_type_var1 == 'Regular':
|
529 |
-
st.session_state.working_seed = init_DK_lineups(slate_var1)
|
530 |
elif slate_type_var1 == 'Showdown':
|
531 |
-
st.session_state.working_seed = init_DK_SD_lineups(slate_var1)
|
532 |
st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
|
533 |
|
534 |
elif site_var1 == 'Fanduel':
|
@@ -542,17 +622,17 @@ with tab2:
|
|
542 |
|
543 |
elif 'working_seed' not in st.session_state:
|
544 |
if slate_type_var1 == 'Regular':
|
545 |
-
st.session_state.working_seed = init_FD_lineups(slate_var1)
|
546 |
elif slate_type_var1 == 'Showdown':
|
547 |
-
st.session_state.working_seed = init_FD_SD_lineups(slate_var1)
|
548 |
st.session_state.working_seed = st.session_state.working_seed
|
549 |
if player_var1 == 'Specific Players':
|
550 |
st.session_state.working_seed = st.session_state.working_seed[np.equal.outer(st.session_state.working_seed, player_var2).any(axis=1).all(axis=1)]
|
551 |
elif player_var1 == 'Full Slate':
|
552 |
if slate_type_var1 == 'Regular':
|
553 |
-
st.session_state.working_seed = init_FD_lineups(slate_var1)
|
554 |
elif slate_type_var1 == 'Showdown':
|
555 |
-
st.session_state.working_seed = init_FD_SD_lineups(slate_var1)
|
556 |
st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
|
557 |
|
558 |
export_file = st.session_state.data_export_display.copy()
|
@@ -576,15 +656,27 @@ with tab2:
|
|
576 |
for key in st.session_state.keys():
|
577 |
del st.session_state[key]
|
578 |
if site_var1 == 'Draftkings':
|
579 |
-
if
|
580 |
-
|
581 |
-
|
582 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
583 |
elif site_var1 == 'Fanduel':
|
584 |
-
if
|
585 |
-
|
586 |
-
|
587 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
588 |
if 'data_export_display' in st.session_state:
|
589 |
st.dataframe(st.session_state.data_export_display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=500, use_container_width = True)
|
590 |
st.download_button(
|
@@ -598,96 +690,188 @@ with tab2:
|
|
598 |
if 'working_seed' in st.session_state:
|
599 |
# Create a new dataframe with summary statistics
|
600 |
if site_var1 == 'Draftkings':
|
601 |
-
if
|
602 |
-
|
603 |
-
|
604 |
-
'
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
'
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
645 |
|
646 |
elif site_var1 == 'Fanduel':
|
647 |
-
if
|
648 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
649 |
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
elif
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
691 |
|
692 |
# Set the index of the summary dataframe as the "Metric" column
|
693 |
summary_df = summary_df.set_index('Metric')
|
@@ -704,16 +888,29 @@ with tab2:
|
|
704 |
tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
|
705 |
with tab1:
|
706 |
if 'data_export_display' in st.session_state:
|
707 |
-
if
|
708 |
-
if
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
717 |
|
718 |
# Flatten the DataFrame and count unique values
|
719 |
value_counts = player_columns.values.flatten().tolist()
|
@@ -744,16 +941,28 @@ with tab2:
|
|
744 |
)
|
745 |
with tab2:
|
746 |
if 'working_seed' in st.session_state:
|
747 |
-
if
|
748 |
-
if
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
757 |
|
758 |
# Flatten the DataFrame and count unique values
|
759 |
value_counts = player_columns.flatten().tolist()
|
|
|
19 |
|
20 |
db, wnba_db = init_conn()
|
21 |
|
22 |
+
dk_nba_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
23 |
+
dk_nba_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
24 |
+
fd_nba_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
25 |
+
fd_nba_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
26 |
+
|
27 |
+
dk_wnba_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
28 |
+
dk_wnba_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
29 |
+
fd_wnba_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
30 |
+
fd_wnba_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
31 |
|
32 |
roo_format = {'Top_finish': '{:.2%}', 'Top_5_finish': '{:.2%}', 'Top_10_finish': '{:.2%}', '20+%': '{:.2%}', '4x%': '{:.2%}', '5x%': '{:.2%}', '6x%': '{:.2%}', 'GPP%': '{:.2%}'}
|
33 |
|
|
|
178 |
return dk_raw, fd_raw, dk_raw_sec, fd_raw_sec, roo_raw, sd_raw, dk_sd_raw, fd_sd_raw, timestamp
|
179 |
|
180 |
@st.cache_data(ttl = 60)
|
181 |
+
def init_DK_lineups(slate_desig: str, league: str):
|
182 |
|
183 |
if slate_desig == 'Main Slate':
|
184 |
+
if league == 'NBA':
|
185 |
+
collection = db['DK_NBA_name_map']
|
186 |
+
elif league == 'WNBA':
|
187 |
+
collection = wnba_db['DK_WNBA_name_map']
|
188 |
cursor = collection.find()
|
189 |
raw_data = pd.DataFrame(list(cursor))
|
190 |
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
191 |
+
|
192 |
+
if league == 'NBA':
|
193 |
+
collection = db["DK_NBA_seed_frame"]
|
194 |
+
elif league == 'WNBA':
|
195 |
+
collection = wnba_db["DK_WNBA_seed_frame"]
|
196 |
cursor = collection.find().limit(10000)
|
197 |
elif slate_desig == 'Secondary':
|
198 |
+
if league == 'NBA':
|
199 |
+
collection = db['DK_NBA_Secondary_name_map']
|
200 |
+
elif league == 'WNBA':
|
201 |
+
collection = wnba_db['DK_WNBA_Secondary_name_map']
|
202 |
cursor = collection.find()
|
203 |
raw_data = pd.DataFrame(list(cursor))
|
204 |
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
205 |
+
|
206 |
+
if league == 'NBA':
|
207 |
+
collection = db["DK_NBA_Secondary_seed_frame"]
|
208 |
+
elif league == 'WNBA':
|
209 |
+
collection = wnba_db["DK_WNBA_Secondary_seed_frame"]
|
210 |
cursor = collection.find().limit(10000)
|
211 |
elif slate_desig == 'Auxiliary':
|
212 |
collection = db['DK_NBA_Auxiliary_name_map']
|
|
|
218 |
cursor = collection.find().limit(10000)
|
219 |
|
220 |
raw_display = pd.DataFrame(list(cursor))
|
221 |
+
if league == 'NBA':
|
222 |
+
raw_display = raw_display[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
223 |
+
dict_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']
|
224 |
+
elif league == 'WNBA':
|
225 |
+
raw_display = raw_display[['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
226 |
+
dict_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
|
227 |
+
|
228 |
for col in dict_columns:
|
229 |
raw_display[col] = raw_display[col].map(names_dict)
|
230 |
DK_seed = raw_display.to_numpy()
|
|
|
232 |
return DK_seed
|
233 |
|
234 |
@st.cache_data(ttl = 60)
|
235 |
+
def init_DK_SD_lineups(slate_desig: str, league: str):
|
236 |
|
237 |
if slate_desig == 'Main Slate':
|
238 |
+
if league == 'NBA':
|
239 |
+
collection = db["DK_NBA_SD_seed_frame"]
|
240 |
+
elif league == 'WNBA':
|
241 |
+
collection = wnba_db["DK_WNBA_SD_seed_frame"]
|
242 |
elif slate_desig == 'Secondary':
|
243 |
+
if league == 'NBA':
|
244 |
+
collection = db["DK_NBA_Secondary_SD_seed_frame"]
|
245 |
+
elif league == 'WNBA':
|
246 |
+
collection = wnba_db["DK_WNBA_Secondary_SD_seed_frame"]
|
247 |
elif slate_desig == 'Auxiliary':
|
248 |
collection = db["DK_NBA_Auxiliary_SD_seed_frame"]
|
249 |
|
|
|
256 |
return DK_seed
|
257 |
|
258 |
@st.cache_data(ttl = 60)
|
259 |
+
def init_FD_lineups(slate_desig: str, league: str):
|
260 |
|
261 |
if slate_desig == 'Main Slate':
|
262 |
+
if league == 'NBA':
|
263 |
+
collection = db['FD_NBA_name_map']
|
264 |
+
elif league == 'WNBA':
|
265 |
+
collection = wnba_db['FD_WNBA_name_map']
|
266 |
cursor = collection.find()
|
267 |
raw_data = pd.DataFrame(list(cursor))
|
268 |
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
269 |
|
270 |
+
if league == 'NBA':
|
271 |
+
collection = db["FD_NBA_seed_frame"]
|
272 |
+
elif league == 'WNBA':
|
273 |
+
collection = wnba_db["FD_WNBA_seed_frame"]
|
274 |
cursor = collection.find().limit(10000)
|
275 |
elif slate_desig == 'Secondary':
|
276 |
+
if league == 'NBA':
|
277 |
+
collection = db['FD_NBA_Secondary_name_map']
|
278 |
+
elif league == 'WNBA':
|
279 |
+
collection = wnba_db['FD_WNBA_Secondary_name_map']
|
280 |
cursor = collection.find()
|
281 |
raw_data = pd.DataFrame(list(cursor))
|
282 |
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
283 |
|
284 |
+
if league == 'NBA':
|
285 |
+
collection = db["FD_NBA_Secondary_seed_frame"]
|
286 |
+
elif league == 'WNBA':
|
287 |
+
collection = wnba_db["FD_WNBA_Secondary_seed_frame"]
|
288 |
cursor = collection.find().limit(10000)
|
289 |
elif slate_desig == 'Auxiliary':
|
290 |
collection = db['FD_NBA_Auxiliary_name_map']
|
|
|
296 |
cursor = collection.find().limit(10000)
|
297 |
|
298 |
raw_display = pd.DataFrame(list(cursor))
|
299 |
+
if league == 'NBA':
|
300 |
+
raw_display = raw_display[['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
301 |
+
dict_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C1']
|
302 |
+
elif league == 'WNBA':
|
303 |
+
raw_display = raw_display[['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']]
|
304 |
+
dict_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
|
305 |
for col in dict_columns:
|
306 |
raw_display[col] = raw_display[col].map(names_dict)
|
307 |
FD_seed = raw_display.to_numpy()
|
|
|
309 |
return FD_seed
|
310 |
|
311 |
@st.cache_data(ttl = 60)
|
312 |
+
def init_FD_SD_lineups(slate_desig: str, league: str):
|
313 |
|
314 |
if slate_desig == 'Main Slate':
|
315 |
+
if league == 'NBA':
|
316 |
+
collection = db["FD_NBA_SD_seed_frame"]
|
317 |
+
elif league == 'WNBA':
|
318 |
+
collection = wnba_db["FD_WNBA_SD_seed_frame"]
|
319 |
elif slate_desig == 'Secondary':
|
320 |
+
if league == 'NBA':
|
321 |
+
collection = db["FD_NBA_Secondary_SD_seed_frame"]
|
322 |
+
elif league == 'WNBA':
|
323 |
+
collection = wnba_db["FD_WNBA_Secondary_SD_seed_frame"]
|
324 |
elif slate_desig == 'Auxiliary':
|
325 |
collection = db["FD_NBA_Auxiliary_SD_seed_frame"]
|
326 |
|
|
|
347 |
dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
348 |
fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
|
349 |
|
350 |
+
dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
|
351 |
+
dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
|
352 |
+
fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
|
353 |
+
fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
|
354 |
+
|
355 |
+
dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
|
356 |
+
dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
|
357 |
+
fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
|
358 |
+
fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
|
359 |
+
|
360 |
t_stamp = f"Last Update: " + str(timestamp) + f" CST"
|
361 |
|
362 |
tab1, tab2 = st.tabs(['Range of Outcomes', 'Optimals'])
|
|
|
380 |
salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
|
381 |
dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
382 |
fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
|
383 |
+
dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
|
384 |
+
dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
|
385 |
+
fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
|
386 |
+
fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
|
387 |
+
|
388 |
+
dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
|
389 |
+
dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
|
390 |
+
fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
|
391 |
+
fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
|
392 |
t_stamp = f"Last Update: " + str(timestamp) + f" CST"
|
393 |
for key in st.session_state.keys():
|
394 |
del st.session_state[key]
|
|
|
486 |
salary_dict_sd = dict(zip(sd_raw.Player, sd_raw.Salary))
|
487 |
dk_id_dict_sd = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
488 |
fd_id_dict_sd = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
|
489 |
+
dk_nba_lineups = pd.DataFrame(columns=dk_nba_columns)
|
490 |
+
dk_nba_sd_lineups = pd.DataFrame(columns=dk_nba_sd_columns)
|
491 |
+
fd_nba_lineups = pd.DataFrame(columns=fd_nba_columns)
|
492 |
+
fd_nba_sd_lineups = pd.DataFrame(columns=fd_nba_sd_columns)
|
493 |
+
|
494 |
+
dk_wnba_lineups = pd.DataFrame(columns=dk_wnba_columns)
|
495 |
+
dk_wnba_sd_lineups = pd.DataFrame(columns=dk_wnba_sd_columns)
|
496 |
+
fd_wnba_lineups = pd.DataFrame(columns=fd_wnba_columns)
|
497 |
+
fd_wnba_sd_lineups = pd.DataFrame(columns=fd_wnba_sd_columns)
|
498 |
t_stamp = f"Last Update: " + str(timestamp) + f" CST"
|
499 |
for key in st.session_state.keys():
|
500 |
del st.session_state[key]
|
501 |
|
502 |
+
col1, col2, col3, col4, col5, col6 = st.columns(6)
|
503 |
with col1:
|
504 |
+
league_var = st.radio("What League to load:", ('NBA', 'WNBA'), key='league_var')
|
505 |
with col2:
|
506 |
+
slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Secondary'))
|
507 |
+
with col3:
|
508 |
site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'))
|
509 |
if 'working_seed' in st.session_state:
|
510 |
del st.session_state['working_seed']
|
|
|
|
|
511 |
with col4:
|
512 |
+
slate_type_var1 = st.radio("What slate type are you working with?", ('Regular', 'Showdown'))
|
513 |
with col5:
|
514 |
+
lineup_num_var = st.number_input("How many lineups do you want to display?", min_value=1, max_value=1000, value=150, step=1)
|
515 |
+
with col6:
|
516 |
if site_var1 == 'Draftkings':
|
517 |
+
if league_var == 'NBA':
|
518 |
+
if slate_type_var1 == 'Regular':
|
519 |
+
column_names = dk_nba_columns
|
520 |
+
elif slate_type_var1 == 'Showdown':
|
521 |
+
column_names = dk_nba_sd_columns
|
522 |
+
elif league_var == 'WNBA':
|
523 |
+
if slate_type_var1 == 'Regular':
|
524 |
+
column_names = dk_wnba_columns
|
525 |
+
elif slate_type_var1 == 'Showdown':
|
526 |
+
column_names = dk_wnba_sd_columns
|
527 |
|
528 |
player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
|
529 |
if player_var1 == 'Specific Players':
|
|
|
532 |
player_var2 = dk_raw.Player.values.tolist()
|
533 |
|
534 |
elif site_var1 == 'Fanduel':
|
535 |
+
if league_var == 'NBA':
|
536 |
+
if slate_type_var1 == 'Regular':
|
537 |
+
column_names = fd_nba_columns
|
538 |
+
elif slate_type_var1 == 'Showdown':
|
539 |
+
column_names = fd_nba_sd_columns
|
540 |
+
elif league_var == 'WNBA':
|
541 |
+
if slate_type_var1 == 'Regular':
|
542 |
+
column_names = fd_wnba_columns
|
543 |
+
elif slate_type_var1 == 'Showdown':
|
544 |
+
column_names = fd_wnba_sd_columns
|
545 |
|
546 |
player_var1 = st.radio("Do you want a frame with specific Players?", ('Full Slate', 'Specific Players'), key='player_var1')
|
547 |
if player_var1 == 'Specific Players':
|
|
|
552 |
|
553 |
if site_var1 == 'Draftkings':
|
554 |
if slate_type_var1 == 'Regular':
|
555 |
+
data_export = init_DK_lineups(slate_var1, league_var)
|
556 |
data_export_names = data_export.copy()
|
557 |
for col_idx in range(8):
|
558 |
data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
|
559 |
elif slate_type_var1 == 'Showdown':
|
560 |
+
data_export = init_DK_SD_lineups(slate_var1, league_var)
|
561 |
data_export_names = data_export.copy()
|
562 |
for col_idx in range(6):
|
563 |
data_export[:, col_idx] = np.array([dk_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
|
564 |
|
565 |
elif site_var1 == 'Fanduel':
|
566 |
if slate_type_var1 == 'Regular':
|
567 |
+
data_export = init_FD_lineups(slate_var1, league_var)
|
568 |
data_export_names = data_export.copy()
|
569 |
for col_idx in range(9):
|
570 |
data_export[:, col_idx] = np.array([id_dict.get(player, player) for player in data_export[:, col_idx]])
|
571 |
elif slate_type_var1 == 'Showdown':
|
572 |
+
data_export = init_FD_SD_lineups(slate_var1, league_var)
|
573 |
data_export_names = data_export.copy()
|
574 |
for col_idx in range(6):
|
575 |
data_export[:, col_idx] = np.array([fd_id_dict_sd.get(player, player) for player in data_export[:, col_idx]])
|
|
|
598 |
|
599 |
elif 'working_seed' not in st.session_state:
|
600 |
if slate_type_var1 == 'Regular':
|
601 |
+
st.session_state.working_seed = init_DK_lineups(slate_var1, league_var)
|
602 |
elif slate_type_var1 == 'Showdown':
|
603 |
+
st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var)
|
604 |
st.session_state.working_seed = st.session_state.working_seed
|
605 |
if player_var1 == 'Specific Players':
|
606 |
st.session_state.working_seed = st.session_state.working_seed[np.equal.outer(st.session_state.working_seed, player_var2).any(axis=1).all(axis=1)]
|
607 |
elif player_var1 == 'Full Slate':
|
608 |
if slate_type_var1 == 'Regular':
|
609 |
+
st.session_state.working_seed = init_DK_lineups(slate_var1, league_var)
|
610 |
elif slate_type_var1 == 'Showdown':
|
611 |
+
st.session_state.working_seed = init_DK_SD_lineups(slate_var1, league_var)
|
612 |
st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
|
613 |
|
614 |
elif site_var1 == 'Fanduel':
|
|
|
622 |
|
623 |
elif 'working_seed' not in st.session_state:
|
624 |
if slate_type_var1 == 'Regular':
|
625 |
+
st.session_state.working_seed = init_FD_lineups(slate_var1, league_var)
|
626 |
elif slate_type_var1 == 'Showdown':
|
627 |
+
st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var)
|
628 |
st.session_state.working_seed = st.session_state.working_seed
|
629 |
if player_var1 == 'Specific Players':
|
630 |
st.session_state.working_seed = st.session_state.working_seed[np.equal.outer(st.session_state.working_seed, player_var2).any(axis=1).all(axis=1)]
|
631 |
elif player_var1 == 'Full Slate':
|
632 |
if slate_type_var1 == 'Regular':
|
633 |
+
st.session_state.working_seed = init_FD_lineups(slate_var1, league_var)
|
634 |
elif slate_type_var1 == 'Showdown':
|
635 |
+
st.session_state.working_seed = init_FD_SD_lineups(slate_var1, league_var)
|
636 |
st.session_state.data_export_display = pd.DataFrame(st.session_state.working_seed[0:lineup_num_var], columns=column_names)
|
637 |
|
638 |
export_file = st.session_state.data_export_display.copy()
|
|
|
656 |
for key in st.session_state.keys():
|
657 |
del st.session_state[key]
|
658 |
if site_var1 == 'Draftkings':
|
659 |
+
if league_var == 'NBA':
|
660 |
+
if slate_type_var1 == 'Regular':
|
661 |
+
st.session_state.working_seed = dk_nba_lineups.copy()
|
662 |
+
elif slate_type_var1 == 'Showdown':
|
663 |
+
st.session_state.working_seed = dk_nba_sd_lineups.copy()
|
664 |
+
elif league_var == 'WNBA':
|
665 |
+
if slate_type_var1 == 'Regular':
|
666 |
+
st.session_state.working_seed = dk_wnba_lineups.copy()
|
667 |
+
elif slate_type_var1 == 'Showdown':
|
668 |
+
st.session_state.working_seed = dk_wnba_sd_lineups.copy()
|
669 |
elif site_var1 == 'Fanduel':
|
670 |
+
if league_var == 'NBA':
|
671 |
+
if slate_type_var1 == 'Regular':
|
672 |
+
st.session_state.working_seed = fd_nba_lineups.copy()
|
673 |
+
elif slate_type_var1 == 'Showdown':
|
674 |
+
st.session_state.working_seed = fd_nba_sd_lineups.copy()
|
675 |
+
elif league_var == 'WNBA':
|
676 |
+
if slate_type_var1 == 'Regular':
|
677 |
+
st.session_state.working_seed = fd_wnba_lineups.copy()
|
678 |
+
elif slate_type_var1 == 'Showdown':
|
679 |
+
st.session_state.working_seed = fd_wnba_sd_lineups.copy()
|
680 |
if 'data_export_display' in st.session_state:
|
681 |
st.dataframe(st.session_state.data_export_display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=500, use_container_width = True)
|
682 |
st.download_button(
|
|
|
690 |
if 'working_seed' in st.session_state:
|
691 |
# Create a new dataframe with summary statistics
|
692 |
if site_var1 == 'Draftkings':
|
693 |
+
if league_var == 'NBA':
|
694 |
+
if slate_type_var1 == 'Regular':
|
695 |
+
summary_df = pd.DataFrame({
|
696 |
+
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
697 |
+
'Salary': [
|
698 |
+
np.min(st.session_state.working_seed[:,8]),
|
699 |
+
np.mean(st.session_state.working_seed[:,8]),
|
700 |
+
np.max(st.session_state.working_seed[:,8]),
|
701 |
+
np.std(st.session_state.working_seed[:,8])
|
702 |
+
],
|
703 |
+
'Proj': [
|
704 |
+
np.min(st.session_state.working_seed[:,9]),
|
705 |
+
np.mean(st.session_state.working_seed[:,9]),
|
706 |
+
np.max(st.session_state.working_seed[:,9]),
|
707 |
+
np.std(st.session_state.working_seed[:,9])
|
708 |
+
],
|
709 |
+
'Own': [
|
710 |
+
np.min(st.session_state.working_seed[:,14]),
|
711 |
+
np.mean(st.session_state.working_seed[:,14]),
|
712 |
+
np.max(st.session_state.working_seed[:,14]),
|
713 |
+
np.std(st.session_state.working_seed[:,14])
|
714 |
+
]
|
715 |
+
})
|
716 |
+
elif slate_type_var1 == 'Showdown':
|
717 |
+
summary_df = pd.DataFrame({
|
718 |
+
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
719 |
+
'Salary': [
|
720 |
+
np.min(st.session_state.working_seed[:,6]),
|
721 |
+
np.mean(st.session_state.working_seed[:,6]),
|
722 |
+
np.max(st.session_state.working_seed[:,6]),
|
723 |
+
np.std(st.session_state.working_seed[:,6])
|
724 |
+
],
|
725 |
+
'Proj': [
|
726 |
+
np.min(st.session_state.working_seed[:,7]),
|
727 |
+
np.mean(st.session_state.working_seed[:,7]),
|
728 |
+
np.max(st.session_state.working_seed[:,7]),
|
729 |
+
np.std(st.session_state.working_seed[:,7])
|
730 |
+
],
|
731 |
+
'Own': [
|
732 |
+
np.min(st.session_state.working_seed[:,12]),
|
733 |
+
np.mean(st.session_state.working_seed[:,12]),
|
734 |
+
np.max(st.session_state.working_seed[:,12]),
|
735 |
+
np.std(st.session_state.working_seed[:,12])
|
736 |
+
]
|
737 |
+
})
|
738 |
+
elif league_var == 'WNBA':
|
739 |
+
if slate_type_var1 == 'Regular':
|
740 |
+
summary_df = pd.DataFrame({
|
741 |
+
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
742 |
+
'Salary': [
|
743 |
+
np.min(st.session_state.working_seed[:,7]),
|
744 |
+
np.mean(st.session_state.working_seed[:,7]),
|
745 |
+
np.max(st.session_state.working_seed[:,7]),
|
746 |
+
np.std(st.session_state.working_seed[:,7])
|
747 |
+
],
|
748 |
+
'Proj': [
|
749 |
+
np.min(st.session_state.working_seed[:,8]),
|
750 |
+
np.mean(st.session_state.working_seed[:,8]),
|
751 |
+
np.max(st.session_state.working_seed[:,8]),
|
752 |
+
np.std(st.session_state.working_seed[:,8])
|
753 |
+
],
|
754 |
+
'Own': [
|
755 |
+
np.min(st.session_state.working_seed[:,13]),
|
756 |
+
np.mean(st.session_state.working_seed[:,13]),
|
757 |
+
np.max(st.session_state.working_seed[:,13]),
|
758 |
+
np.std(st.session_state.working_seed[:,13])
|
759 |
+
]
|
760 |
+
})
|
761 |
+
elif slate_type_var1 == 'Showdown':
|
762 |
+
summary_df = pd.DataFrame({
|
763 |
+
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
764 |
+
'Salary': [
|
765 |
+
np.min(st.session_state.working_seed[:,6]),
|
766 |
+
np.mean(st.session_state.working_seed[:,6]),
|
767 |
+
np.max(st.session_state.working_seed[:,6]),
|
768 |
+
np.std(st.session_state.working_seed[:,6])
|
769 |
+
],
|
770 |
+
'Proj': [
|
771 |
+
np.min(st.session_state.working_seed[:,7]),
|
772 |
+
np.mean(st.session_state.working_seed[:,7]),
|
773 |
+
np.max(st.session_state.working_seed[:,7]),
|
774 |
+
np.std(st.session_state.working_seed[:,7])
|
775 |
+
],
|
776 |
+
'Own': [
|
777 |
+
np.min(st.session_state.working_seed[:,12]),
|
778 |
+
np.mean(st.session_state.working_seed[:,12]),
|
779 |
+
np.max(st.session_state.working_seed[:,12]),
|
780 |
+
np.std(st.session_state.working_seed[:,12])
|
781 |
+
]
|
782 |
+
})
|
783 |
|
784 |
elif site_var1 == 'Fanduel':
|
785 |
+
if league_var == 'NBA':
|
786 |
+
if slate_type_var1 == 'Regular':
|
787 |
+
summary_df = pd.DataFrame({
|
788 |
+
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
789 |
+
'Salary': [
|
790 |
+
np.min(st.session_state.working_seed[:,9]),
|
791 |
+
np.mean(st.session_state.working_seed[:,9]),
|
792 |
+
np.max(st.session_state.working_seed[:,9]),
|
793 |
+
np.std(st.session_state.working_seed[:,9])
|
794 |
+
],
|
795 |
+
'Proj': [
|
796 |
+
np.min(st.session_state.working_seed[:,10]),
|
797 |
+
np.mean(st.session_state.working_seed[:,10]),
|
798 |
+
np.max(st.session_state.working_seed[:,10]),
|
799 |
+
np.std(st.session_state.working_seed[:,10])
|
800 |
+
],
|
801 |
+
'Own': [
|
802 |
+
np.min(st.session_state.working_seed[:,15]),
|
803 |
+
np.mean(st.session_state.working_seed[:,15]),
|
804 |
+
np.max(st.session_state.working_seed[:,15]),
|
805 |
+
np.std(st.session_state.working_seed[:,15])
|
806 |
+
]
|
807 |
+
})
|
808 |
+
elif slate_type_var1 == 'Showdown':
|
809 |
+
summary_df = pd.DataFrame({
|
810 |
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
811 |
+
'Salary': [
|
812 |
+
np.min(st.session_state.working_seed[:,6]),
|
813 |
+
np.mean(st.session_state.working_seed[:,6]),
|
814 |
+
np.max(st.session_state.working_seed[:,6]),
|
815 |
+
np.std(st.session_state.working_seed[:,6])
|
816 |
+
],
|
817 |
+
'Proj': [
|
818 |
+
np.min(st.session_state.working_seed[:,7]),
|
819 |
+
np.mean(st.session_state.working_seed[:,7]),
|
820 |
+
np.max(st.session_state.working_seed[:,7]),
|
821 |
+
np.std(st.session_state.working_seed[:,7])
|
822 |
+
],
|
823 |
+
'Own': [
|
824 |
+
np.min(st.session_state.working_seed[:,12]),
|
825 |
+
np.mean(st.session_state.working_seed[:,12]),
|
826 |
+
np.max(st.session_state.working_seed[:,12]),
|
827 |
+
np.std(st.session_state.working_seed[:,12])
|
828 |
+
]
|
829 |
+
})
|
830 |
+
elif league_var == 'WNBA':
|
831 |
+
if slate_type_var1 == 'Regular':
|
832 |
+
summary_df = pd.DataFrame({
|
833 |
+
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
834 |
+
'Salary': [
|
835 |
+
np.min(st.session_state.working_seed[:,8]),
|
836 |
+
np.mean(st.session_state.working_seed[:,8]),
|
837 |
+
np.max(st.session_state.working_seed[:,8]),
|
838 |
+
np.std(st.session_state.working_seed[:,8])
|
839 |
+
],
|
840 |
+
'Proj': [
|
841 |
+
np.min(st.session_state.working_seed[:,9]),
|
842 |
+
np.mean(st.session_state.working_seed[:,9]),
|
843 |
+
np.max(st.session_state.working_seed[:,9]),
|
844 |
+
np.std(st.session_state.working_seed[:,9])
|
845 |
+
],
|
846 |
+
'Own': [
|
847 |
+
np.min(st.session_state.working_seed[:,14]),
|
848 |
+
np.mean(st.session_state.working_seed[:,14]),
|
849 |
+
np.max(st.session_state.working_seed[:,14]),
|
850 |
+
np.std(st.session_state.working_seed[:,14])
|
851 |
+
]
|
852 |
+
})
|
853 |
+
elif slate_type_var1 == 'Showdown':
|
854 |
+
summary_df = pd.DataFrame({
|
855 |
+
'Metric': ['Min', 'Average', 'Max', 'STDdev'],
|
856 |
+
'Salary': [
|
857 |
+
np.min(st.session_state.working_seed[:,6]),
|
858 |
+
np.mean(st.session_state.working_seed[:,6]),
|
859 |
+
np.max(st.session_state.working_seed[:,6]),
|
860 |
+
np.std(st.session_state.working_seed[:,6])
|
861 |
+
],
|
862 |
+
'Proj': [
|
863 |
+
np.min(st.session_state.working_seed[:,7]),
|
864 |
+
np.mean(st.session_state.working_seed[:,7]),
|
865 |
+
np.max(st.session_state.working_seed[:,7]),
|
866 |
+
np.std(st.session_state.working_seed[:,7])
|
867 |
+
],
|
868 |
+
'Own': [
|
869 |
+
np.min(st.session_state.working_seed[:,12]),
|
870 |
+
np.mean(st.session_state.working_seed[:,12]),
|
871 |
+
np.max(st.session_state.working_seed[:,12]),
|
872 |
+
np.std(st.session_state.working_seed[:,12])
|
873 |
+
]
|
874 |
+
})
|
875 |
|
876 |
# Set the index of the summary dataframe as the "Metric" column
|
877 |
summary_df = summary_df.set_index('Metric')
|
|
|
888 |
tab1, tab2 = st.tabs(["Display Frequency", "Seed Frame Frequency"])
|
889 |
with tab1:
|
890 |
if 'data_export_display' in st.session_state:
|
891 |
+
if league_var == 'NBA':
|
892 |
+
if slate_type_var1 == 'Regular':
|
893 |
+
if site_var1 == 'Draftkings':
|
894 |
+
player_columns = st.session_state.data_export_display.iloc[:, :8]
|
895 |
+
elif site_var1 == 'Fanduel':
|
896 |
+
player_columns = st.session_state.data_export_display.iloc[:, :9]
|
897 |
+
elif slate_type_var1 == 'Showdown':
|
898 |
+
if site_var1 == 'Draftkings':
|
899 |
+
player_columns = st.session_state.data_export_display.iloc[:, :5]
|
900 |
+
elif site_var1 == 'Fanduel':
|
901 |
+
player_columns = st.session_state.data_export_display.iloc[:, :5]
|
902 |
+
elif league_var == 'WNBA':
|
903 |
+
if slate_type_var1 == 'Regular':
|
904 |
+
if site_var1 == 'Draftkings':
|
905 |
+
player_columns = st.session_state.data_export_display.iloc[:, :7]
|
906 |
+
elif site_var1 == 'Fanduel':
|
907 |
+
player_columns = st.session_state.data_export_display.iloc[:, :8]
|
908 |
+
elif slate_type_var1 == 'Showdown':
|
909 |
+
if site_var1 == 'Draftkings':
|
910 |
+
player_columns = st.session_state.data_export_display.iloc[:, :5]
|
911 |
+
elif site_var1 == 'Fanduel':
|
912 |
+
player_columns = st.session_state.data_export_display.iloc[:, :5]
|
913 |
+
|
914 |
|
915 |
# Flatten the DataFrame and count unique values
|
916 |
value_counts = player_columns.values.flatten().tolist()
|
|
|
941 |
)
|
942 |
with tab2:
|
943 |
if 'working_seed' in st.session_state:
|
944 |
+
if league_var == 'NBA':
|
945 |
+
if slate_type_var1 == 'Regular':
|
946 |
+
if site_var1 == 'Draftkings':
|
947 |
+
player_columns = st.session_state.working_seed[:, :8]
|
948 |
+
elif site_var1 == 'Fanduel':
|
949 |
+
player_columns = st.session_state.working_seed[:, :9]
|
950 |
+
elif slate_type_var1 == 'Showdown':
|
951 |
+
if site_var1 == 'Draftkings':
|
952 |
+
player_columns = st.session_state.working_seed[:, :5]
|
953 |
+
elif site_var1 == 'Fanduel':
|
954 |
+
player_columns = st.session_state.working_seed[:, :5]
|
955 |
+
elif league_var == 'WNBA':
|
956 |
+
if slate_type_var1 == 'Regular':
|
957 |
+
if site_var1 == 'Draftkings':
|
958 |
+
player_columns = st.session_state.working_seed[:, :7]
|
959 |
+
elif site_var1 == 'Fanduel':
|
960 |
+
player_columns = st.session_state.working_seed[:, :8]
|
961 |
+
elif slate_type_var1 == 'Showdown':
|
962 |
+
if site_var1 == 'Draftkings':
|
963 |
+
player_columns = st.session_state.working_seed[:, :5]
|
964 |
+
elif site_var1 == 'Fanduel':
|
965 |
+
player_columns = st.session_state.working_seed[:, :5]
|
966 |
|
967 |
# Flatten the DataFrame and count unique values
|
968 |
value_counts = player_columns.flatten().tolist()
|