import numpy as np import pandas as pd import streamlit as st import pymongo import os st.set_page_config(layout="wide") @st.cache_resource def init_conn(): uri = os.getenv('mongo_uri') client = pymongo.MongoClient(uri, retryWrites=True, serverSelectionTimeoutMS=500000) db = client["MLB_Database"] return db db = init_conn() @st.cache_resource(ttl = 60) def init_baselines(): collection = db["HR_Table"] cursor = collection.find() raw_display = pd.DataFrame(cursor) raw_display.rename(columns={"Names": "Player"}, inplace = True) raw_frame = raw_display.drop(columns=['_id']).drop_duplicates(subset='Player') return raw_frame hr_frame = init_baselines() st.title("HR Finder Table") disp_options = st.radio("Display options:", options = ['Basics', 'Exclude DFS Info', 'Include DFS Info'], key='display_options') if disp_options == 'Basics': st.session_state['disp_frame'] = hr_frame[['Player', 'xHR/PA', 'Opp_xHR/PA', 'BP_Binom_xHR', 'Binom_xHR']] st.session_state['disp_frame'] = st.session_state['disp_frame'].rename(columns={'xHR/PA': 'Hitter', 'Opp_xHR/PA': 'SP', 'BP_Binom_xHR': 'BP', 'Binom_xHR': 'xHRs'}) elif disp_options == 'Exclude DFS Info': st.session_state['disp_frame'] = hr_frame.drop(columns=['Salary', 'Position', 'FD_Position', 'Order']) else: st.session_state['disp_frame'] = hr_frame.copy() st.session_state['disp_frame'] = st.session_state['disp_frame'].sort_values(by='Binom_xHR', ascending=False) if 'disp_frame' in st.session_state: st.dataframe(st.session_state['disp_frame'].style.background_gradient(axis=0).background_gradient(cmap = 'RdYlGn').format(precision=2), height=1200, use_container_width = True, hide_index = True)