def ceiling_points(self, **kwargs): """ Return score variance """ if not self._points: self.get_points() return MathUtils.max(self._points)
def _season_points(self, **kwargs): """ Calculate points for the whole season """ if not self._points: self.get_points() return MathUtils.sum(self._points)
def floor_points(self, **kwargs): """ Return score variance """ if not self._points: self.get_points() return MathUtils.min(self._points)
def std_dev_points(self, **kwargs): """ Return score variance """ if not self._points: self.get_points() return MathUtils.std(self._points)
def median_points(self, **kwargs): """ Return median score """ if not self._points: self.get_points() return MathUtils.median(self._points)
def get_context_data(self, **kwargs): context = super(PlayerDetail, self).get_context_data(**kwargs) player = context['object'] stat_list = player.stats.all() stat_keys = filter(lambda x: x not in ['50', '51', '52', '53', '54', '55', '56', '57'], stat_list[0].stat_data.keys()) columns = filter(lambda x: x[0] in stat_keys, STATS.items()) stat_headers = [ stat_item[1][0] for stat_item in columns ] stat_headers.insert(0, 'Week #') stat_headers.append('Points') context['stat_headers'] = stat_headers context['stat_list'] = [] column_lists = { key: [] for key, value in columns } for stat in stat_list: if int(player.bye_week) == stat.week_num: continue total_points = stat.total_points() stat_week = [] stat_week.append(stat.week_num) for key, value in columns: stat_week.append(stat.stat_data[key]) column_lists[key].append(stat.stat_data[key]) stat_week.append(total_points) context['stat_list'].append(stat_week) avg_stats = ['Avg'] for key, value in columns: avg_str = "%.1f ± %.1f" % ( MathUtils.mean(column_lists[key]), MathUtils.std(column_lists[key]), ) avg_stats.append(avg_str) avg_stats.append(player.mean_points()) context['stat_list'].append(avg_stats) points = player.get_points() context['stat_rows'] = [ ("Total Points", player._season_points()), ("Geometric Mean", player.gmean_points()), ("Arithmetic Mean", player.mean_points()), ("Std Dev", player.std_dev_points()), ("Median", player.median_points()), ("Floor", player.floor_points()), ("Ceiling", player.ceiling_points()), ("Games Played", player.games_played()), ("Risk Factor", '%.2f%%' % player.risk_factor()), ] context['page_title'] = '%s %s Detail' % (player.first_name, player.last_name) return context
def normalize_points(self, **kwargs): """ Returns a list of points normalized to 1.0 """ if not self._points: self.get_points() result = MathUtils.normalize(self._points, **kwargs) return result
def gmean_points(self, **kwargs): """ Return the mean score """ if not self._points: self.get_points() pts = filter(lambda x: x != 0, self.normalize_points()) return MathUtils.gmean(pts)
def get_context_data(self, **kwargs): context = super(TeamDetail, self).get_context_data(**kwargs) team = context['object'] weeks = range(1, League.objects.get(league_key=self.kwargs.get('league_key')).current_week + 1) context['stat_headers'] = ['Week #'] + self.__class__.position_list context['stat_list'] = [] for week in weeks: lineup = team.players.filter(roster__week=week) player_list = [ player for position in self.__class__.unique_list for player in team.players.filter(Q(roster__position=position), Q(roster__week=week)) ] stat_week = [ {'week': week} ] + [ {'player': player} for player in player_list ] points = MathUtils.sum([ roster.player.get_weekly_points(week) for roster in team.roster.filter(week=week).exclude(position='BN')]) lower_stat = [ {'points': 'Total: %.2f' % points} ] + [ {'points': '%.2f' % player.get_weekly_points(week)} for player in player_list ] context['stat_list'].append(stat_week) context['stat_list'].append(lower_stat) return context