Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -31,10 +31,67 @@ mma_format = {'ML_perc': '{:.2%}', 'Min_%': '{:.2%}', 'Med_%': '{:.2%}', }
|
|
| 31 |
@st.cache_resource(ttl = 600)
|
| 32 |
def init_baselines():
|
| 33 |
sh = gc.open_by_url("https://docs.google.com/spreadsheets/d/17OAf4OAfW92-loMNUFvIubNmgF9111dsObybo6xhtYY/edit?gid=1468336051#gid=1468336051")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
worksheet = sh.worksheet('Flex')
|
| 35 |
all_values = worksheet.get_all_values()
|
| 36 |
-
cell_vals = [row[0:
|
| 37 |
-
frame_hold = pd.DataFrame(cell_vals, columns=['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $', 'blank'
|
| 38 |
frame_hold['OwnAvg'] = frame_hold['OwnAvg'].str.replace('%', '').astype(float)/100
|
| 39 |
flex_frame = frame_hold[['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $']]
|
| 40 |
string_cols = ['Team']
|
|
@@ -49,19 +106,50 @@ def init_baselines():
|
|
| 49 |
pass # Ignore columns that cannot be converted
|
| 50 |
|
| 51 |
flex_frame = flex_frame.sort_values(by='PointsAvg', ascending=False)
|
| 52 |
-
|
|
|
|
| 53 |
|
| 54 |
@st.cache_resource()
|
| 55 |
def convert_df_to_csv(df):
|
| 56 |
return df.to_csv().encode('utf-8')
|
| 57 |
|
| 58 |
-
|
|
|
|
|
|
|
| 59 |
|
| 60 |
-
with
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
@st.cache_resource(ttl = 600)
|
| 32 |
def init_baselines():
|
| 33 |
sh = gc.open_by_url("https://docs.google.com/spreadsheets/d/17OAf4OAfW92-loMNUFvIubNmgF9111dsObybo6xhtYY/edit?gid=1468336051#gid=1468336051")
|
| 34 |
+
worksheet = sh.worksheet('QB')
|
| 35 |
+
all_values = worksheet.get_all_values()
|
| 36 |
+
cell_vals = [row[0:7] for row in all_values[2:500]]
|
| 37 |
+
frame_hold = pd.DataFrame(cell_vals, columns=['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $', 'blank'])
|
| 38 |
+
frame_hold['OwnAvg'] = frame_hold['OwnAvg'].str.replace('%', '').astype(float)/100
|
| 39 |
+
qb_frame = frame_hold[['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $']]
|
| 40 |
+
string_cols = ['Team']
|
| 41 |
+
qb_frame = qb_frame.drop_duplicates(subset='Player')
|
| 42 |
+
qb_frame = qb_frame.set_index('Player')
|
| 43 |
+
|
| 44 |
+
for col in qb_frame.columns:
|
| 45 |
+
if col not in string_cols:
|
| 46 |
+
try:
|
| 47 |
+
qb_frame[col] = pd.to_numeric(qb_frame[col], errors='coerce')
|
| 48 |
+
except ValueError:
|
| 49 |
+
pass # Ignore columns that cannot be converted
|
| 50 |
+
|
| 51 |
+
qb_frame = qb_frame.sort_values(by='PointsAvg', ascending=False)
|
| 52 |
+
|
| 53 |
+
worksheet = sh.worksheet('RB')
|
| 54 |
+
all_values = worksheet.get_all_values()
|
| 55 |
+
cell_vals = [row[0:7] for row in all_values[2:500]]
|
| 56 |
+
frame_hold = pd.DataFrame(cell_vals, columns=['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $', 'blank'])
|
| 57 |
+
frame_hold['OwnAvg'] = frame_hold['OwnAvg'].str.replace('%', '').astype(float)/100
|
| 58 |
+
rb_frame = frame_hold[['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $']]
|
| 59 |
+
string_cols = ['Team']
|
| 60 |
+
rb_frame = rb_frame.drop_duplicates(subset='Player')
|
| 61 |
+
rb_frame = rb_frame.set_index('Player')
|
| 62 |
+
|
| 63 |
+
for col in rb_frame.columns:
|
| 64 |
+
if col not in string_cols:
|
| 65 |
+
try:
|
| 66 |
+
rb_frame[col] = pd.to_numeric(rb_frame[col], errors='coerce')
|
| 67 |
+
except ValueError:
|
| 68 |
+
pass # Ignore columns that cannot be converted
|
| 69 |
+
|
| 70 |
+
rb_frame = rb_frame.sort_values(by='PointsAvg', ascending=False)
|
| 71 |
+
|
| 72 |
+
worksheet = sh.worksheet('WR')
|
| 73 |
+
all_values = worksheet.get_all_values()
|
| 74 |
+
cell_vals = [row[0:7] for row in all_values[2:500]]
|
| 75 |
+
frame_hold = pd.DataFrame(cell_vals, columns=['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $', 'blank'])
|
| 76 |
+
frame_hold['OwnAvg'] = frame_hold['OwnAvg'].str.replace('%', '').astype(float)/100
|
| 77 |
+
wr_frame = frame_hold[['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $']]
|
| 78 |
+
string_cols = ['Team']
|
| 79 |
+
wr_frame = wr_frame.drop_duplicates(subset='Player')
|
| 80 |
+
wr_frame = wr_frame.set_index('Player')
|
| 81 |
+
|
| 82 |
+
for col in wr_frame.columns:
|
| 83 |
+
if col not in string_cols:
|
| 84 |
+
try:
|
| 85 |
+
wr_frame[col] = pd.to_numeric(wr_frame[col], errors='coerce')
|
| 86 |
+
except ValueError:
|
| 87 |
+
pass # Ignore columns that cannot be converted
|
| 88 |
+
|
| 89 |
+
wr_frame = wr_frame.sort_values(by='PointsAvg', ascending=False)
|
| 90 |
+
|
| 91 |
worksheet = sh.worksheet('Flex')
|
| 92 |
all_values = worksheet.get_all_values()
|
| 93 |
+
cell_vals = [row[0:7] for row in all_values[2:500]]
|
| 94 |
+
frame_hold = pd.DataFrame(cell_vals, columns=['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $', 'blank'])
|
| 95 |
frame_hold['OwnAvg'] = frame_hold['OwnAvg'].str.replace('%', '').astype(float)/100
|
| 96 |
flex_frame = frame_hold[['Player', 'Team', 'Salary', 'OwnAvg', 'PointsAvg', 'Points per $']]
|
| 97 |
string_cols = ['Team']
|
|
|
|
| 106 |
pass # Ignore columns that cannot be converted
|
| 107 |
|
| 108 |
flex_frame = flex_frame.sort_values(by='PointsAvg', ascending=False)
|
| 109 |
+
|
| 110 |
+
return qb_frame, rb_frame, wr_frame, flex_frame
|
| 111 |
|
| 112 |
@st.cache_resource()
|
| 113 |
def convert_df_to_csv(df):
|
| 114 |
return df.to_csv().encode('utf-8')
|
| 115 |
|
| 116 |
+
qb_frame, rb_frame, wr_frame, flex_frame = init_baselines()
|
| 117 |
+
|
| 118 |
+
tab1, tab2, tab3, tab4 = st.tabs(['QB data', 'RB data', 'WR data', 'Flex data'])
|
| 119 |
|
| 120 |
+
with tab1:
|
| 121 |
+
with st.container():
|
| 122 |
+
st.dataframe(qb_frame.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height = 1000, use_container_width = True)
|
| 123 |
+
st.download_button(
|
| 124 |
+
label="Export Tables",
|
| 125 |
+
data=convert_df_to_csv(qb_frame),
|
| 126 |
+
file_name='NCAAF_model_export.csv',
|
| 127 |
+
mime='text/csv',
|
| 128 |
+
)
|
| 129 |
+
with tab2:
|
| 130 |
+
with st.container():
|
| 131 |
+
st.dataframe(rb_frame.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height = 1000, use_container_width = True)
|
| 132 |
+
st.download_button(
|
| 133 |
+
label="Export Tables",
|
| 134 |
+
data=convert_df_to_csv(rb_frame),
|
| 135 |
+
file_name='NCAAF_model_export.csv',
|
| 136 |
+
mime='text/csv',
|
| 137 |
+
)
|
| 138 |
+
with tab3:
|
| 139 |
+
with st.container():
|
| 140 |
+
st.dataframe(wr_frame.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height = 1000, use_container_width = True)
|
| 141 |
+
st.download_button(
|
| 142 |
+
label="Export Tables",
|
| 143 |
+
data=convert_df_to_csv(wr_frame),
|
| 144 |
+
file_name='NCAAF_model_export.csv',
|
| 145 |
+
mime='text/csv',
|
| 146 |
+
)
|
| 147 |
+
with tab4:
|
| 148 |
+
with st.container():
|
| 149 |
+
st.dataframe(flex_frame.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height = 1000, use_container_width = True)
|
| 150 |
+
st.download_button(
|
| 151 |
+
label="Export Tables",
|
| 152 |
+
data=convert_df_to_csv(flex_frame),
|
| 153 |
+
file_name='NCAAF_model_export.csv',
|
| 154 |
+
mime='text/csv',
|
| 155 |
+
)
|