James McCool commited on
Commit
4b70cc2
·
1 Parent(s): 71875ff

Enhance team data analysis in app.py by adding opponent selection and refining statistical calculations. Introduced a select box for choosing opponents, updated the init_team_data function to include opponent data in performance metrics, and streamlined calculations for kills, deaths, assists, and total CS. This improves the depth and usability of team performance evaluations.

Browse files
Files changed (1) hide show
  1. app.py +173 -156
app.py CHANGED
@@ -64,6 +64,13 @@ with st.sidebar:
64
  index=team_names.index("T1") if "T1" in team_names else 0
65
  )
66
 
 
 
 
 
 
 
 
67
  st.subheader("Prediction Settings")
68
  win_loss = st.selectbox(
69
  "Select Win/Loss",
@@ -96,7 +103,7 @@ with st.sidebar:
96
  )
97
 
98
  @st.cache_data(ttl = 60)
99
- def init_team_data(team, win_loss, kill_prediction, death_prediction, start_date, end_date):
100
 
101
  # Convert date objects to datetime strings in the correct format
102
  start_datetime = datetime.combine(start_date, datetime.min.time()).strftime("%Y-%m-%d %H:%M:%S")
@@ -104,191 +111,201 @@ def init_team_data(team, win_loss, kill_prediction, death_prediction, start_date
104
 
105
  collection = db["gamelogs"]
106
  cursor = collection.find({"teamname": team, "date": {"$gte": start_datetime, "$lte": end_datetime}})
107
-
108
  raw_display = pd.DataFrame(list(cursor))
109
- calc_columns = ['kills', 'deaths', 'assists', 'total_cs']
110
- league_win_stats = {}
111
- league_loss_stats = {}
112
- league_pos_win_stats = {}
113
- league_pos_loss_stats = {}
114
- Opponent_win_allowed_stats = {}
115
- Opponent_loss_allowed_stats = {}
116
- Opponent_pos_win_allowed_stats = {}
117
- Opponent_pos_loss_allowed_stats = {}
118
- playername_win_stats = {}
119
- playername_loss_stats = {}
120
- teamname_win_stats = {}
121
- teamname_loss_stats = {}
122
-
123
- for stats in calc_columns:
124
- league_win_stats[stats] = raw_display[(raw_display['result'] == 1) & (raw_display['position'] != 'team')].groupby('league')[stats].mean().to_dict()
125
- league_loss_stats[stats] = raw_display[(raw_display['result'] == 0) & (raw_display['position'] != 'team')].groupby('league')[stats].mean().to_dict()
126
- Opponent_win_allowed_stats[stats] = raw_display[(raw_display['result'] == 1) & (raw_display['position'] != 'team')].groupby('Opponent')[stats].mean().to_dict()
127
- Opponent_loss_allowed_stats[stats] = raw_display[(raw_display['result'] == 0) & (raw_display['position'] != 'team')].groupby('Opponent')[stats].mean().to_dict()
128
-
129
- for stats in calc_columns:
130
- league_pos_win_stats[stats] = {
131
- league: group.groupby('position')[stats].mean().to_dict()
132
- for league, group in raw_display[raw_display['result'] == 1].groupby('league')
133
- }
134
- league_pos_loss_stats[stats] = {
135
- league: group.groupby('position')[stats].mean().to_dict()
136
- for league, group in raw_display[raw_display['result'] == 0].groupby('league')
137
- }
138
-
139
- Opponent_pos_win_allowed_stats[stats] = {
140
- opponent: group.groupby('position')[stats].mean().to_dict()
141
- for opponent, group in raw_display[raw_display['result'] == 1].groupby('Opponent')
142
- }
143
- Opponent_pos_loss_allowed_stats[stats] = {
144
- opponent: group.groupby('position')[stats].mean().to_dict()
145
- for opponent, group in raw_display[raw_display['result'] == 0].groupby('Opponent')
146
- }
147
-
148
- for stats in calc_columns:
149
- playername_win_stats[stats] = raw_display[raw_display['result'] == 1].groupby(['playername'])[stats].mean().to_dict()
150
- playername_loss_stats[stats] = raw_display[raw_display['result'] == 0].groupby(['playername'])[stats].mean().to_dict()
151
- teamname_win_stats[stats] = raw_display[(raw_display['result'] == 1) & (raw_display['position'] == 'team')].groupby(['teamname'])[stats].mean().to_dict()
152
- teamname_loss_stats[stats] = raw_display[(raw_display['result'] == 0) & (raw_display['position'] == 'team')].groupby(['teamname'])[stats].mean().to_dict()
153
-
154
- for stat in calc_columns:
155
-
156
- column_name = f'league_avg_{stat}_win'
157
- raw_display[column_name] = raw_display.apply(
158
- lambda row: league_win_stats[stat].get(row['league'], 0),
159
- axis=1
160
- )
161
-
162
- column_name = f'league_avg_{stat}_loss'
163
- raw_display[column_name] = raw_display.apply(
164
- lambda row: league_loss_stats[stat].get(row['league'], 0),
165
- axis=1
166
- )
167
-
168
- column_name = f'Opponent_avg_{stat}_allowed_win'
169
- raw_display[column_name] = raw_display.apply(
170
- lambda row: Opponent_win_allowed_stats[stat].get(row['Opponent'], 0),
171
- axis=1
172
- )
173
-
174
- column_name = f'Opponent_avg_{stat}_allowed_loss'
175
- raw_display[column_name] = raw_display.apply(
176
- lambda row: Opponent_loss_allowed_stats[stat].get(row['Opponent'], 0),
177
- axis=1
178
- )
179
-
180
- column_name = f'league_pos_avg_{stat}_win'
181
- raw_display[column_name] = raw_display.apply(
182
- lambda row: league_pos_win_stats[stat].get(row['league'], {}).get(row['position'], 0),
183
- axis=1
184
- )
185
-
186
- column_name = f'league_pos_avg_{stat}_loss'
187
- raw_display[column_name] = raw_display.apply(
188
- lambda row: league_pos_loss_stats[stat].get(row['league'], {}).get(row['position'], 0),
189
- axis=1
190
- )
191
-
192
- column_name = f'Opponent_pos_avg_{stat}_allowed_win'
193
- raw_display[column_name] = raw_display.apply(
194
- lambda row: Opponent_pos_win_allowed_stats[stat].get(row['Opponent'], {}).get(row['position'], 0),
195
- axis=1
196
- )
197
-
198
- column_name = f'Opponent_pos_avg_{stat}_allowed_loss'
199
- raw_display[column_name] = raw_display.apply(
200
- lambda row: Opponent_pos_loss_allowed_stats[stat].get(row['Opponent'], {}).get(row['position'], 0),
201
- axis=1
202
- )
203
-
204
- column_name = f'playername_avg_{stat}_win'
205
- raw_display[column_name] = raw_display.apply(
206
- lambda row: playername_win_stats[stat].get(row['playername'], 0),
207
- axis=1
208
- )
209
-
210
- column_name = f'playername_avg_{stat}_loss'
211
- raw_display[column_name] = raw_display.apply(
212
- lambda row: playername_loss_stats[stat].get(row['playername'], 0),
213
- axis=1
214
- )
215
 
216
- column_name = f'teamname_avg_{stat}_win'
217
- raw_display[column_name] = raw_display.apply(
218
- lambda row: teamname_win_stats[stat].get(row['teamname'], 0),
219
- axis=1
220
- )
221
-
222
- column_name = f'teamname_avg_{stat}_loss'
223
- raw_display[column_name] = raw_display.apply(
224
- lambda row: teamname_loss_stats[stat].get(row['teamname'], 0),
225
- axis=1
226
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
 
228
- raw_display['overall_win_kills_boost'] = raw_display['Opponent_avg_kills_allowed_win'] / raw_display['league_avg_kills_win']
229
- raw_display['overall_win_deaths_boost'] = raw_display['Opponent_avg_deaths_allowed_win'] / raw_display['league_avg_deaths_win']
230
- raw_display['overall_win_assists_boost'] = raw_display['Opponent_avg_assists_allowed_win'] / raw_display['league_avg_assists_win']
231
- raw_display['overall_win_total_cs_boost'] = raw_display['Opponent_avg_total_cs_allowed_win'] / raw_display['league_avg_total_cs_win']
232
- raw_display['overall_loss_kills_boost'] = raw_display['Opponent_avg_kills_allowed_loss'] / raw_display['league_avg_kills_loss']
233
- raw_display['overall_loss_deaths_boost'] = raw_display['Opponent_avg_deaths_allowed_loss'] / raw_display['league_avg_deaths_loss']
234
- raw_display['overall_loss_assists_boost'] = raw_display['Opponent_avg_assists_allowed_loss'] / raw_display['league_avg_assists_loss']
235
- raw_display['overall_loss_total_cs_boost'] = raw_display['Opponent_avg_total_cs_allowed_loss'] / raw_display['league_avg_total_cs_loss']
236
-
237
- raw_display['overall_win_kills_boost_pos'] = raw_display['Opponent_pos_avg_kills_allowed_win'] / raw_display['league_pos_avg_kills_win']
238
- raw_display['overall_win_deaths_boost_pos'] = raw_display['Opponent_pos_avg_deaths_allowed_win'] / raw_display['league_pos_avg_deaths_win']
239
- raw_display['overall_win_assists_boost_pos'] = raw_display['Opponent_pos_avg_assists_allowed_win'] / raw_display['league_pos_avg_assists_win']
240
- raw_display['overall_win_total_cs_boost_pos'] = raw_display['Opponent_pos_avg_total_cs_allowed_win'] / raw_display['league_pos_avg_total_cs_win']
241
- raw_display['overall_loss_kills_boost_pos'] = raw_display['Opponent_pos_avg_kills_allowed_loss'] / raw_display['league_pos_avg_kills_loss']
242
- raw_display['overall_loss_deaths_boost_pos'] = raw_display['Opponent_pos_avg_deaths_allowed_loss'] / raw_display['league_pos_avg_deaths_loss']
243
- raw_display['overall_loss_assists_boost_pos'] = raw_display['Opponent_pos_avg_assists_allowed_loss'] / raw_display['league_pos_avg_assists_loss']
244
- raw_display['overall_loss_total_cs_boost_pos'] = raw_display['Opponent_pos_avg_total_cs_allowed_loss'] / raw_display['league_pos_avg_total_cs_loss']
245
-
246
- raw_display['playername_avg_kill_share_win'] = raw_display['playername_avg_kills_win'] / raw_display['teamname_avg_kills_win']
247
- raw_display['playername_avg_death_share_win'] = raw_display['playername_avg_deaths_win'] / raw_display['teamname_avg_deaths_win']
248
- raw_display['playername_avg_assist_share_win'] = raw_display['playername_avg_assists_win'] / raw_display['teamname_avg_kills_win']
249
- raw_display['playername_avg_cs_share_win'] = raw_display['playername_avg_total_cs_win'] / raw_display['teamname_avg_total_cs_win']
250
- raw_display['playername_avg_kill_share_loss'] = raw_display['playername_avg_kills_loss'] / raw_display['teamname_avg_kills_loss']
251
- raw_display['playername_avg_death_share_loss'] = raw_display['playername_avg_deaths_loss'] / raw_display['teamname_avg_deaths_loss']
252
- raw_display['playername_avg_assist_share_loss'] = raw_display['playername_avg_assists_loss'] / raw_display['teamname_avg_kills_loss']
253
- raw_display['playername_avg_cs_share_loss'] = raw_display['playername_avg_total_cs_loss'] / raw_display['teamname_avg_total_cs_loss']
254
  if kill_prediction > 0:
255
- raw_display = raw_display[['playername', 'teamname', 'playername_avg_kill_share_win', 'playername_avg_death_share_win','playername_avg_assist_share_win',
256
  'playername_avg_total_cs_win', 'playername_avg_kill_share_loss', 'playername_avg_death_share_loss', 'playername_avg_assist_share_loss', 'playername_avg_total_cs_loss']]
257
- raw_display = raw_display.rename(columns = {'playername_avg_kill_share_win': 'wKill%', 'playername_avg_death_share_win': 'wDeath%', 'playername_avg_assist_share_win': 'wAssist%',
258
  'playername_avg_total_cs_win': 'wCS', 'playername_avg_kill_share_loss': 'lKill%', 'playername_avg_death_share_loss': 'lDeath%',
259
  'playername_avg_assist_share_loss': 'lAssist%', 'playername_avg_total_cs_loss': 'lCS'})
260
- team_data = raw_display.drop_duplicates(subset = ['playername'])
261
 
262
  if win_loss == "Win":
263
  team_data['Kill_Proj'] = team_data['wKill%'] * kill_prediction
264
  team_data['Death_Proj'] = team_data['wDeath%'] * death_prediction
265
  team_data['Assist_Proj'] = team_data['wAssist%'] * kill_prediction
266
- team_data = team_data[['playername', 'teamname', 'wKill%', 'wDeath%', 'wAssist%', 'wCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
267
  else:
268
  team_data['Kill_Proj'] = team_data['lKill%'] * kill_prediction
269
  team_data['Death_Proj'] = team_data['lDeath%'] * death_prediction
270
  team_data['Assist_Proj'] = team_data['lAssist%'] * kill_prediction
271
- team_data = team_data[['playername', 'teamname', 'lKill%', 'lDeath%', 'lAssist%', 'lCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
272
  else:
273
- raw_display = raw_display[['playername', 'teamname', 'playername_avg_kills_win', 'playername_avg_deaths_win', 'playername_avg_assists_win', 'playername_avg_total_cs_win',
274
  'playername_avg_kills_loss', 'playername_avg_deaths_loss', 'playername_avg_assists_loss', 'playername_avg_total_cs_loss']]
275
- raw_display = raw_display.rename(columns = {'playername_avg_kills_win': 'wKill%', 'playername_avg_deaths_win': 'wDeath%', 'playername_avg_assists_win': 'wAssist%',
276
  'playername_avg_total_cs_win': 'wCS', 'playername_avg_kills_loss': 'lKill%', 'playername_avg_deaths_loss': 'lDeath%',
277
  'playername_avg_assists_loss': 'lAssist%', 'playername_avg_total_cs_loss': 'lCS'})
278
- team_data = raw_display.drop_duplicates(subset = ['playername'])
279
 
280
  if win_loss == "Win":
281
  team_data['Kill_Proj'] = team_data['wKill%']
282
  team_data['Death_Proj'] = team_data['wDeath%']
283
  team_data['Assist_Proj'] = team_data['wAssist%']
284
- team_data = team_data[['playername', 'teamname', 'wKill%', 'wDeath%', 'wAssist%', 'wCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
285
  else:
286
  team_data['Kill_Proj'] = team_data['lKill%']
287
  team_data['Death_Proj'] = team_data['lDeath%']
288
  team_data['Assist_Proj'] = team_data['lAssist%']
289
- team_data = team_data[['playername', 'teamname', 'lKill%', 'lDeath%', 'lAssist%', 'lCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
290
 
291
  return team_data.dropna().reset_index(drop=True)
292
 
293
  if st.button("Run"):
294
- st.dataframe(init_team_data(selected_team, win_loss, kill_prediction, death_prediction, start_date, end_date).style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(display_formats, precision=2), use_container_width = True)
 
64
  index=team_names.index("T1") if "T1" in team_names else 0
65
  )
66
 
67
+ selected_opponent = st.selectbox(
68
+ "Select Opponent",
69
+ options=team_names,
70
+ index=team_names.index("T1") if "T1" in team_names else 0
71
+ )
72
+
73
+
74
  st.subheader("Prediction Settings")
75
  win_loss = st.selectbox(
76
  "Select Win/Loss",
 
103
  )
104
 
105
  @st.cache_data(ttl = 60)
106
+ def init_team_data(team, opponent, win_loss, kill_prediction, death_prediction, start_date, end_date):
107
 
108
  # Convert date objects to datetime strings in the correct format
109
  start_datetime = datetime.combine(start_date, datetime.min.time()).strftime("%Y-%m-%d %H:%M:%S")
 
111
 
112
  collection = db["gamelogs"]
113
  cursor = collection.find({"teamname": team, "date": {"$gte": start_datetime, "$lte": end_datetime}})
 
114
  raw_display = pd.DataFrame(list(cursor))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
+ cursor = collection.find({"Opponent": opponent, "date": {"$gte": start_datetime, "$lte": end_datetime}})
117
+ raw_opponent = pd.DataFrame(list(cursor))
118
+
119
+ for tables in [raw_display, raw_opponent]:
120
+ calc_columns = ['kills', 'deaths', 'assists', 'total_cs']
121
+ league_win_stats = {}
122
+ league_loss_stats = {}
123
+ league_pos_win_stats = {}
124
+ league_pos_loss_stats = {}
125
+ Opponent_win_allowed_stats = {}
126
+ Opponent_loss_allowed_stats = {}
127
+ Opponent_pos_win_allowed_stats = {}
128
+ Opponent_pos_loss_allowed_stats = {}
129
+ playername_win_stats = {}
130
+ playername_loss_stats = {}
131
+ teamname_win_stats = {}
132
+ teamname_loss_stats = {}
133
+
134
+ for stats in calc_columns:
135
+ league_win_stats[stats] = tables[(tables['result'] == 1) & (tables['position'] != 'team')].groupby('league')[stats].mean().to_dict()
136
+ league_loss_stats[stats] = tables[(tables['result'] == 0) & (tables['position'] != 'team')].groupby('league')[stats].mean().to_dict()
137
+ Opponent_win_allowed_stats[stats] = tables[(tables['result'] == 1) & (tables['position'] != 'team')].groupby('Opponent')[stats].mean().to_dict()
138
+ Opponent_loss_allowed_stats[stats] = tables[(tables['result'] == 0) & (tables['position'] != 'team')].groupby('Opponent')[stats].mean().to_dict()
139
+
140
+ for stats in calc_columns:
141
+ league_pos_win_stats[stats] = {
142
+ league: group.groupby('position')[stats].mean().to_dict()
143
+ for league, group in tables[tables['result'] == 1].groupby('league')
144
+ }
145
+ league_pos_loss_stats[stats] = {
146
+ league: group.groupby('position')[stats].mean().to_dict()
147
+ for league, group in tables[tables['result'] == 0].groupby('league')
148
+ }
149
+
150
+ Opponent_pos_win_allowed_stats[stats] = {
151
+ opponent: group.groupby('position')[stats].mean().to_dict()
152
+ for opponent, group in tables[tables['result'] == 1].groupby('Opponent')
153
+ }
154
+ Opponent_pos_loss_allowed_stats[stats] = {
155
+ opponent: group.groupby('position')[stats].mean().to_dict()
156
+ for opponent, group in tables[tables['result'] == 0].groupby('Opponent')
157
+ }
158
+
159
+ for stats in calc_columns:
160
+ playername_win_stats[stats] = tables[tables['result'] == 1].groupby(['playername'])[stats].mean().to_dict()
161
+ playername_loss_stats[stats] = tables[tables['result'] == 0].groupby(['playername'])[stats].mean().to_dict()
162
+ teamname_win_stats[stats] = tables[(tables['result'] == 1) & (tables['position'] == 'team')].groupby(['teamname'])[stats].mean().to_dict()
163
+ teamname_loss_stats[stats] = tables[(tables['result'] == 0) & (tables['position'] == 'team')].groupby(['teamname'])[stats].mean().to_dict()
164
+
165
+ for stat in calc_columns:
166
+
167
+ column_name = f'league_avg_{stat}_win'
168
+ tables[column_name] = tables.apply(
169
+ lambda row: league_win_stats[stat].get(row['league'], 0),
170
+ axis=1
171
+ )
172
+
173
+ column_name = f'league_avg_{stat}_loss'
174
+ tables[column_name] = tables.apply(
175
+ lambda row: league_loss_stats[stat].get(row['league'], 0),
176
+ axis=1
177
+ )
178
+
179
+ column_name = f'Opponent_avg_{stat}_allowed_win'
180
+ tables[column_name] = tables.apply(
181
+ lambda row: Opponent_win_allowed_stats[stat].get(row['Opponent'], 0),
182
+ axis=1
183
+ )
184
+
185
+ column_name = f'Opponent_avg_{stat}_allowed_loss'
186
+ tables[column_name] = tables.apply(
187
+ lambda row: Opponent_loss_allowed_stats[stat].get(row['Opponent'], 0),
188
+ axis=1
189
+ )
190
+
191
+ column_name = f'league_pos_avg_{stat}_win'
192
+ tables[column_name] = tables.apply(
193
+ lambda row: league_pos_win_stats[stat].get(row['league'], {}).get(row['position'], 0),
194
+ axis=1
195
+ )
196
+
197
+ column_name = f'league_pos_avg_{stat}_loss'
198
+ tables[column_name] = tables.apply(
199
+ lambda row: league_pos_loss_stats[stat].get(row['league'], {}).get(row['position'], 0),
200
+ axis=1
201
+ )
202
+
203
+ column_name = f'Opponent_pos_avg_{stat}_allowed_win'
204
+ tables[column_name] = tables.apply(
205
+ lambda row: Opponent_pos_win_allowed_stats[stat].get(row['Opponent'], {}).get(row['position'], 0),
206
+ axis=1
207
+ )
208
+
209
+ column_name = f'Opponent_pos_avg_{stat}_allowed_loss'
210
+ tables[column_name] = tables.apply(
211
+ lambda row: Opponent_pos_loss_allowed_stats[stat].get(row['Opponent'], {}).get(row['position'], 0),
212
+ axis=1
213
+ )
214
+
215
+ column_name = f'playername_avg_{stat}_win'
216
+ tables[column_name] = tables.apply(
217
+ lambda row: playername_win_stats[stat].get(row['playername'], 0),
218
+ axis=1
219
+ )
220
+
221
+ column_name = f'playername_avg_{stat}_loss'
222
+ tables[column_name] = tables.apply(
223
+ lambda row: playername_loss_stats[stat].get(row['playername'], 0),
224
+ axis=1
225
+ )
226
+
227
+ column_name = f'teamname_avg_{stat}_win'
228
+ tables[column_name] = tables.apply(
229
+ lambda row: teamname_win_stats[stat].get(row['teamname'], 0),
230
+ axis=1
231
+ )
232
+
233
+ column_name = f'teamname_avg_{stat}_loss'
234
+ tables[column_name] = tables.apply(
235
+ lambda row: teamname_loss_stats[stat].get(row['teamname'], 0),
236
+ axis=1
237
+ )
238
+
239
+ tables['overall_win_kills_boost'] = tables['Opponent_avg_kills_allowed_win'] / tables['league_avg_kills_win']
240
+ tables['overall_win_deaths_boost'] = tables['Opponent_avg_deaths_allowed_win'] / tables['league_avg_deaths_win']
241
+ tables['overall_win_assists_boost'] = tables['Opponent_avg_assists_allowed_win'] / tables['league_avg_assists_win']
242
+ tables['overall_win_total_cs_boost'] = tables['Opponent_avg_total_cs_allowed_win'] / tables['league_avg_total_cs_win']
243
+ tables['overall_loss_kills_boost'] = tables['Opponent_avg_kills_allowed_loss'] / tables['league_avg_kills_loss']
244
+ tables['overall_loss_deaths_boost'] = tables['Opponent_avg_deaths_allowed_loss'] / tables['league_avg_deaths_loss']
245
+ tables['overall_loss_assists_boost'] = tables['Opponent_avg_assists_allowed_loss'] / tables['league_avg_assists_loss']
246
+ tables['overall_loss_total_cs_boost'] = tables['Opponent_avg_total_cs_allowed_loss'] / tables['league_avg_total_cs_loss']
247
+
248
+ tables['overall_win_kills_boost_pos'] = tables['Opponent_pos_avg_kills_allowed_win'] / tables['league_pos_avg_kills_win']
249
+ tables['overall_win_deaths_boost_pos'] = tables['Opponent_pos_avg_deaths_allowed_win'] / tables['league_pos_avg_deaths_win']
250
+ tables['overall_win_assists_boost_pos'] = tables['Opponent_pos_avg_assists_allowed_win'] / tables['league_pos_avg_assists_win']
251
+ tables['overall_win_total_cs_boost_pos'] = tables['Opponent_pos_avg_total_cs_allowed_win'] / tables['league_pos_avg_total_cs_win']
252
+ tables['overall_loss_kills_boost_pos'] = tables['Opponent_pos_avg_kills_allowed_loss'] / tables['league_pos_avg_kills_loss']
253
+ tables['overall_loss_deaths_boost_pos'] = tables['Opponent_pos_avg_deaths_allowed_loss'] / tables['league_pos_avg_deaths_loss']
254
+ tables['overall_loss_assists_boost_pos'] = tables['Opponent_pos_avg_assists_allowed_loss'] / tables['league_pos_avg_assists_loss']
255
+ tables['overall_loss_total_cs_boost_pos'] = tables['Opponent_pos_avg_total_cs_allowed_loss'] / tables['league_pos_avg_total_cs_loss']
256
+
257
+ tables['playername_avg_kill_share_win'] = tables['playername_avg_kills_win'] / tables['teamname_avg_kills_win']
258
+ tables['playername_avg_death_share_win'] = tables['playername_avg_deaths_win'] / tables['teamname_avg_deaths_win']
259
+ tables['playername_avg_assist_share_win'] = tables['playername_avg_assists_win'] / tables['teamname_avg_kills_win']
260
+ tables['playername_avg_cs_share_win'] = tables['playername_avg_total_cs_win'] / tables['teamname_avg_total_cs_win']
261
+ tables['playername_avg_kill_share_loss'] = tables['playername_avg_kills_loss'] / tables['teamname_avg_kills_loss']
262
+ tables['playername_avg_death_share_loss'] = tables['playername_avg_deaths_loss'] / tables['teamname_avg_deaths_loss']
263
+ tables['playername_avg_assist_share_loss'] = tables['playername_avg_assists_loss'] / tables['teamname_avg_kills_loss']
264
+ tables['playername_avg_cs_share_loss'] = tables['playername_avg_total_cs_loss'] / tables['teamname_avg_total_cs_loss']
265
+
266
+ if tables == raw_display:
267
+ player_tables = tables
268
+ else:
269
+ opp_tables = tables
270
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
  if kill_prediction > 0:
272
+ player_tables = player_tables[['playername', 'teamname', 'position', 'playername_avg_kill_share_win', 'playername_avg_death_share_win','playername_avg_assist_share_win',
273
  'playername_avg_total_cs_win', 'playername_avg_kill_share_loss', 'playername_avg_death_share_loss', 'playername_avg_assist_share_loss', 'playername_avg_total_cs_loss']]
274
+ player_tables = player_tables.rename(columns = {'playername_avg_kill_share_win': 'wKill%', 'playername_avg_death_share_win': 'wDeath%', 'playername_avg_assist_share_win': 'wAssist%',
275
  'playername_avg_total_cs_win': 'wCS', 'playername_avg_kill_share_loss': 'lKill%', 'playername_avg_death_share_loss': 'lDeath%',
276
  'playername_avg_assist_share_loss': 'lAssist%', 'playername_avg_total_cs_loss': 'lCS'})
277
+ team_data = player_tables.drop_duplicates(subset = ['playername'])
278
 
279
  if win_loss == "Win":
280
  team_data['Kill_Proj'] = team_data['wKill%'] * kill_prediction
281
  team_data['Death_Proj'] = team_data['wDeath%'] * death_prediction
282
  team_data['Assist_Proj'] = team_data['wAssist%'] * kill_prediction
283
+ team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'wCS']]
284
  else:
285
  team_data['Kill_Proj'] = team_data['lKill%'] * kill_prediction
286
  team_data['Death_Proj'] = team_data['lDeath%'] * death_prediction
287
  team_data['Assist_Proj'] = team_data['lAssist%'] * kill_prediction
288
+ team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'lCS']]
289
  else:
290
+ player_tables = player_tables[['playername', 'teamname', 'position', 'playername_avg_kills_win', 'playername_avg_deaths_win', 'playername_avg_assists_win', 'playername_avg_total_cs_win',
291
  'playername_avg_kills_loss', 'playername_avg_deaths_loss', 'playername_avg_assists_loss', 'playername_avg_total_cs_loss']]
292
+ player_tables = player_tables.rename(columns = {'playername_avg_kills_win': 'wKill%', 'playername_avg_deaths_win': 'wDeath%', 'playername_avg_assists_win': 'wAssist%',
293
  'playername_avg_total_cs_win': 'wCS', 'playername_avg_kills_loss': 'lKill%', 'playername_avg_deaths_loss': 'lDeath%',
294
  'playername_avg_assists_loss': 'lAssist%', 'playername_avg_total_cs_loss': 'lCS'})
295
+ team_data = player_tables.drop_duplicates(subset = ['playername'])
296
 
297
  if win_loss == "Win":
298
  team_data['Kill_Proj'] = team_data['wKill%']
299
  team_data['Death_Proj'] = team_data['wDeath%']
300
  team_data['Assist_Proj'] = team_data['wAssist%']
301
+ team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'wCS']]
302
  else:
303
  team_data['Kill_Proj'] = team_data['lKill%']
304
  team_data['Death_Proj'] = team_data['lDeath%']
305
  team_data['Assist_Proj'] = team_data['lAssist%']
306
+ team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'lCS']]
307
 
308
  return team_data.dropna().reset_index(drop=True)
309
 
310
  if st.button("Run"):
311
+ st.dataframe(init_team_data(selected_team, selected_opponent, win_loss, kill_prediction, death_prediction, start_date, end_date).style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(display_formats, precision=2), use_container_width = True)