James McCool commited on
Commit
a655909
·
1 Parent(s): 7545b49

Enhance team analysis functionality with sidebar options for team selection and prediction settings. Updated init_team_data function to incorporate win/loss predictions and display projected kills and deaths based on user input.

Browse files
Files changed (1) hide show
  1. app.py +41 -3
app.py CHANGED
@@ -20,17 +20,55 @@ def init_conn():
20
 
21
  db, team_names, player_names = init_conn()
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  @st.cache_data(ttl = 60)
24
- def init_team_data(team):
25
 
26
  collection = db["gamelogs"]
27
  cursor = collection.find({"teamname": team})
28
 
29
  raw_display = pd.DataFrame(list(cursor))
30
  raw_display = raw_display[['playername', 'teamname', 'playername_avg_kill_share_win', 'playername_avg_death_share_win', 'playername_avg_assist_share_win', 'playername_avg_cs_share_win', 'playername_avg_kill_share_loss', 'playername_avg_death_share_loss', 'playername_avg_assist_share_loss', 'playername_avg_cs_share_loss']]
31
-
32
  team_data = raw_display.drop_duplicates(subset = ['playername'])
33
 
 
 
 
 
 
 
 
34
  return team_data
35
 
36
- st.table(init_team_data("T1"))
 
 
20
 
21
  db, team_names, player_names = init_conn()
22
 
23
+ # Create sidebar container for options
24
+ with st.sidebar:
25
+ st.header("Team Analysis Options")
26
+ selected_team = st.selectbox(
27
+ "Select Team",
28
+ options=team_names,
29
+ index=team_names.index("T1") if "T1" in team_names else 0
30
+ )
31
+
32
+ st.subheader("Prediction Settings")
33
+ win_loss = st.selectbox(
34
+ "Select Win/Loss",
35
+ options=["Win", "Loss"],
36
+ index=0
37
+ )
38
+
39
+ kill_prediction = st.number_input(
40
+ "Predicted Team Kills",
41
+ min_value=0,
42
+ max_value=100,
43
+ value=15
44
+ )
45
+
46
+ death_prediction = st.number_input(
47
+ "Predicted Team Deaths",
48
+ min_value=0,
49
+ max_value=100,
50
+ value=10
51
+ )
52
+
53
  @st.cache_data(ttl = 60)
54
+ def init_team_data(team, win_loss, kill_prediction, death_prediction):
55
 
56
  collection = db["gamelogs"]
57
  cursor = collection.find({"teamname": team})
58
 
59
  raw_display = pd.DataFrame(list(cursor))
60
  raw_display = raw_display[['playername', 'teamname', 'playername_avg_kill_share_win', 'playername_avg_death_share_win', 'playername_avg_assist_share_win', 'playername_avg_cs_share_win', 'playername_avg_kill_share_loss', 'playername_avg_death_share_loss', 'playername_avg_assist_share_loss', 'playername_avg_cs_share_loss']]
61
+ 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_cs_share_win': 'wCS%', 'playername_avg_kill_share_loss': 'lKill%', 'playername_avg_death_share_loss': 'lDeath%', 'playername_avg_assist_share_loss': 'lAssist%', 'playername_avg_cs_share_loss': 'lCS%'})
62
  team_data = raw_display.drop_duplicates(subset = ['playername'])
63
 
64
+ if win_loss == "Win":
65
+ team_data['Kill_Proj'] = team_data['wKill%'] * kill_prediction
66
+ team_data['Death_Proj'] = team_data['wDeath%'] * death_prediction
67
+ else:
68
+ team_data['Kill_Proj'] = team_data['lKill%'] * kill_prediction
69
+ team_data['Death_Proj'] = team_data['lDeath%'] * death_prediction
70
+
71
  return team_data
72
 
73
+ if st.button("Run"):
74
+ st.dataframe(init_team_data(selected_team, win_loss, kill_prediction, death_prediction))