Spaces:
Running
Running
| #initial imports | |
| import streamlit as st | |
| st.set_page_config(layout="wide") | |
| import numpy as np | |
| import pandas as pd | |
| import time | |
| from fuzzywuzzy import process | |
| # Bring in numpy reqs | |
| from numpy import nan as np_nan | |
| from numpy import where as np_where | |
| from numpy import random as np_random | |
| from numpy import zeros as np_zeros | |
| from numpy import array as np_array | |
| from pandas import concat as pd_concat | |
| from pandas import merge as pd_merge | |
| from pandas import DataFrame | |
| #bring in functions | |
| from function_hold.NBA_functions import DK_NBA_ROO_Build, FD_NBA_ROO_Build | |
| def load_file(upload): | |
| if upload is not None: | |
| try: | |
| if upload.name.endswith('.csv'): | |
| df = pd.read_csv(upload) | |
| elif upload.name.endswith(('.xls', '.xlsx')): | |
| df = pd.read_excel(upload) | |
| else: | |
| st.error('Please upload either a CSV or Excel file') | |
| return None | |
| export_df = df.copy() | |
| return export_df, df | |
| except Exception as e: | |
| st.error(f'Error loading file: {str(e)}') | |
| return None | |
| return None | |
| tab1, tab2 = st.tabs(["Data Load", "Manage Portfolio"]) | |
| with tab1: | |
| if st.button('Clear data', key='reset1'): | |
| st.session_state.clear() | |
| sport_var = st.selectbox("Select Sport", ["NBA", "NFL", "MLB"]) | |
| st.subheader("Projections File") | |
| if sport_var == "NBA": | |
| st.info("upload a projections file that has Data oriented in the following format: 'Player', 'Team', 'Opp', 'Position', 'Salary', 'Median', 'Minutes', 'Own'") | |
| elif sport_var == "NFL": | |
| st.info("upload a projections file that has Data oriented in the following format: 'Player', 'Team', 'Opp', 'Position', 'Salary', 'Median', 'Minutes', 'Own'") | |
| elif sport_var == "MLB": | |
| st.info("upload a projections file that has Data oriented in the following format: 'Player', 'Team', 'Opp', 'Position', 'Salary', 'Median', 'Minutes', 'Own'") | |
| # Create two columns for the uploader and template button | |
| upload_col, template_col = st.columns([3, 1]) | |
| with upload_col: | |
| projections_file = st.file_uploader("Upload Projections File (CSV or Excel)", type=['csv', 'xlsx', 'xls']) | |
| with template_col: | |
| if sport_var == "NBA": | |
| template_df = pd.DataFrame(columns=['Player', 'Team', 'Opp', 'Position', 'Salary', 'Median', 'Minutes', 'Own']) | |
| elif sport_var == "NFL": | |
| template_df = pd.DataFrame(columns=['Player', 'Team', 'Opp', 'Position', 'Salary', 'Median', 'Minutes', 'Own']) | |
| elif sport_var == "MLB": | |
| template_df = pd.DataFrame(columns=['Player', 'Team', 'Opp', 'Position', 'Salary', 'Median', 'Minutes', 'Own']) | |
| # Add download button for template | |
| st.download_button( | |
| label="Template", | |
| data=template_df.to_csv(index=False), | |
| file_name="projections_template.csv", | |
| mime="text/csv" | |
| ) | |
| if projections_file: | |
| export_projections, projections = load_file(projections_file) | |
| if projections is not None: | |
| st.success('Projections file loaded successfully!') | |
| st.dataframe(projections) | |
| with tab2: | |
| if st.button('Clear data', key='reset2'): | |
| st.session_state.clear() | |
| with st.sidebar: | |
| site_var_sb = st.selectbox("Select Site", ["Draftkings", "Fanduel"]) | |
| distribution_type_sb = st.selectbox("Select Distribution Type", ['normal', 'poisson', 'bimodal']) | |
| floor_var_sb = st.number_input("Floor (low end multiplier)", min_value=0.00, max_value=.50, value=.25, step=.01) | |
| ceiling_var_sb = st.number_input("Ceiling (high end multiplier)", min_value=1.50, max_value=3.00, value=2.00, step=.01) | |
| std_var_sb = st.number_input("Standard Deviation (variance within distribution)", min_value=1.00, max_value=5.00, value=4.00, step=.01) | |
| if projections_file: | |
| if st.button('Build ROO'): | |
| if sport_var == "NBA": | |
| if site_var_sb == "Draftkings": | |
| disp_file = DK_NBA_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb, distribution_type_sb) | |
| elif site_var_sb == "Fanduel": | |
| disp_file = FD_NBA_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb, distribution_type_sb) | |
| elif sport_var == "NFL": | |
| if site_var_sb == "Draftkings": | |
| disp_file = DK_NFL_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb, distribution_type_sb) | |
| elif site_var_sb == "Fanduel": | |
| disp_file = FD_NFL_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb, distribution_type_sb) | |
| elif sport_var == "MLB": | |
| if site_var_sb == "Draftkings": | |
| disp_file = DK_MLB_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb, distribution_type_sb) | |
| elif site_var_sb == "Fanduel": | |
| disp_file = FD_MLB_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb, distribution_type_sb) | |
| if disp_file is not None: | |
| st.dataframe(disp_file.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=1000, use_container_width = True) | |