James McCool
commited on
Commit
·
0c5892a
1
Parent(s):
1dd4cb9
Add position filtering options to portfolio management, allowing users to filter by position and team with adjustable thresholds.
Browse files
app.py
CHANGED
|
@@ -32,6 +32,9 @@ from global_func.recalc_diversity import recalc_diversity
|
|
| 32 |
from database_queries import *
|
| 33 |
from database import *
|
| 34 |
|
|
|
|
|
|
|
|
|
|
| 35 |
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']
|
| 36 |
dk_db_nfl_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',
|
| 37 |
'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',
|
|
@@ -1745,6 +1748,8 @@ if selected_tab == 'Manage Portfolio':
|
|
| 1745 |
'Finish_percentile': st.session_state['working_frame']['Finish_percentile'].max(),
|
| 1746 |
'Diversity': st.session_state['working_frame']['Diversity'].max()
|
| 1747 |
}
|
|
|
|
|
|
|
| 1748 |
|
| 1749 |
with st.sidebar:
|
| 1750 |
if 'trimming_dict_maxes' not in st.session_state:
|
|
@@ -2125,6 +2130,37 @@ if selected_tab == 'Manage Portfolio':
|
|
| 2125 |
st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
|
| 2126 |
st.session_state['export_merge'] = st.session_state['export_base'].copy()
|
| 2127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2128 |
with st.expander('Trimming Options'):
|
| 2129 |
with st.form(key='trim_form'):
|
| 2130 |
st.write("Sorting and trimming variables:")
|
|
|
|
| 32 |
from database_queries import *
|
| 33 |
from database import *
|
| 34 |
|
| 35 |
+
pos_parse_options = ['Projection', 'Ownership', 'Salary', 'Position', 'Team']
|
| 36 |
+
pos_parse_translate = ['proj_map', 'own_map', 'salary_map', 'pos_map', 'team_map']
|
| 37 |
+
|
| 38 |
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']
|
| 39 |
dk_db_nfl_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',
|
| 40 |
'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',
|
|
|
|
| 1748 |
'Finish_percentile': st.session_state['working_frame']['Finish_percentile'].max(),
|
| 1749 |
'Diversity': st.session_state['working_frame']['Diversity'].max()
|
| 1750 |
}
|
| 1751 |
+
|
| 1752 |
+
position_choices = [col for col in st.session_state['working_frame'].columns if col not in excluded_cols]
|
| 1753 |
|
| 1754 |
with st.sidebar:
|
| 1755 |
if 'trimming_dict_maxes' not in st.session_state:
|
|
|
|
| 2130 |
st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
|
| 2131 |
st.session_state['export_merge'] = st.session_state['export_base'].copy()
|
| 2132 |
|
| 2133 |
+
with st.expander('Position Filtering'):
|
| 2134 |
+
with st.form(key='position_filtering_form'):
|
| 2135 |
+
position_choice = st.multiselect("Position(s) to filter", options=position_choices, default=[])
|
| 2136 |
+
position_filter = st.selectbox("Filter on:", options=pos_parse_options)
|
| 2137 |
+
if position_filter not in ['Position', 'Team']:
|
| 2138 |
+
position_low_threshold = st.number_input("Low Threshold", value=0.0, min_value=0.0, step=1.0)
|
| 2139 |
+
position_high_threshold = st.number_input("High Threshold", value=150.0, min_value=0.0, step=1.0)
|
| 2140 |
+
filter_keys = None
|
| 2141 |
+
else:
|
| 2142 |
+
filter_keys_choice = st.selectbox("Filter choice:", options=['Position', 'Team'])
|
| 2143 |
+
if filter_keys_choice == 'Position':
|
| 2144 |
+
filter_keys = st.multiselect("Position(s) to keep", options=position_choices, default=[])
|
| 2145 |
+
else:
|
| 2146 |
+
filter_keys = st.multiselect("Position(s) to keep", options=st.session_state['map_dict']['team_map'].keys(), default=[])
|
| 2147 |
+
position_low_threshold = None
|
| 2148 |
+
position_high_threshold = None
|
| 2149 |
+
submitted_col, export_col = st.columns(2)
|
| 2150 |
+
with submitted_col:
|
| 2151 |
+
reg_submitted = st.form_submit_button("Portfolio")
|
| 2152 |
+
with export_col:
|
| 2153 |
+
exp_submitted = st.form_submit_button("Export")
|
| 2154 |
+
if reg_submitted:
|
| 2155 |
+
parsed_frame = st.session_state['working_frame'].copy()
|
| 2156 |
+
parsed_frame = parse_portfolio_on_mapped(parsed_frame, st.session_state['map_dict'], pos_parse_translate[pos_parse_options.index(position_filter)], filter_keys, position_low_threshold, position_high_threshold, position_choice)
|
| 2157 |
+
st.session_state['working_frame'] = parsed_frame.sort_values(by='median', ascending=False)
|
| 2158 |
+
st.session_state['export_merge'] = st.session_state['working_frame'].copy()
|
| 2159 |
+
elif exp_submitted:
|
| 2160 |
+
parsed_frame = st.session_state['export_base'].copy()
|
| 2161 |
+
parsed_frame = parse_portfolio_on_mapped(parsed_frame, st.session_state['map_dict'], pos_parse_translate[pos_parse_options.index(position_filter)], filter_keys, position_low_threshold, position_high_threshold, position_choice)
|
| 2162 |
+
st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False)
|
| 2163 |
+
st.session_state['export_merge'] = st.session_state['export_base'].copy()
|
| 2164 |
with st.expander('Trimming Options'):
|
| 2165 |
with st.form(key='trim_form'):
|
| 2166 |
st.write("Sorting and trimming variables:")
|