Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -888,8 +888,120 @@ with tab2:
|
|
888 |
Strength_var = .01
|
889 |
scaling_var = 15
|
890 |
sim_done = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
891 |
|
892 |
with col2:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
893 |
if st.button("Simulate Contest"):
|
894 |
with st.container():
|
895 |
sim_done = 0
|
@@ -907,26 +1019,6 @@ with tab2:
|
|
907 |
pass
|
908 |
with st.container():
|
909 |
st.write('Contest Simulation Starting')
|
910 |
-
seed_depth1 = 10
|
911 |
-
Total_Runs = 1000000
|
912 |
-
if Contest_Size <= 1000:
|
913 |
-
strength_grow = .01
|
914 |
-
elif Contest_Size > 1000 and Contest_Size <= 2500:
|
915 |
-
strength_grow = .025
|
916 |
-
elif Contest_Size > 2500 and Contest_Size <= 5000:
|
917 |
-
strength_grow = .05
|
918 |
-
elif Contest_Size > 5000 and Contest_Size <= 20000:
|
919 |
-
strength_grow = .075
|
920 |
-
elif Contest_Size > 20000:
|
921 |
-
strength_grow = .1
|
922 |
-
|
923 |
-
field_growth = 100 * strength_grow
|
924 |
-
|
925 |
-
Sort_function = 'Median'
|
926 |
-
if Sort_function == 'Median':
|
927 |
-
Sim_function = 'Projection'
|
928 |
-
elif Sort_function == 'Own':
|
929 |
-
Sim_function = 'Own'
|
930 |
|
931 |
if slate_var1 == 'User':
|
932 |
OwnFrame = proj_dataframe
|
@@ -1337,85 +1429,4 @@ with tab2:
|
|
1337 |
dst_freq['Team'] = dst_freq['Team'].replace(item_list, team_list)
|
1338 |
|
1339 |
dst_freq = dst_freq[['Player', 'Team', 'Position', 'Salary', 'Proj Own', 'Exposure', 'Edge']]
|
1340 |
-
|
1341 |
-
if sim_done == 1:
|
1342 |
-
player_split_var2 = st.radio("Are you wanting to isolate any lineups with specific players?", ('Full Players', 'Specific Players'))
|
1343 |
-
if player_split_var2 == 'Specific Players':
|
1344 |
-
find_var2 = st.multiselect('Which players must be included in the lineups?', options = player_freq['Player'].unique())
|
1345 |
-
elif player_split_var2 == 'Full Players':
|
1346 |
-
find_var2 = static_exposure.Player.values.tolist()
|
1347 |
-
if player_split_var2 == 'Specific Players':
|
1348 |
-
Sim_Winner_Frame = Sim_Winner_Frame[np.equal.outer(Sim_Winner_Frame.to_numpy(copy=False), find_var2).any(axis=1).all(axis=1)]
|
1349 |
-
elif player_split_var2 == 'Full Players':
|
1350 |
-
Sim_Winner_Frame = Sim_Winner_Frame
|
1351 |
-
|
1352 |
-
with st.container():
|
1353 |
-
display_winner_dataframe = Sim_Winner_Frame.copy()
|
1354 |
-
st.dataframe(display_winner_dataframe.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').background_gradient(cmap='RdYlGn_r', subset=['Own']).format(precision=2), use_container_width = True)
|
1355 |
-
|
1356 |
-
st.download_button(
|
1357 |
-
label="Export Tables",
|
1358 |
-
data=convert_df_to_csv(Sim_Winner_Export),
|
1359 |
-
file_name='NFL_consim_export.csv',
|
1360 |
-
mime='text/csv',
|
1361 |
-
)
|
1362 |
-
|
1363 |
-
with st.container():
|
1364 |
-
freq_container = st.empty()
|
1365 |
-
tab1, tab2, tab3, tab4, tab5, tab6, tab7 = st.tabs(['Overall Exposures', 'QB Exposures', 'RB Exposures', 'WR Exposures', 'TE Exposures', 'FLEX Exposures', 'DST Exposures'])
|
1366 |
-
with tab1:
|
1367 |
-
st.dataframe(player_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
1368 |
-
st.download_button(
|
1369 |
-
label="Export Exposures",
|
1370 |
-
data=convert_df_to_csv(player_freq),
|
1371 |
-
file_name='player_freq_export.csv',
|
1372 |
-
mime='text/csv',
|
1373 |
-
)
|
1374 |
-
with tab2:
|
1375 |
-
st.dataframe(qb_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
1376 |
-
st.download_button(
|
1377 |
-
label="Export Exposures",
|
1378 |
-
data=convert_df_to_csv(qb_freq),
|
1379 |
-
file_name='qb_freq_export.csv',
|
1380 |
-
mime='text/csv',
|
1381 |
-
)
|
1382 |
-
with tab3:
|
1383 |
-
st.dataframe(rb_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
1384 |
-
st.download_button(
|
1385 |
-
label="Export Exposures",
|
1386 |
-
data=convert_df_to_csv(rb_freq),
|
1387 |
-
file_name='rb_freq_export.csv',
|
1388 |
-
mime='text/csv',
|
1389 |
-
)
|
1390 |
-
with tab4:
|
1391 |
-
st.dataframe(wr_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
1392 |
-
st.download_button(
|
1393 |
-
label="Export Exposures",
|
1394 |
-
data=convert_df_to_csv(wr_freq),
|
1395 |
-
file_name='wr_freq_export.csv',
|
1396 |
-
mime='text/csv',
|
1397 |
-
)
|
1398 |
-
with tab5:
|
1399 |
-
st.dataframe(te_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
1400 |
-
st.download_button(
|
1401 |
-
label="Export Exposures",
|
1402 |
-
data=convert_df_to_csv(te_freq),
|
1403 |
-
file_name='te_freq_export.csv',
|
1404 |
-
mime='text/csv',
|
1405 |
-
)
|
1406 |
-
with tab6:
|
1407 |
-
st.dataframe(flex_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
1408 |
-
st.download_button(
|
1409 |
-
label="Export Exposures",
|
1410 |
-
data=convert_df_to_csv(flex_freq),
|
1411 |
-
file_name='flex_freq_export.csv',
|
1412 |
-
mime='text/csv',
|
1413 |
-
)
|
1414 |
-
with tab7:
|
1415 |
-
st.dataframe(dst_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
1416 |
-
st.download_button(
|
1417 |
-
label="Export Exposures",
|
1418 |
-
data=convert_df_to_csv(dst_freq),
|
1419 |
-
file_name='dst_freq_export.csv',
|
1420 |
-
mime='text/csv',
|
1421 |
-
)
|
|
|
888 |
Strength_var = .01
|
889 |
scaling_var = 15
|
890 |
sim_done = 0
|
891 |
+
seed_depth1 = 10
|
892 |
+
Total_Runs = 1000000
|
893 |
+
if Contest_Size <= 1000:
|
894 |
+
strength_grow = .01
|
895 |
+
elif Contest_Size > 1000 and Contest_Size <= 2500:
|
896 |
+
strength_grow = .025
|
897 |
+
elif Contest_Size > 2500 and Contest_Size <= 5000:
|
898 |
+
strength_grow = .05
|
899 |
+
elif Contest_Size > 5000 and Contest_Size <= 20000:
|
900 |
+
strength_grow = .075
|
901 |
+
elif Contest_Size > 20000:
|
902 |
+
strength_grow = .1
|
903 |
+
|
904 |
+
field_growth = 100 * strength_grow
|
905 |
+
|
906 |
+
Sort_function = 'Median'
|
907 |
+
if Sort_function == 'Median':
|
908 |
+
Sim_function = 'Projection'
|
909 |
+
elif Sort_function == 'Own':
|
910 |
+
Sim_function = 'Own'
|
911 |
+
Sim_Winner_Frame = pd.DataFrame()
|
912 |
+
player_freq = pd.DataFrame()
|
913 |
+
Sim_Winner_Export = pd.DataFrame()
|
914 |
+
qb_freq = pd.DataFrame()
|
915 |
+
rb_freq = pd.DataFrame()
|
916 |
+
wr_freq = pd.DataFrame()
|
917 |
+
te_freq = pd.DataFrame()
|
918 |
+
flex_freq = pd.DataFrame()
|
919 |
+
dst_freq = pd.DataFrame()
|
920 |
|
921 |
with col2:
|
922 |
+
with st.container():
|
923 |
+
if sim_done == 1:
|
924 |
+
player_split_var2 = st.radio("Are you wanting to isolate any lineups with specific players?", ('Full Players', 'Specific Players'))
|
925 |
+
if player_split_var2 == 'Specific Players':
|
926 |
+
find_var2 = st.multiselect('Which players must be included in the lineups?', options = player_freq['Player'].unique())
|
927 |
+
elif player_split_var2 == 'Full Players':
|
928 |
+
find_var2 = static_exposure.Player.values.tolist()
|
929 |
+
if player_split_var2 == 'Specific Players':
|
930 |
+
Sim_Winner_Frame = Sim_Winner_Frame[np.equal.outer(Sim_Winner_Frame.to_numpy(copy=False), find_var2).any(axis=1).all(axis=1)]
|
931 |
+
elif player_split_var2 == 'Full Players':
|
932 |
+
Sim_Winner_Frame = Sim_Winner_Frame
|
933 |
+
|
934 |
+
with st.container():
|
935 |
+
display_winner_dataframe = Sim_Winner_Frame.copy()
|
936 |
+
st.dataframe(display_winner_dataframe.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').background_gradient(cmap='RdYlGn_r', subset=['Own']).format(precision=2), use_container_width = True)
|
937 |
+
|
938 |
+
st.download_button(
|
939 |
+
label="Export Tables",
|
940 |
+
data=convert_df_to_csv(Sim_Winner_Export),
|
941 |
+
file_name='NFL_consim_export.csv',
|
942 |
+
mime='text/csv',
|
943 |
+
)
|
944 |
+
|
945 |
+
with st.container():
|
946 |
+
freq_container = st.empty()
|
947 |
+
tab1, tab2, tab3, tab4, tab5, tab6, tab7 = st.tabs(['Overall Exposures', 'QB Exposures', 'RB Exposures', 'WR Exposures', 'TE Exposures', 'FLEX Exposures', 'DST Exposures'])
|
948 |
+
with tab1:
|
949 |
+
st.dataframe(player_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
950 |
+
st.download_button(
|
951 |
+
label="Export Exposures",
|
952 |
+
data=convert_df_to_csv(player_freq),
|
953 |
+
file_name='player_freq_export.csv',
|
954 |
+
mime='text/csv',
|
955 |
+
)
|
956 |
+
with tab2:
|
957 |
+
st.dataframe(qb_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
958 |
+
st.download_button(
|
959 |
+
label="Export Exposures",
|
960 |
+
data=convert_df_to_csv(qb_freq),
|
961 |
+
file_name='qb_freq_export.csv',
|
962 |
+
mime='text/csv',
|
963 |
+
)
|
964 |
+
with tab3:
|
965 |
+
st.dataframe(rb_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
966 |
+
st.download_button(
|
967 |
+
label="Export Exposures",
|
968 |
+
data=convert_df_to_csv(rb_freq),
|
969 |
+
file_name='rb_freq_export.csv',
|
970 |
+
mime='text/csv',
|
971 |
+
)
|
972 |
+
with tab4:
|
973 |
+
st.dataframe(wr_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
974 |
+
st.download_button(
|
975 |
+
label="Export Exposures",
|
976 |
+
data=convert_df_to_csv(wr_freq),
|
977 |
+
file_name='wr_freq_export.csv',
|
978 |
+
mime='text/csv',
|
979 |
+
)
|
980 |
+
with tab5:
|
981 |
+
st.dataframe(te_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
982 |
+
st.download_button(
|
983 |
+
label="Export Exposures",
|
984 |
+
data=convert_df_to_csv(te_freq),
|
985 |
+
file_name='te_freq_export.csv',
|
986 |
+
mime='text/csv',
|
987 |
+
)
|
988 |
+
with tab6:
|
989 |
+
st.dataframe(flex_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
990 |
+
st.download_button(
|
991 |
+
label="Export Exposures",
|
992 |
+
data=convert_df_to_csv(flex_freq),
|
993 |
+
file_name='flex_freq_export.csv',
|
994 |
+
mime='text/csv',
|
995 |
+
)
|
996 |
+
with tab7:
|
997 |
+
st.dataframe(dst_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
998 |
+
st.download_button(
|
999 |
+
label="Export Exposures",
|
1000 |
+
data=convert_df_to_csv(dst_freq),
|
1001 |
+
file_name='dst_freq_export.csv',
|
1002 |
+
mime='text/csv',
|
1003 |
+
)
|
1004 |
+
|
1005 |
if st.button("Simulate Contest"):
|
1006 |
with st.container():
|
1007 |
sim_done = 0
|
|
|
1019 |
pass
|
1020 |
with st.container():
|
1021 |
st.write('Contest Simulation Starting')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1022 |
|
1023 |
if slate_var1 == 'User':
|
1024 |
OwnFrame = proj_dataframe
|
|
|
1429 |
dst_freq['Team'] = dst_freq['Team'].replace(item_list, team_list)
|
1430 |
|
1431 |
dst_freq = dst_freq[['Player', 'Team', 'Position', 'Salary', 'Proj Own', 'Exposure', 'Edge']]
|
1432 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|