Spaces:
Running
Running
James McCool
commited on
Commit
·
f1271aa
1
Parent(s):
92d6486
Refactor app.py to utilize session state for mapping player data. Updated frequency calculations to reference session state maps instead of local variables, enhancing data consistency and management across contest simulations.
Browse files
app.py
CHANGED
@@ -278,7 +278,7 @@ with tab1:
|
|
278 |
with col2:
|
279 |
if st.button("Run Contest Sim"):
|
280 |
if 'working_seed' in st.session_state:
|
281 |
-
maps_dict = {
|
282 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
283 |
'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
|
284 |
'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
|
@@ -367,12 +367,12 @@ with tab1:
|
|
367 |
freq_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,0:9].values, return_counts=True)),
|
368 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
369 |
freq_working['Freq'] = freq_working['Freq'].astype(int)
|
370 |
-
freq_working['Position'] = freq_working['Player'].map(maps_dict['Pos_map'])
|
371 |
-
freq_working['Salary'] = freq_working['Player'].map(maps_dict['Salary_map'])
|
372 |
-
freq_working['Proj Own'] = freq_working['Player'].map(maps_dict['Own_map']) / 100
|
373 |
freq_working['Exposure'] = freq_working['Freq']/(1000)
|
374 |
freq_working['Edge'] = freq_working['Exposure'] - freq_working['Proj Own']
|
375 |
-
freq_working['Team'] = freq_working['Player'].map(maps_dict['Team_map'])
|
376 |
st.session_state.player_freq = freq_working.copy()
|
377 |
|
378 |
if sim_site_var1 == 'Draftkings':
|
@@ -382,12 +382,12 @@ with tab1:
|
|
382 |
center_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,0:2].values, return_counts=True)),
|
383 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
384 |
center_working['Freq'] = center_working['Freq'].astype(int)
|
385 |
-
center_working['Position'] = center_working['Player'].map(maps_dict['Pos_map'])
|
386 |
-
center_working['Salary'] = center_working['Player'].map(maps_dict['Salary_map'])
|
387 |
-
center_working['Proj Own'] = center_working['Player'].map(maps_dict['Own_map']) / 100
|
388 |
center_working['Exposure'] = center_working['Freq']/(1000)
|
389 |
center_working['Edge'] = center_working['Exposure'] - center_working['Proj Own']
|
390 |
-
center_working['Team'] = center_working['Player'].map(maps_dict['Team_map'])
|
391 |
st.session_state.center_freq = center_working.copy()
|
392 |
|
393 |
if sim_site_var1 == 'Draftkings':
|
@@ -397,12 +397,12 @@ with tab1:
|
|
397 |
wing_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,2:4].values, return_counts=True)),
|
398 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
399 |
wing_working['Freq'] = wing_working['Freq'].astype(int)
|
400 |
-
wing_working['Position'] = wing_working['Player'].map(maps_dict['Pos_map'])
|
401 |
-
wing_working['Salary'] = wing_working['Player'].map(maps_dict['Salary_map'])
|
402 |
-
wing_working['Proj Own'] = wing_working['Player'].map(maps_dict['Own_map']) / 100
|
403 |
wing_working['Exposure'] = wing_working['Freq']/(1000)
|
404 |
wing_working['Edge'] = wing_working['Exposure'] - wing_working['Proj Own']
|
405 |
-
wing_working['Team'] = wing_working['Player'].map(maps_dict['Team_map'])
|
406 |
st.session_state.wing_freq = wing_working.copy()
|
407 |
|
408 |
if sim_site_var1 == 'Draftkings':
|
@@ -412,12 +412,12 @@ with tab1:
|
|
412 |
dmen_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,4:6].values, return_counts=True)),
|
413 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
414 |
dmen_working['Freq'] = dmen_working['Freq'].astype(int)
|
415 |
-
dmen_working['Position'] = dmen_working['Player'].map(maps_dict['Pos_map'])
|
416 |
-
dmen_working['Salary'] = dmen_working['Player'].map(maps_dict['Salary_map'])
|
417 |
-
dmen_working['Proj Own'] = dmen_working['Player'].map(maps_dict['Own_map']) / 100
|
418 |
dmen_working['Exposure'] = dmen_working['Freq']/(1000)
|
419 |
dmen_working['Edge'] = dmen_working['Exposure'] - dmen_working['Proj Own']
|
420 |
-
dmen_working['Team'] = dmen_working['Player'].map(maps_dict['Team_map'])
|
421 |
st.session_state.dmen_freq = dmen_working.copy()
|
422 |
|
423 |
if sim_site_var1 == 'Draftkings':
|
@@ -427,12 +427,12 @@ with tab1:
|
|
427 |
flex_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,6:8].values, return_counts=True)),
|
428 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
429 |
flex_working['Freq'] = flex_working['Freq'].astype(int)
|
430 |
-
flex_working['Position'] = flex_working['Player'].map(maps_dict['Pos_map'])
|
431 |
-
flex_working['Salary'] = flex_working['Player'].map(maps_dict['Salary_map'])
|
432 |
-
flex_working['Proj Own'] = flex_working['Player'].map(maps_dict['Own_map']) / 100
|
433 |
flex_working['Exposure'] = flex_working['Freq']/(1000)
|
434 |
flex_working['Edge'] = flex_working['Exposure'] - flex_working['Proj Own']
|
435 |
-
flex_working['Team'] = flex_working['Player'].map(maps_dict['Team_map'])
|
436 |
st.session_state.flex_freq = flex_working.copy()
|
437 |
|
438 |
if sim_site_var1 == 'Draftkings':
|
@@ -442,12 +442,12 @@ with tab1:
|
|
442 |
goalie_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,8:9].values, return_counts=True)),
|
443 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
444 |
goalie_working['Freq'] = goalie_working['Freq'].astype(int)
|
445 |
-
goalie_working['Position'] = goalie_working['Player'].map(maps_dict['Pos_map'])
|
446 |
-
goalie_working['Salary'] = goalie_working['Player'].map(maps_dict['Salary_map'])
|
447 |
-
goalie_working['Proj Own'] = goalie_working['Player'].map(maps_dict['Own_map']) / 100
|
448 |
goalie_working['Exposure'] = goalie_working['Freq']/(1000)
|
449 |
goalie_working['Edge'] = goalie_working['Exposure'] - goalie_working['Proj Own']
|
450 |
-
goalie_working['Team'] = goalie_working['Player'].map(maps_dict['Team_map'])
|
451 |
st.session_state.goalie_freq = goalie_working.copy()
|
452 |
|
453 |
if sim_site_var1 == 'Draftkings':
|
@@ -538,7 +538,7 @@ with tab1:
|
|
538 |
with tab2:
|
539 |
if 'Sim_Winner_Display' in st.session_state:
|
540 |
# Apply position mapping to FLEX column
|
541 |
-
flex_positions = st.session_state.freq_copy['FLEX'].map(maps_dict['Pos_map'])
|
542 |
|
543 |
# Count occurrences of each position in FLEX
|
544 |
flex_counts = flex_positions.value_counts()
|
|
|
278 |
with col2:
|
279 |
if st.button("Run Contest Sim"):
|
280 |
if 'working_seed' in st.session_state:
|
281 |
+
st.session_state.maps_dict = {
|
282 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
283 |
'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
|
284 |
'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
|
|
|
367 |
freq_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,0:9].values, return_counts=True)),
|
368 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
369 |
freq_working['Freq'] = freq_working['Freq'].astype(int)
|
370 |
+
freq_working['Position'] = freq_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
371 |
+
freq_working['Salary'] = freq_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
372 |
+
freq_working['Proj Own'] = freq_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
373 |
freq_working['Exposure'] = freq_working['Freq']/(1000)
|
374 |
freq_working['Edge'] = freq_working['Exposure'] - freq_working['Proj Own']
|
375 |
+
freq_working['Team'] = freq_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
376 |
st.session_state.player_freq = freq_working.copy()
|
377 |
|
378 |
if sim_site_var1 == 'Draftkings':
|
|
|
382 |
center_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,0:2].values, return_counts=True)),
|
383 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
384 |
center_working['Freq'] = center_working['Freq'].astype(int)
|
385 |
+
center_working['Position'] = center_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
386 |
+
center_working['Salary'] = center_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
387 |
+
center_working['Proj Own'] = center_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
388 |
center_working['Exposure'] = center_working['Freq']/(1000)
|
389 |
center_working['Edge'] = center_working['Exposure'] - center_working['Proj Own']
|
390 |
+
center_working['Team'] = center_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
391 |
st.session_state.center_freq = center_working.copy()
|
392 |
|
393 |
if sim_site_var1 == 'Draftkings':
|
|
|
397 |
wing_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,2:4].values, return_counts=True)),
|
398 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
399 |
wing_working['Freq'] = wing_working['Freq'].astype(int)
|
400 |
+
wing_working['Position'] = wing_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
401 |
+
wing_working['Salary'] = wing_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
402 |
+
wing_working['Proj Own'] = wing_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
403 |
wing_working['Exposure'] = wing_working['Freq']/(1000)
|
404 |
wing_working['Edge'] = wing_working['Exposure'] - wing_working['Proj Own']
|
405 |
+
wing_working['Team'] = wing_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
406 |
st.session_state.wing_freq = wing_working.copy()
|
407 |
|
408 |
if sim_site_var1 == 'Draftkings':
|
|
|
412 |
dmen_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,4:6].values, return_counts=True)),
|
413 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
414 |
dmen_working['Freq'] = dmen_working['Freq'].astype(int)
|
415 |
+
dmen_working['Position'] = dmen_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
416 |
+
dmen_working['Salary'] = dmen_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
417 |
+
dmen_working['Proj Own'] = dmen_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
418 |
dmen_working['Exposure'] = dmen_working['Freq']/(1000)
|
419 |
dmen_working['Edge'] = dmen_working['Exposure'] - dmen_working['Proj Own']
|
420 |
+
dmen_working['Team'] = dmen_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
421 |
st.session_state.dmen_freq = dmen_working.copy()
|
422 |
|
423 |
if sim_site_var1 == 'Draftkings':
|
|
|
427 |
flex_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,6:8].values, return_counts=True)),
|
428 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
429 |
flex_working['Freq'] = flex_working['Freq'].astype(int)
|
430 |
+
flex_working['Position'] = flex_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
431 |
+
flex_working['Salary'] = flex_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
432 |
+
flex_working['Proj Own'] = flex_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
433 |
flex_working['Exposure'] = flex_working['Freq']/(1000)
|
434 |
flex_working['Edge'] = flex_working['Exposure'] - flex_working['Proj Own']
|
435 |
+
flex_working['Team'] = flex_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
436 |
st.session_state.flex_freq = flex_working.copy()
|
437 |
|
438 |
if sim_site_var1 == 'Draftkings':
|
|
|
442 |
goalie_working = pd.DataFrame(np.column_stack(np.unique(st.session_state.freq_copy.iloc[:,8:9].values, return_counts=True)),
|
443 |
columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
|
444 |
goalie_working['Freq'] = goalie_working['Freq'].astype(int)
|
445 |
+
goalie_working['Position'] = goalie_working['Player'].map(st.session_state.maps_dict['Pos_map'])
|
446 |
+
goalie_working['Salary'] = goalie_working['Player'].map(st.session_state.maps_dict['Salary_map'])
|
447 |
+
goalie_working['Proj Own'] = goalie_working['Player'].map(st.session_state.maps_dict['Own_map']) / 100
|
448 |
goalie_working['Exposure'] = goalie_working['Freq']/(1000)
|
449 |
goalie_working['Edge'] = goalie_working['Exposure'] - goalie_working['Proj Own']
|
450 |
+
goalie_working['Team'] = goalie_working['Player'].map(st.session_state.maps_dict['Team_map'])
|
451 |
st.session_state.goalie_freq = goalie_working.copy()
|
452 |
|
453 |
if sim_site_var1 == 'Draftkings':
|
|
|
538 |
with tab2:
|
539 |
if 'Sim_Winner_Display' in st.session_state:
|
540 |
# Apply position mapping to FLEX column
|
541 |
+
flex_positions = st.session_state.freq_copy['FLEX'].map(st.session_state.maps_dict['Pos_map'])
|
542 |
|
543 |
# Count occurrences of each position in FLEX
|
544 |
flex_counts = flex_positions.value_counts()
|