Spaces:
Running
Running
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 |
+
)
|