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