James McCool commited on
Commit
22b5408
·
1 Parent(s): 71c647d

Refactor portfolio upload functionality in app.py for improved data processing

Browse files

- Updated the portfolio upload section to enhance user experience by allowing direct comparison of portfolio performance against contest data.
- Implemented data cleaning for uploaded portfolio files, ensuring whitespace and unwanted characters are removed from column values.
- Adjusted the display logic to show portfolio data alongside contest data, improving visibility for users.

Files changed (1) hide show
  1. app.py +19 -11
app.py CHANGED
@@ -171,17 +171,19 @@ with tab1:
171
  pass
172
 
173
  with portfolio_upload:
174
- st.info("If you have a portfolio of lineups, you can upload them here to see how they perform against the field")
175
- if st.button('Load Portfolio Data', key='load_portfolio_data'):
176
- st.session_state['portfolio_file'] = st.file_uploader("Upload Portfolio File (CSV or Excel)", type=['csv', 'xlsx', 'xls'])
177
- if st.session_state['portfolio_file'] is not None:
178
- st.session_state['portfolio_df'] = pd.read_csv(st.session_state['portfolio_file'])
179
- st.session_state['portfolio_df'] = st.session_state['portfolio_df'].columns = ['P1', 'P2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']
180
- st.session_state['portfolio_df']['BaseName'] = 'Backtesting_upload'
181
- st.session_state['portfolio_df']['EntryCount'] = len(st.session_state['portfolio_df'])
182
- st.session_state['portfolio_df'] = st.session_state['portfolio_df'][['BaseName', 'EntryCount', 'P1', 'P2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']]
183
- else:
184
- pass
 
 
185
 
186
  if 'Contest_file' in st.session_state:
187
  st.session_state['Contest'], st.session_state['ownership_df'], st.session_state['actual_df'], st.session_state['entry_list'], check_lineups = load_contest_file(st.session_state['Contest_file'], type_var, st.session_state['player_info'], sport_select)
@@ -201,7 +203,13 @@ with tab1:
201
  st.info(return_message)
202
  except:
203
  pass
 
204
  st.dataframe(st.session_state['Contest'].head(100))
 
 
 
 
 
205
 
206
  if 'Contest_file' in st.session_state:
207
  st.session_state['ownership_dict'] = dict(zip(st.session_state['ownership_df']['Player'], st.session_state['ownership_df']['Own']))
 
171
  pass
172
 
173
  with portfolio_upload:
174
+ st.info("If you have a portfolio of lineups, you can upload them here to see how they would have performed against the field")
175
+ st.session_state['portfolio_file'] = st.file_uploader("Upload Portfolio File (CSV or Excel)", type=['csv', 'xlsx', 'xls'])
176
+ st.session_state['portfolio_df'] = pd.read_csv(st.session_state['portfolio_file'])
177
+ original_columns = st.session_state['portfolio_df'].columns.tolist()
178
+
179
+ for col in original_columns:
180
+ st.session_state['portfolio_df'][col] = st.session_state['portfolio_df'][col].astype(str).str.replace(r'\s*\([^)]*\)', '', regex=True).str.strip()
181
+
182
+ st.session_state['portfolio_df']['BaseName'] = 'Backtesting_upload'
183
+ st.session_state['portfolio_df']['EntryCount'] = len(st.session_state['portfolio_df'])
184
+
185
+ st.session_state['portfolio_df'] = st.session_state['portfolio_df'][['BaseName', 'EntryCount'] + original_columns]
186
+
187
 
188
  if 'Contest_file' in st.session_state:
189
  st.session_state['Contest'], st.session_state['ownership_df'], st.session_state['actual_df'], st.session_state['entry_list'], check_lineups = load_contest_file(st.session_state['Contest_file'], type_var, st.session_state['player_info'], sport_select)
 
203
  st.info(return_message)
204
  except:
205
  pass
206
+ st.write('Contest data:')
207
  st.dataframe(st.session_state['Contest'].head(100))
208
+ if 'portfolio_df' in st.session_state:
209
+ st.write('Portfolio data:')
210
+ st.dataframe(st.session_state['portfolio_df'].head(100))
211
+ else:
212
+ pass
213
 
214
  if 'Contest_file' in st.session_state:
215
  st.session_state['ownership_dict'] = dict(zip(st.session_state['ownership_df']['Player'], st.session_state['ownership_df']['Own']))