Spaces:
Sleeping
Sleeping
James McCool
commited on
Commit
·
d829d73
1
Parent(s):
b1f6d22
Add showdown slate handling and dynamic database integration
Browse files- Introduced new showdown selections for DraftKings and FanDuel.
- Implemented dynamic database collection retrieval for showdown seed frames.
- Updated functions to utilize translation dictionaries for slate names.
- Enhanced data loading and state management for showdown contest simulations.
- src/sim_func_hold/showdown_functions.py +6 -18
- src/streamlit_app.py +74 -14
src/sim_func_hold/showdown_functions.py
CHANGED
|
@@ -5,14 +5,9 @@ from pymongo import MongoClient
|
|
| 5 |
from database import db
|
| 6 |
|
| 7 |
@st.cache_data(ttl = 599)
|
| 8 |
-
def init_DK_SD_seed_frames(slate, split):
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
elif slate == 'Showdown #2':
|
| 12 |
-
collection = db["DK_NFL_Secondary_SD_seed_frame"]
|
| 13 |
-
elif slate == 'Showdown #3':
|
| 14 |
-
collection = db["DK_NFL_Auxiliary_SD_seed_frame"]
|
| 15 |
-
|
| 16 |
cursor = collection.find().limit(split)
|
| 17 |
|
| 18 |
raw_display = pd.DataFrame(list(cursor))
|
|
@@ -22,14 +17,9 @@ def init_DK_SD_seed_frames(slate, split):
|
|
| 22 |
return DK_seed
|
| 23 |
|
| 24 |
@st.cache_data(ttl = 599)
|
| 25 |
-
def init_FD_SD_seed_frames(slate, split):
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
elif slate == 'Showdown #2':
|
| 29 |
-
collection = db[f"FD_NFL_Secondary_SD_seed_frame"]
|
| 30 |
-
elif slate == 'Showdown #3':
|
| 31 |
-
collection = db[f"FD_NFL_Auxiliary_SD_seed_frame"]
|
| 32 |
-
|
| 33 |
cursor = collection.find().limit(split)
|
| 34 |
|
| 35 |
raw_display = pd.DataFrame(list(cursor))
|
|
@@ -44,7 +34,6 @@ def init_SD_baselines(slate_var):
|
|
| 44 |
cursor = collection.find()
|
| 45 |
|
| 46 |
raw_display = pd.DataFrame(list(cursor))
|
| 47 |
-
raw_display = raw_display[raw_display['slate'] == slate_var]
|
| 48 |
raw_display = raw_display[raw_display['version'] == 'overall']
|
| 49 |
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 50 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
|
@@ -63,7 +52,6 @@ def init_SD_baselines(slate_var):
|
|
| 63 |
cursor = collection.find()
|
| 64 |
|
| 65 |
raw_display = pd.DataFrame(list(cursor))
|
| 66 |
-
raw_display = raw_display[raw_display['slate'] == slate_var]
|
| 67 |
raw_display = raw_display[raw_display['version'] == 'overall']
|
| 68 |
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 69 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
|
|
|
| 5 |
from database import db
|
| 6 |
|
| 7 |
@st.cache_data(ttl = 599)
|
| 8 |
+
def init_DK_SD_seed_frames(slate, split, translation_dict):
|
| 9 |
+
# Now dynamic
|
| 10 |
+
collection = db[translation_dict[slate]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
cursor = collection.find().limit(split)
|
| 12 |
|
| 13 |
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
| 17 |
return DK_seed
|
| 18 |
|
| 19 |
@st.cache_data(ttl = 599)
|
| 20 |
+
def init_FD_SD_seed_frames(slate, split, translation_dict):
|
| 21 |
+
# Now dynamic
|
| 22 |
+
collection = db[translation_dict[slate]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
cursor = collection.find().limit(split)
|
| 24 |
|
| 25 |
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
| 34 |
cursor = collection.find()
|
| 35 |
|
| 36 |
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
| 37 |
raw_display = raw_display[raw_display['version'] == 'overall']
|
| 38 |
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 39 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
|
|
|
| 52 |
cursor = collection.find()
|
| 53 |
|
| 54 |
raw_display = pd.DataFrame(list(cursor))
|
|
|
|
| 55 |
raw_display = raw_display[raw_display['version'] == 'overall']
|
| 56 |
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 57 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
src/streamlit_app.py
CHANGED
|
@@ -20,6 +20,27 @@ fd_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST', 'sal
|
|
| 20 |
dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
| 21 |
fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
| 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
st.markdown("""
|
| 24 |
<style>
|
| 25 |
/* Tab styling */
|
|
@@ -57,16 +78,55 @@ st.markdown("""
|
|
| 57 |
|
| 58 |
</style>""", unsafe_allow_html=True)
|
| 59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
if st.button("Load/Reset Data", key='reset2'):
|
| 61 |
st.cache_data.clear()
|
| 62 |
for key in st.session_state.keys():
|
| 63 |
del st.session_state[key]
|
|
|
|
|
|
|
| 64 |
DK_seed = init_DK_seed_frames('Main Slate', 10000)
|
| 65 |
-
DK_sd_seed = init_DK_SD_seed_frames(
|
| 66 |
FD_seed = init_FD_seed_frames('Main Slate', 10000)
|
| 67 |
-
FD_sd_seed = init_FD_SD_seed_frames(
|
| 68 |
dk_raw, fd_raw = init_baselines('Main Slate')
|
| 69 |
-
dk_sd_raw, fd_sd_raw = init_SD_baselines('
|
| 70 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_ID))
|
| 71 |
dk_sd_id_dict = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
| 72 |
fd_id_dict = dict(zip(fd_raw.Player, fd_raw.player_ID))
|
|
@@ -548,8 +608,8 @@ if selected_tab == "Regular Slate Contest Sims":
|
|
| 548 |
)
|
| 549 |
|
| 550 |
if selected_tab == "Showdown Contest Sims":
|
| 551 |
-
|
| 552 |
-
raw_baselines =
|
| 553 |
column_names = dk_sd_columns
|
| 554 |
with st.expander("Info and Filters"):
|
| 555 |
site_data_col, slate_data_col, contest_size_col, contest_sharpness_col = st.columns([1, 1, 1, 1])
|
|
@@ -557,7 +617,7 @@ if selected_tab == "Showdown Contest Sims":
|
|
| 557 |
sim_site_var2 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='sim_site_var2')
|
| 558 |
|
| 559 |
with slate_data_col:
|
| 560 |
-
sim_slate_var2 = st.radio("Which data are you loading?",
|
| 561 |
|
| 562 |
with contest_size_col:
|
| 563 |
contest_var2 = st.selectbox("What contest size are you simulating?", ('Small', 'Medium', 'Large'), key='contest_var2')
|
|
@@ -586,14 +646,14 @@ if selected_tab == "Showdown Contest Sims":
|
|
| 586 |
|
| 587 |
if 'sd_working_seed' not in st.session_state:
|
| 588 |
if sim_site_var2 == 'Draftkings':
|
| 589 |
-
st.session_state.sd_working_seed = init_DK_SD_seed_frames(sim_slate_var2, sharp_split)
|
| 590 |
-
export_id_dict = dict(zip(
|
| 591 |
-
raw_baselines =
|
| 592 |
column_names = dk_sd_columns
|
| 593 |
elif sim_site_var2 == 'Fanduel':
|
| 594 |
-
st.session_state.sd_working_seed = init_FD_SD_seed_frames(sim_slate_var2, sharp_split)
|
| 595 |
-
export_id_dict = dict(zip(
|
| 596 |
-
raw_baselines =
|
| 597 |
column_names = fd_sd_columns
|
| 598 |
maps_dict = {
|
| 599 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
|
@@ -646,7 +706,7 @@ if selected_tab == "Showdown Contest Sims":
|
|
| 646 |
'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev)),
|
| 647 |
'cpt_STDev_map':dict(zip(raw_baselines.Player,raw_baselines['CPT_STDev']))
|
| 648 |
}
|
| 649 |
-
Sim_Winners = sim_SD_contest(1000, st.session_state.
|
| 650 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
|
| 651 |
|
| 652 |
#st.table(Sim_Winner_Frame)
|
|
@@ -677,7 +737,7 @@ if selected_tab == "Showdown Contest Sims":
|
|
| 677 |
freq_working = pd.DataFrame(np.column_stack(np.unique(freq_copy.iloc[:,0:6].values, return_counts=True)),
|
| 678 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 679 |
elif sim_site_var2 == 'Fanduel':
|
| 680 |
-
freq_working = pd.DataFrame(np.column_stack(np.unique(freq_copy.iloc[:,0:
|
| 681 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 682 |
freq_working['Freq'] = freq_working['Freq'].astype(int)
|
| 683 |
freq_working['Position'] = freq_working['Player'].map(maps_dict['Pos_map'])
|
|
|
|
| 20 |
dk_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
| 21 |
fd_sd_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'salary', 'proj', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'Own']
|
| 22 |
|
| 23 |
+
showdown_selections = ['Showdown #1', 'Showdown #2', 'Showdown #3', 'Showdown #4', 'Showdown #5', 'Showdown #6', 'Showdown #7', 'Showdown #8', 'Showdown #9', 'Showdown #10', 'Showdown #11', 'Showdown #12', 'Showdown #13', 'Showdown #14', 'Showdown #15']
|
| 24 |
+
dk_db_showdown_selections = ['DK_NFL_SD_seed_frame_Showdown #1', 'DK_NFL_SD_seed_frame_Showdown #2', 'DK_NFL_SD_seed_frame_Showdown #3', 'DK_NFL_SD_seed_frame_Showdown #4', 'DK_NFL_SD_seed_frame_Showdown #5', 'DK_NFL_SD_seed_frame_Showdown #6',
|
| 25 |
+
'DK_NFL_SD_seed_frame_Showdown #7', 'DK_NFL_SD_seed_frame_Showdown #8', 'DK_NFL_SD_seed_frame_Showdown #9', 'DK_NFL_SD_seed_frame_Showdown #10', 'DK_NFL_SD_seed_frame_Showdown #11', 'DK_NFL_SD_seed_frame_Showdown #12', 'DK_NFL_SD_seed_frame_Showdown #13',
|
| 26 |
+
'DK_NFL_SD_seed_frame_Showdown #14', 'DK_NFL_SD_seed_frame_Showdown #15']
|
| 27 |
+
fd_db_showdown_selections = ['FD_NFL_SD_seed_frame_Showdown #1', 'FD_NFL_SD_seed_frame_Showdown #2', 'FD_NFL_SD_seed_frame_Showdown #3', 'FD_NFL_SD_seed_frame_Showdown #4', 'FD_NFL_SD_seed_frame_Showdown #5', 'FD_NFL_SD_seed_frame_Showdown #6',
|
| 28 |
+
'FD_NFL_SD_seed_frame_Showdown #7', 'FD_NFL_SD_seed_frame_Showdown #8', 'FD_NFL_SD_seed_frame_Showdown #9', 'FD_NFL_SD_seed_frame_Showdown #10', 'FD_NFL_SD_seed_frame_Showdown #11', 'FD_NFL_SD_seed_frame_Showdown #12', 'FD_NFL_SD_seed_frame_Showdown #13',
|
| 29 |
+
'FD_NFL_SD_seed_frame_Showdown #14', 'FD_NFL_SD_seed_frame_Showdown #15']
|
| 30 |
+
|
| 31 |
+
dk_showdown_db_translation = dict(zip(showdown_selections, dk_db_showdown_selections))
|
| 32 |
+
fd_showdown_db_translation = dict(zip(showdown_selections, fd_db_showdown_selections))
|
| 33 |
+
|
| 34 |
+
# Probably should have done this in a dictionary to start with
|
| 35 |
+
wrong_team_names = ['Denver Broncos', 'Washington Commanders', 'Cincinnati Bengals', 'Arizona Cardinals', 'Los Angeles Rams', 'Pittsburgh Steelers',
|
| 36 |
+
'Jacksonville Jaguars', 'New England Patriots', 'Tampa Bay Buccaneers', 'San Francisco 49ers', 'Green Bay Packers', 'New York Jets',
|
| 37 |
+
'Indianapolis Colts', 'Miami Dolphins', 'Detroit Lions', 'Las Vegas Raiders', 'Atlanta Falcons', 'Seattle Seahawks', 'Houston Texans',
|
| 38 |
+
'New Orleans Saints', 'Carolina Panthers', 'New York Giants', 'Cleveland Browns', 'Tennessee Titans', 'Philadelphia Eagles', 'Dallas Cowboys',
|
| 39 |
+
'Kansas City Chiefs', 'Los Angeles Chargers', 'Baltimore Ravens', 'Buffalo Bills', 'Minnesota Vikings', 'Chicago Bears']
|
| 40 |
+
right_name_teams = ['Broncos', 'Commanders', 'Bengals', 'Cardinals', 'Rams', 'Steelers', 'Jaguars', 'Patriots', 'Buccaneers', '49ers', 'Packers',
|
| 41 |
+
'Jets', 'Colts', 'Dolphins', 'Lions', 'Raiders', 'Falcons', 'Seahawks', 'Texans', 'Saints', 'Panthers', 'Giants', 'Browns', 'Titans', 'Eagles', 'Cowboys',
|
| 42 |
+
'Chiefs', 'Chargers', 'Ravens', 'Bills', 'Vikings', 'Bears']
|
| 43 |
+
|
| 44 |
st.markdown("""
|
| 45 |
<style>
|
| 46 |
/* Tab styling */
|
|
|
|
| 78 |
|
| 79 |
</style>""", unsafe_allow_html=True)
|
| 80 |
|
| 81 |
+
@st.cache_resource(ttl=60)
|
| 82 |
+
def define_dk_showdown_slates():
|
| 83 |
+
collection = db["DK_SD_NFL_ROO"]
|
| 84 |
+
cursor = collection.find()
|
| 85 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 86 |
+
unique_slates = raw_display['slate'].unique()
|
| 87 |
+
|
| 88 |
+
slate_names = []
|
| 89 |
+
|
| 90 |
+
for slate in unique_slates:
|
| 91 |
+
slate_data = raw_display[raw_display['slate'] == slate]
|
| 92 |
+
slate_name = slate_data.iloc[0]['Team'] + ' vs. ' + slate_data.iloc[0]['Opp']
|
| 93 |
+
slate_names.append(slate_name)
|
| 94 |
+
|
| 95 |
+
slate_name_lookup = dict(zip(slate_names, unique_slates))
|
| 96 |
+
return slate_names, slate_name_lookup
|
| 97 |
+
|
| 98 |
+
@st.cache_resource(ttl=60)
|
| 99 |
+
def define_fd_showdown_slates():
|
| 100 |
+
collection = db["FD_SD_NFL_ROO"]
|
| 101 |
+
cursor = collection.find()
|
| 102 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 103 |
+
unique_slates = raw_display['slate'].unique()
|
| 104 |
+
|
| 105 |
+
slate_names = []
|
| 106 |
+
|
| 107 |
+
for slate in unique_slates:
|
| 108 |
+
slate_data = raw_display[raw_display['slate'] == slate]
|
| 109 |
+
slate_name = slate_data.iloc[0]['Team'] + ' vs. ' + slate_data.iloc[0]['Opp']
|
| 110 |
+
slate_names.append(slate_name)
|
| 111 |
+
|
| 112 |
+
slate_name_lookup = dict(zip(slate_names, unique_slates))
|
| 113 |
+
return slate_names, slate_name_lookup
|
| 114 |
+
|
| 115 |
+
slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
|
| 116 |
+
slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
|
| 117 |
+
|
| 118 |
if st.button("Load/Reset Data", key='reset2'):
|
| 119 |
st.cache_data.clear()
|
| 120 |
for key in st.session_state.keys():
|
| 121 |
del st.session_state[key]
|
| 122 |
+
slate_names_dk, slate_name_lookup_dk = define_dk_showdown_slates()
|
| 123 |
+
slate_names_fd, slate_name_lookup_fd = define_fd_showdown_slates()
|
| 124 |
DK_seed = init_DK_seed_frames('Main Slate', 10000)
|
| 125 |
+
DK_sd_seed = init_DK_SD_seed_frames("Showdown #1", 10000, dk_showdown_db_translation)
|
| 126 |
FD_seed = init_FD_seed_frames('Main Slate', 10000)
|
| 127 |
+
FD_sd_seed = init_FD_SD_seed_frames("Showdown #1", 10000, fd_showdown_db_translation)
|
| 128 |
dk_raw, fd_raw = init_baselines('Main Slate')
|
| 129 |
+
dk_sd_raw, fd_sd_raw = init_SD_baselines('Showdown #1')
|
| 130 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_ID))
|
| 131 |
dk_sd_id_dict = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
| 132 |
fd_id_dict = dict(zip(fd_raw.Player, fd_raw.player_ID))
|
|
|
|
| 608 |
)
|
| 609 |
|
| 610 |
if selected_tab == "Showdown Contest Sims":
|
| 611 |
+
dk_sd_raw, fd_sd_raw = init_SD_baselines('Showdown #1')
|
| 612 |
+
raw_baselines = dk_sd_raw
|
| 613 |
column_names = dk_sd_columns
|
| 614 |
with st.expander("Info and Filters"):
|
| 615 |
site_data_col, slate_data_col, contest_size_col, contest_sharpness_col = st.columns([1, 1, 1, 1])
|
|
|
|
| 617 |
sim_site_var2 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='sim_site_var2')
|
| 618 |
|
| 619 |
with slate_data_col:
|
| 620 |
+
sim_slate_var2 = st.radio("Which data are you loading?", slate_names_dk if sim_site_var2 == 'Draftkings' else slate_names_fd, key='sim_slate_var2')
|
| 621 |
|
| 622 |
with contest_size_col:
|
| 623 |
contest_var2 = st.selectbox("What contest size are you simulating?", ('Small', 'Medium', 'Large'), key='contest_var2')
|
|
|
|
| 646 |
|
| 647 |
if 'sd_working_seed' not in st.session_state:
|
| 648 |
if sim_site_var2 == 'Draftkings':
|
| 649 |
+
st.session_state.sd_working_seed = init_DK_SD_seed_frames(slate_name_lookup_dk[sim_slate_var2], sharp_split, dk_showdown_db_translation)
|
| 650 |
+
export_id_dict = dict(zip(dk_sd_raw.Player, dk_sd_raw.player_ID))
|
| 651 |
+
raw_baselines = dk_sd_raw
|
| 652 |
column_names = dk_sd_columns
|
| 653 |
elif sim_site_var2 == 'Fanduel':
|
| 654 |
+
st.session_state.sd_working_seed = init_FD_SD_seed_frames(slate_name_lookup_fd[sim_slate_var2], sharp_split, fd_showdown_db_translation)
|
| 655 |
+
export_id_dict = dict(zip(fd_sd_raw.Player, fd_sd_raw.player_ID))
|
| 656 |
+
raw_baselines = fd_sd_raw
|
| 657 |
column_names = fd_sd_columns
|
| 658 |
maps_dict = {
|
| 659 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
|
|
|
| 706 |
'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev)),
|
| 707 |
'cpt_STDev_map':dict(zip(raw_baselines.Player,raw_baselines['CPT_STDev']))
|
| 708 |
}
|
| 709 |
+
Sim_Winners = sim_SD_contest(1000, st.session_state.sd_working_seed, maps_dict, Contest_Size)
|
| 710 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
|
| 711 |
|
| 712 |
#st.table(Sim_Winner_Frame)
|
|
|
|
| 737 |
freq_working = pd.DataFrame(np.column_stack(np.unique(freq_copy.iloc[:,0:6].values, return_counts=True)),
|
| 738 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 739 |
elif sim_site_var2 == 'Fanduel':
|
| 740 |
+
freq_working = pd.DataFrame(np.column_stack(np.unique(freq_copy.iloc[:,0:6].values, return_counts=True)),
|
| 741 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
| 742 |
freq_working['Freq'] = freq_working['Freq'].astype(int)
|
| 743 |
freq_working['Position'] = freq_working['Player'].map(maps_dict['Pos_map'])
|