MLB_HR_Finder / src /streamlit_app.py
James McCool
Update Streamlit app to rename columns in the 'Basics' display option, improving clarity of data presentation by using more intuitive labels for key metrics.
7a1b6ea
raw
history blame
1.72 kB
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)