Multichem commited on
Commit
c7a9602
·
verified ·
1 Parent(s): 16ed097

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +72 -64
app.py CHANGED
@@ -46,17 +46,6 @@ percentages_format = {'Exposure': '{:.2%}'}
46
  @st.cache_data(ttl = 600)
47
  def init_baselines():
48
  sh = gcservice_account.open_by_url(MLB_Data)
49
- collection = db["DK_MLB_seed_frame"]
50
- cursor = collection.find()
51
-
52
- raw_display = pd.DataFrame(list(cursor))
53
- DK_seed = raw_display[['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'salary', 'proj']]
54
-
55
- collection = db["FD_MLB_seed_frame"]
56
- cursor = collection.find()
57
-
58
- raw_display = pd.DataFrame(list(cursor))
59
- FD_seed = raw_display[['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'salary', 'proj']]
60
 
61
  worksheet = sh.worksheet('DK_Projections')
62
  load_display = pd.DataFrame(worksheet.get_all_records())
@@ -70,9 +59,29 @@ def init_baselines():
70
 
71
  fd_raw = load_display.dropna(subset=['Median'])
72
 
73
- return DK_seed, FD_seed, dk_raw, fd_raw
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
 
75
- DK_seed, FD_seed, dk_raw, fd_raw = init_baselines()
76
 
77
  tab1, tab2 = st.tabs(['Data Export', 'Contest Sims'])
78
  with tab1:
@@ -82,7 +91,7 @@ with tab1:
82
  st.cache_data.clear()
83
  for key in st.session_state.keys():
84
  del st.session_state[key]
85
- DK_seed, FD_seed, dk_raw, fd_raw = init_baselines()
86
 
87
  slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Other Main Slate'))
88
  site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'))
@@ -91,74 +100,73 @@ with tab1:
91
 
92
  team_var1 = st.radio("Do you want a frame with specific teams?", ('Full Slate', 'Specific Teams'), key='team_var1')
93
  if team_var1 == 'Specific Teams':
94
- team_var2 = st.multiselect('Which teams do you want?', options = DK_seed['Team'].unique())
95
  elif team_var1 == 'Full Slate':
96
- team_var2 = DK_seed.Team.values.tolist()
97
 
98
  stack_var1 = st.radio("Do you want a frame with specific stack sizes?", ('Full Slate', 'Specific Stack Sizes'), key='stack_var1')
99
  if stack_var1 == 'Specific Stack Sizes':
100
- stack_var2 = st.multiselect('Which stack sizes do you want?', options = DK_seed['Team_count'].unique())
101
  elif stack_var1 == 'Full Slate':
102
- stack_var2 = DK_seed.Team_count.values.tolist()
103
 
104
  elif site_var1 == 'Fanduel':
105
  raw_baselines = fd_raw
106
 
107
  team_var1 = st.radio("Do you want a frame with specific teams?", ('Full Slate', 'Specific Teams'), key='team_var1')
108
  if team_var1 == 'Specific Teams':
109
- team_var2 = st.multiselect('Which teams do you want?', options = FD_seed['Team'].unique())
110
  elif team_var1 == 'Full Slate':
111
- team_var2 = FD_seed.Team.values.tolist()
112
 
113
  stack_var1 = st.radio("Do you want a frame with specific stack sizes?", ('Full Slate', 'Specific Stack Sizes'), key='stack_var1')
114
  if stack_var1 == 'Specific Stack Sizes':
115
- stack_var2 = st.multiselect('Which stack sizes do you want?', options = FD_seed['Team_count'].unique())
116
  elif stack_var1 == 'Full Slate':
117
- stack_var2 = FD_seed.Team_count.values.tolist()
118
 
119
-
120
-
121
-
122
-
123
  with col2:
124
- if site_var1 == 'Draftkings':
125
- DK_seed_parse = DK_seed[DK_seed['Team'].isin(team_var2)]
126
- DK_seed_parse = DK_seed_parse[DK_seed_parse['Team_count'].isin(stack_var2)]
127
- st.session_state.data_export_display = DK_seed_parse.head(1000)
128
- st.session_state.data_export = DK_seed_parse
129
- st.session_state.data_export_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.data_export.iloc[:,0:9].values, return_counts=True)),
130
- columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
131
- st.session_state.data_export_freq['Freq'] = st.session_state.data_export_freq['Freq'].astype(int)
132
- st.session_state.data_export_freq['Exposure'] = st.session_state.data_export_freq['Freq']/(len(DK_seed_parse['Team']))
133
-
134
- if 'data_export' in st.session_state:
135
- st.download_button(
136
- label="Export optimals set",
137
- data=st.session_state.data_export.to_csv().encode('utf-8'),
138
- file_name='MLB_optimals_export.csv',
139
- mime='text/csv',
140
- )
141
- st.dataframe(st.session_state.data_export_display.style.format(precision=2), height=500, use_container_width=True)
142
- st.dataframe(st.session_state.data_export_freq.style.format(percentages_format, precision=2), height=500, use_container_width=True)
143
- elif site_var1 == 'Fanduel':
144
- FD_seed_parse = FD_seed[FD_seed['Team'].isin(team_var2)]
145
- FD_seed_parse = FD_seed_parse[FD_seed_parse['Team_count'].isin(stack_var2)]
146
- st.session_state.data_export_display = FD_seed_parse.head(1000)
147
- st.session_state.data_export = FD_seed_parse
148
- st.session_state.data_export_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.data_export.iloc[:,0:8].values, return_counts=True)),
149
- columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
150
- st.session_state.data_export_freq['Freq'] = st.session_state.data_export_freq['Freq'].astype(int)
151
- st.session_state.data_export_freq['Exposure'] = st.session_state.data_export_freq['Freq']/(len(FD_seed_parse['Team']))
152
-
153
- if 'data_export' in st.session_state:
154
- st.download_button(
155
- label="Export optimals set",
156
- data=st.session_state.data_export.to_csv().encode('utf-8'),
157
- file_name='MLB_optimals_export.csv',
158
- mime='text/csv',
159
- )
160
- st.dataframe(st.session_state.data_export_display.style.format(precision=2), height=500, use_container_width=True)
161
- st.dataframe(st.session_state.data_export_freq.style.format(percentages_format, precision=2), height=500, use_container_width=True)
 
 
 
162
 
163
  with tab2:
164
  col1, col2 = st.columns([1, 7])
 
46
  @st.cache_data(ttl = 600)
47
  def init_baselines():
48
  sh = gcservice_account.open_by_url(MLB_Data)
 
 
 
 
 
 
 
 
 
 
 
49
 
50
  worksheet = sh.worksheet('DK_Projections')
51
  load_display = pd.DataFrame(worksheet.get_all_records())
 
59
 
60
  fd_raw = load_display.dropna(subset=['Median'])
61
 
62
+ return dk_raw, fd_raw
63
+
64
+ @st.cache_data(ttl = 600)
65
+ def init_DK_seed_frame():
66
+ collection = db["DK_MLB_seed_frame"]
67
+ cursor = collection.find()
68
+
69
+ raw_display = pd.DataFrame(list(cursor))
70
+ DK_seed = raw_display[['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'salary', 'proj']]
71
+
72
+ return DK_seed
73
+
74
+ @st.cache_data(ttl = 600)
75
+ def init_FD_seed_frame():
76
+ collection = db["FD_MLB_seed_frame"]
77
+ cursor = collection.find()
78
+
79
+ raw_display = pd.DataFrame(list(cursor))
80
+ FD_seed = raw_display[['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'Team', 'Team_count', 'Secondary', 'Secondary_count', 'salary', 'proj']]
81
+
82
+ return FD_seed
83
 
84
+ dk_raw, fd_raw = init_baselines()
85
 
86
  tab1, tab2 = st.tabs(['Data Export', 'Contest Sims'])
87
  with tab1:
 
91
  st.cache_data.clear()
92
  for key in st.session_state.keys():
93
  del st.session_state[key]
94
+ dk_raw, fd_raw = init_baselines()
95
 
96
  slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Other Main Slate'))
97
  site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'))
 
100
 
101
  team_var1 = st.radio("Do you want a frame with specific teams?", ('Full Slate', 'Specific Teams'), key='team_var1')
102
  if team_var1 == 'Specific Teams':
103
+ team_var2 = st.multiselect('Which teams do you want?', options = dk_raw['Team'].unique())
104
  elif team_var1 == 'Full Slate':
105
+ team_var2 = dk_raw.Team.values.tolist()
106
 
107
  stack_var1 = st.radio("Do you want a frame with specific stack sizes?", ('Full Slate', 'Specific Stack Sizes'), key='stack_var1')
108
  if stack_var1 == 'Specific Stack Sizes':
109
+ stack_var2 = st.multiselect('Which stack sizes do you want?', options = [5, 4, 3, 2, 1, 0])
110
  elif stack_var1 == 'Full Slate':
111
+ stack_var2 = [5, 4, 3, 2, 1, 0]
112
 
113
  elif site_var1 == 'Fanduel':
114
  raw_baselines = fd_raw
115
 
116
  team_var1 = st.radio("Do you want a frame with specific teams?", ('Full Slate', 'Specific Teams'), key='team_var1')
117
  if team_var1 == 'Specific Teams':
118
+ team_var2 = st.multiselect('Which teams do you want?', options = fd_raw['Team'].unique())
119
  elif team_var1 == 'Full Slate':
120
+ team_var2 = fd_raw.Team.values.tolist()
121
 
122
  stack_var1 = st.radio("Do you want a frame with specific stack sizes?", ('Full Slate', 'Specific Stack Sizes'), key='stack_var1')
123
  if stack_var1 == 'Specific Stack Sizes':
124
+ stack_var2 = st.multiselect('Which stack sizes do you want?', options = [4, 3, 2, 1, 0])
125
  elif stack_var1 == 'Full Slate':
126
+ stack_var2 = [4, 3, 2, 1, 0]
127
 
 
 
 
 
128
  with col2:
129
+ if st.button("Load Seed Frame", key='seed_frame_load'):
130
+ if site_var1 == 'Draftkings':
131
+ DK_seed = init_DK_seed_frame()
132
+ DK_seed_parse = DK_seed[DK_seed['Team'].isin(team_var2)]
133
+ DK_seed_parse = DK_seed_parse[DK_seed_parse['Team_count'].isin(stack_var2)]
134
+ st.session_state.data_export_display = DK_seed_parse.head(1000)
135
+ st.session_state.data_export = DK_seed_parse
136
+ st.session_state.data_export_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.data_export.iloc[:,0:9].values, return_counts=True)),
137
+ columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
138
+ st.session_state.data_export_freq['Freq'] = st.session_state.data_export_freq['Freq'].astype(int)
139
+ st.session_state.data_export_freq['Exposure'] = st.session_state.data_export_freq['Freq']/(len(DK_seed_parse['Team']))
140
+
141
+ if 'data_export' in st.session_state:
142
+ st.download_button(
143
+ label="Export optimals set",
144
+ data=st.session_state.data_export.to_csv().encode('utf-8'),
145
+ file_name='MLB_optimals_export.csv',
146
+ mime='text/csv',
147
+ )
148
+ st.dataframe(st.session_state.data_export_display.style.format(precision=2), height=500, use_container_width=True)
149
+ st.dataframe(st.session_state.data_export_freq.style.format(percentages_format, precision=2), height=500, use_container_width=True)
150
+ elif site_var1 == 'Fanduel':
151
+ FD_seed = init_DK_seed_frame()
152
+ FD_seed_parse = FD_seed[FD_seed['Team'].isin(team_var2)]
153
+ FD_seed_parse = FD_seed_parse[FD_seed_parse['Team_count'].isin(stack_var2)]
154
+ st.session_state.data_export_display = FD_seed_parse.head(1000)
155
+ st.session_state.data_export = FD_seed_parse
156
+ st.session_state.data_export_freq = pd.DataFrame(np.column_stack(np.unique(st.session_state.data_export.iloc[:,0:8].values, return_counts=True)),
157
+ columns=['Player','Freq']).sort_values('Freq', ascending=False).reset_index(drop=True)
158
+ st.session_state.data_export_freq['Freq'] = st.session_state.data_export_freq['Freq'].astype(int)
159
+ st.session_state.data_export_freq['Exposure'] = st.session_state.data_export_freq['Freq']/(len(FD_seed_parse['Team']))
160
+
161
+ if 'data_export' in st.session_state:
162
+ st.download_button(
163
+ label="Export optimals set",
164
+ data=st.session_state.data_export.to_csv().encode('utf-8'),
165
+ file_name='MLB_optimals_export.csv',
166
+ mime='text/csv',
167
+ )
168
+ st.dataframe(st.session_state.data_export_display.style.format(precision=2), height=500, use_container_width=True)
169
+ st.dataframe(st.session_state.data_export_freq.style.format(percentages_format, precision=2), height=500, use_container_width=True)
170
 
171
  with tab2:
172
  col1, col2 = st.columns([1, 7])