James McCool commited on
Commit
cb5655c
·
1 Parent(s): 24a1053

Refactor kill and death prediction inputs in app.py. Introduced a selection box for users to choose between predicting kills/deaths or using averages, enhancing user experience. Updated input validation to ensure minimum values are set correctly, improving data integrity in team performance projections.

Browse files
Files changed (1) hide show
  1. app.py +51 -25
app.py CHANGED
@@ -71,20 +71,30 @@ with st.sidebar:
71
  index=0
72
  )
73
 
74
- kill_prediction = st.number_input(
75
- "Predicted Team Kills",
76
- min_value=0,
77
- max_value=100,
78
- value=20
79
- )
80
-
81
- death_prediction = st.number_input(
82
- "Predicted Team Deaths",
83
- min_value=0,
84
- max_value=100,
85
- value=5
86
  )
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  @st.cache_data(ttl = 60)
89
  def init_team_data(team, win_loss, kill_prediction, death_prediction, start_date, end_date):
90
 
@@ -241,20 +251,36 @@ def init_team_data(team, win_loss, kill_prediction, death_prediction, start_date
241
  raw_display['playername_avg_death_share_loss'] = raw_display['playername_avg_deaths_loss'] / raw_display['teamname_avg_deaths_loss']
242
  raw_display['playername_avg_assist_share_loss'] = raw_display['playername_avg_assists_loss'] / raw_display['teamname_avg_kills_loss']
243
  raw_display['playername_avg_cs_share_loss'] = raw_display['playername_avg_total_cs_loss'] / raw_display['teamname_avg_total_cs_loss']
244
- raw_display = raw_display[['playername', 'teamname', 'playername_avg_kill_share_win', 'playername_avg_death_share_win', 'playername_avg_assist_share_win', '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']]
245
- raw_display = raw_display.rename(columns = {'playername_avg_kill_share_win': 'wKill%', 'playername_avg_death_share_win': 'wDeath%', 'playername_avg_assist_share_win': 'wAssist%', 'playername_avg_total_cs_win': 'wCS', 'playername_avg_kill_share_loss': 'lKill%', 'playername_avg_death_share_loss': 'lDeath%', 'playername_avg_assist_share_loss': 'lAssist%', 'playername_avg_total_cs_loss': 'lCS'})
246
- team_data = raw_display.drop_duplicates(subset = ['playername'])
247
-
248
- if win_loss == "Win":
249
- team_data['Kill_Proj'] = team_data['wKill%'] * kill_prediction
250
- team_data['Death_Proj'] = team_data['wDeath%'] * death_prediction
251
- team_data['Assist_Proj'] = team_data['wAssist%'] * kill_prediction
252
- team_data = team_data[['playername', 'teamname', 'wKill%', 'wDeath%', 'wAssist%', 'wCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
 
 
 
 
 
 
253
  else:
254
- team_data['Kill_Proj'] = team_data['lKill%'] * kill_prediction
255
- team_data['Death_Proj'] = team_data['lDeath%'] * death_prediction
256
- team_data['Assist_Proj'] = team_data['lAssist%'] * kill_prediction
257
- team_data = team_data[['playername', 'teamname', 'lKill%', 'lDeath%', 'lAssist%', 'lCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
 
 
 
 
 
 
 
 
 
 
258
 
259
  return team_data.dropna().reset_index(drop=True)
260
 
 
71
  index=0
72
  )
73
 
74
+ game_settings = st.selectbox(
75
+ "Predict kills/deaths or use average?",
76
+ options=["Average", "Predict"],
77
+ index=0
 
 
 
 
 
 
 
 
78
  )
79
 
80
+ if game_settings == "Average":
81
+ kill_prediction = 0
82
+ death_prediction = 0
83
+ else:
84
+ kill_prediction = st.number_input(
85
+ "Predicted Team Kills",
86
+ min_value=1,
87
+ max_value=100,
88
+ value=20
89
+ )
90
+
91
+ death_prediction = st.number_input(
92
+ "Predicted Team Deaths",
93
+ min_value=1,
94
+ max_value=100,
95
+ value=5
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
 
 
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', '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']]
256
+ raw_display = raw_display.rename(columns = {'playername_avg_kill_share_win': 'wKill%', 'playername_avg_death_share_win': 'wDeath%', 'playername_avg_assist_share_win': 'wAssist%', 'playername_avg_total_cs_win': 'wCS', 'playername_avg_kill_share_loss': 'lKill%', 'playername_avg_death_share_loss': 'lDeath%', 'playername_avg_assist_share_loss': 'lAssist%', 'playername_avg_total_cs_loss': 'lCS'})
257
+ team_data = raw_display.drop_duplicates(subset = ['playername'])
258
+
259
+ if win_loss == "Win":
260
+ team_data['Kill_Proj'] = team_data['wKill%'] * kill_prediction
261
+ team_data['Death_Proj'] = team_data['wDeath%'] * death_prediction
262
+ team_data['Assist_Proj'] = team_data['wAssist%'] * kill_prediction
263
+ team_data = team_data[['playername', 'teamname', 'wKill%', 'wDeath%', 'wAssist%', 'wCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
264
+ else:
265
+ team_data['Kill_Proj'] = team_data['lKill%'] * kill_prediction
266
+ team_data['Death_Proj'] = team_data['lDeath%'] * death_prediction
267
+ team_data['Assist_Proj'] = team_data['lAssist%'] * kill_prediction
268
+ team_data = team_data[['playername', 'teamname', 'lKill%', 'lDeath%', 'lAssist%', 'lCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
269
  else:
270
+ raw_display = raw_display[['playername', 'teamname', 'playername_avg_kill_win', 'playername_avg_death_win', 'playername_avg_assist_win', 'playername_avg_total_cs_win', 'playername_avg_kill_loss', 'playername_avg_death_loss', 'playername_avg_assist_loss', 'playername_avg_total_cs_loss']]
271
+ raw_display = raw_display.rename(columns = {'playername_avg_kill_win': 'wKill%', 'playername_avg_death_win': 'wDeath%', 'playername_avg_assist_win': 'wAssist%', 'playername_avg_total_cs_win': 'wCS', 'playername_avg_kill_loss': 'lKill%', 'playername_avg_death_loss': 'lDeath%', 'playername_avg_assist_loss': 'lAssist%', 'playername_avg_total_cs_loss': 'lCS'})
272
+ team_data = raw_display.drop_duplicates(subset = ['playername'])
273
+
274
+ if win_loss == "Win":
275
+ team_data['Kill_Proj'] = team_data['wKill%']
276
+ team_data['Death_Proj'] = team_data['wDeath%']
277
+ team_data['Assist_Proj'] = team_data['wAssist%']
278
+ team_data = team_data[['playername', 'teamname', 'wKill%', 'wDeath%', 'wAssist%', 'wCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
279
+ else:
280
+ team_data['Kill_Proj'] = team_data['lKill%']
281
+ team_data['Death_Proj'] = team_data['lDeath%']
282
+ team_data['Assist_Proj'] = team_data['lAssist%']
283
+ team_data = team_data[['playername', 'teamname', 'lKill%', 'lDeath%', 'lAssist%', 'lCS', 'Kill_Proj', 'Death_Proj', 'Assist_Proj']]
284
 
285
  return team_data.dropna().reset_index(drop=True)
286