rairo commited on
Commit
cc55fb7
·
verified ·
1 Parent(s): 8c21b1e

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +31 -5
src/streamlit_app.py CHANGED
@@ -72,14 +72,32 @@ def get_player_index_brscraper():
72
 
73
  @st.cache_data(ttl=300)
74
  def get_player_career_stats_brscraper(player_name):
 
 
 
 
75
  if not BRSCRAPER_AVAILABLE:
76
  return pd.DataFrame()
 
77
  try:
78
  df = nba.get_player_stats(player_name)
79
  if df.empty:
80
  return df
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  mapping = {
82
- 'Season':'Season','G':'GP','GS':'GS','MP':'MIN',
83
  'FG%':'FG_PCT','3P%':'FG3_PCT','FT%':'FT_PCT',
84
  'TRB':'REB','AST':'AST','STL':'STL','BLK':'BLK','TOV':'TO',
85
  'PF':'PF','PTS':'PTS','Age':'AGE','Tm':'TEAM_ABBREVIATION',
@@ -89,13 +107,21 @@ def get_player_career_stats_brscraper(player_name):
89
  'FT':'FTM','FTA':'FTA','ORB':'OREB','DRB':'DREB'
90
  }
91
  df = df.rename(columns={o:n for o,n in mapping.items() if o in df.columns})
 
 
92
  df['Season'] = df['Season'].astype(str).str.replace('-', '–')
93
- non_num = {'Season','TEAM_ABBREVIATION','LEAGUE_ID','POSITION'}
94
- for col in df.columns:
95
- if col not in non_num:
96
- df[col] = pd.to_numeric(df[col], errors='coerce')
 
 
 
 
97
  df['Player'] = player_name
 
98
  return df
 
99
  except Exception as e:
100
  st.error(f"Error fetching stats for {player_name}: {e}")
101
  return pd.DataFrame()
 
72
 
73
  @st.cache_data(ttl=300)
74
  def get_player_career_stats_brscraper(player_name):
75
+ """
76
+ Uses BRScraper to get a player's career stats.
77
+ Detects and renames the season column, applies mapping and numeric conversion.
78
+ """
79
  if not BRSCRAPER_AVAILABLE:
80
  return pd.DataFrame()
81
+
82
  try:
83
  df = nba.get_player_stats(player_name)
84
  if df.empty:
85
  return df
86
+
87
+ # 1) Detect whatever BRScraper calls its season column, rename to 'Season'
88
+ season_renamed = False
89
+ for col in df.columns:
90
+ if 'season' in col.lower() or 'year' in col.lower():
91
+ df = df.rename(columns={col: 'Season'})
92
+ season_renamed = True
93
+ break
94
+ if not season_renamed:
95
+ st.error(f"Could not find a season column for {player_name}.")
96
+ return pd.DataFrame()
97
+
98
+ # 2) Standardize column names
99
  mapping = {
100
+ 'G':'GP','GS':'GS','MP':'MIN',
101
  'FG%':'FG_PCT','3P%':'FG3_PCT','FT%':'FT_PCT',
102
  'TRB':'REB','AST':'AST','STL':'STL','BLK':'BLK','TOV':'TO',
103
  'PF':'PF','PTS':'PTS','Age':'AGE','Tm':'TEAM_ABBREVIATION',
 
107
  'FT':'FTM','FTA':'FTA','ORB':'OREB','DRB':'DREB'
108
  }
109
  df = df.rename(columns={o:n for o,n in mapping.items() if o in df.columns})
110
+
111
+ # 3) Clean up season formatting
112
  df['Season'] = df['Season'].astype(str).str.replace('-', '–')
113
+
114
+ # 4) Convert all other columns to numeric where possible
115
+ non_numeric = {'Season', 'TEAM_ABBREVIATION', 'LEAGUE_ID', 'POSITION'}
116
+ for c in df.columns:
117
+ if c not in non_numeric:
118
+ df[c] = pd.to_numeric(df[c], errors='coerce')
119
+
120
+ # 5) Tag with player name
121
  df['Player'] = player_name
122
+
123
  return df
124
+
125
  except Exception as e:
126
  st.error(f"Error fetching stats for {player_name}: {e}")
127
  return pd.DataFrame()