|
|
import pandas as pd |
|
|
import streamlit as st |
|
|
import os |
|
|
from database import gc |
|
|
|
|
|
st.set_page_config(layout="wide") |
|
|
|
|
|
PGA_models = os.getenv('PGA_DATA') |
|
|
|
|
|
st.markdown(""" |
|
|
<style> |
|
|
/* Tab styling */ |
|
|
.stElementContainer [data-baseweb="button-group"] { |
|
|
gap: 2.000rem; |
|
|
padding: 4px; |
|
|
} |
|
|
.stElementContainer [kind="segmented_control"] { |
|
|
height: 2.000rem; |
|
|
white-space: pre-wrap; |
|
|
background-color: #DAA520; |
|
|
color: white; |
|
|
border-radius: 20px; |
|
|
gap: 1px; |
|
|
padding: 10px 20px; |
|
|
font-weight: bold; |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
.stElementContainer [kind="segmented_controlActive"] { |
|
|
height: 3.000rem; |
|
|
background-color: #DAA520; |
|
|
border: 3px solid #FFD700; |
|
|
border-radius: 10px; |
|
|
color: black; |
|
|
} |
|
|
.stElementContainer [kind="segmented_control"]:hover { |
|
|
background-color: #FFD700; |
|
|
cursor: pointer; |
|
|
} |
|
|
|
|
|
div[data-baseweb="select"] > div { |
|
|
background-color: #DAA520; |
|
|
color: white; |
|
|
} |
|
|
|
|
|
</style>""", unsafe_allow_html=True) |
|
|
|
|
|
@st.cache_data |
|
|
def load_dk_player_model(URL): |
|
|
sh = gc.open_by_url(URL) |
|
|
worksheet = sh.worksheet('Odds_vs_Salary') |
|
|
raw_display = pd.DataFrame(worksheet.get_all_records()) |
|
|
raw_display = raw_display.drop(['ID', 'Roster Position', '', 'Cut', 'Cut%'], axis=1) |
|
|
raw_display.rename(columns={"Name": "Player"}, inplace = True) |
|
|
data_cols = raw_display.columns.drop(['Player']) |
|
|
raw_display[data_cols] = raw_display[data_cols].apply(pd.to_numeric, errors='coerce') |
|
|
|
|
|
return raw_display |
|
|
|
|
|
def convert_df_to_csv(df): |
|
|
return df.to_csv().encode('utf-8') |
|
|
|
|
|
format_dict = {'Cut%': '{:.2%}', 'Win Odds': '{:.2%}','T5 Odds': '{:.2%}', 'T10 Odds': '{:.2%}','T20 Odds': '{:.2%}'} |
|
|
|
|
|
|
|
|
if st.button("Reset Data", key='reset1'): |
|
|
|
|
|
|
|
|
st.cache_data.clear() |
|
|
hold_display = load_dk_player_model(PGA_models) |
|
|
display = hold_display.set_index('Player') |
|
|
st.dataframe(display.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(format_dict, precision=2), height=1000, use_container_width = True) |
|
|
st.download_button( |
|
|
label="Export Model", |
|
|
data=convert_df_to_csv(display), |
|
|
file_name='PGA_DK_Vegas_Salary_export.csv', |
|
|
mime='text/csv', |
|
|
key='DK_download', |
|
|
) |
|
|
|