James McCool commited on
Commit
fac7ac1
·
1 Parent(s): eeb63f1

Enhance date filtering options in team analysis. Added functionality to select date ranges for data analysis, including a "Last Year" option and a custom date range input. Updated init_team_data function to filter game logs based on selected dates, improving data relevance for analysis.

Browse files
Files changed (1) hide show
  1. app.py +36 -5
app.py CHANGED
@@ -4,6 +4,7 @@ import numpy as np
4
  import pandas as pd
5
  import pymongo
6
  import time
 
7
 
8
  @st.cache_resource
9
  def init_conn():
@@ -13,18 +14,48 @@ def init_conn():
13
  db = client["League_of_Legends_Database"]
14
 
15
  collection = db["gamelogs"]
 
 
16
  team_names = collection.distinct("teamname")
17
  player_names = collection.distinct("playername")
18
 
19
- return db, team_names, player_names
20
 
21
- db, team_names, player_names = init_conn()
22
 
23
  display_formats = {'wKill%': '{:.2%}', 'wDeath%': '{:.2%}', 'wAssist%': '{:.2%}', 'lKill%': '{:.2%}', 'lDeath%': '{:.2%}', 'lAssist%': '{:.2%}'}
24
 
25
  # Create sidebar container for options
26
  with st.sidebar:
27
  st.header("Team Analysis Options")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  selected_team = st.selectbox(
29
  "Select Team",
30
  options=team_names,
@@ -53,10 +84,10 @@ with st.sidebar:
53
  )
54
 
55
  @st.cache_data(ttl = 60)
56
- def init_team_data(team, win_loss, kill_prediction, death_prediction):
57
 
58
  collection = db["gamelogs"]
59
- cursor = collection.find({"teamname": team})
60
 
61
  raw_display = pd.DataFrame(list(cursor))
62
  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']]
@@ -77,4 +108,4 @@ def init_team_data(team, win_loss, kill_prediction, death_prediction):
77
  return team_data.dropna().reset_index(drop=True)
78
 
79
  if st.button("Run"):
80
- st.dataframe(init_team_data(selected_team, win_loss, kill_prediction, death_prediction).style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(display_formats, precision=2), use_container_width = True)
 
4
  import pandas as pd
5
  import pymongo
6
  import time
7
+ from datetime import datetime, timedelta
8
 
9
  @st.cache_resource
10
  def init_conn():
 
14
  db = client["League_of_Legends_Database"]
15
 
16
  collection = db["gamelogs"]
17
+ min_date = collection.find_one({}, sort=[("date", 1)])["date"]
18
+ max_date = collection.find_one({}, sort=[("date", -1)])["date"]
19
  team_names = collection.distinct("teamname")
20
  player_names = collection.distinct("playername")
21
 
22
+ return db, team_names, player_names, min_date, max_date
23
 
24
+ db, team_names, player_names, min_date, max_date = init_conn()
25
 
26
  display_formats = {'wKill%': '{:.2%}', 'wDeath%': '{:.2%}', 'wAssist%': '{:.2%}', 'lKill%': '{:.2%}', 'lDeath%': '{:.2%}', 'lAssist%': '{:.2%}'}
27
 
28
  # Create sidebar container for options
29
  with st.sidebar:
30
  st.header("Team Analysis Options")
31
+
32
+ # Date filtering options
33
+ st.subheader("Date Range")
34
+ date_filter = st.radio(
35
+ "Select Date Range",
36
+ ["Last Year", "Custom Range"]
37
+ )
38
+
39
+ if date_filter == "Last Year":
40
+ end_date = max_date
41
+ start_date = end_date - timedelta(days=365)
42
+ else:
43
+ col1, col2 = st.columns(2)
44
+ with col1:
45
+ start_date = st.date_input(
46
+ "Start Date",
47
+ value=max_date - timedelta(days=365),
48
+ min_value=min_date,
49
+ max_value=max_date
50
+ )
51
+ with col2:
52
+ end_date = st.date_input(
53
+ "End Date",
54
+ value=max_date,
55
+ min_value=min_date,
56
+ max_value=max_date
57
+ )
58
+
59
  selected_team = st.selectbox(
60
  "Select Team",
61
  options=team_names,
 
84
  )
85
 
86
  @st.cache_data(ttl = 60)
87
+ def init_team_data(team, win_loss, kill_prediction, death_prediction, start_date, end_date):
88
 
89
  collection = db["gamelogs"]
90
+ cursor = collection.find({"teamname": team, "date": {"$gte": start_date, "$lte": end_date}})
91
 
92
  raw_display = pd.DataFrame(list(cursor))
93
  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']]
 
108
  return team_data.dropna().reset_index(drop=True)
109
 
110
  if st.button("Run"):
111
+ 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)