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.
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
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
|
|
|
|
|
|
| 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']))
|