def show_all(self, sport, start_date, end_date): df = self.df_dict[sport].copy(deep=False) df = self.get_sessions_in_timespan(df, start_date, end_date) df.reset_index(inplace=True) df.rename(columns={'index': 'i-th session (0 started)'}, inplace=True) df = df.sort_values(by='start_time', ascending=False, ignore_index=True) utils.show_dataframe_in_web(df, 'All sessions')
def show_top_time_consuming(self, sport, how_many, start_date, end_date): df = self.df_dict[sport].copy(deep=False) df = self.get_sessions_in_timespan(df, start_date, end_date) df.reset_index(inplace=True) df.rename(columns={'index': 'i-th session (0 started)'}, inplace=True) df = df.sort_values(by='duration', ascending=False, ignore_index=True).head(how_many) utils.show_dataframe_in_web( df, f'{how_many} most time consuming sessions')
def show_top_time_in_distance(self, sport, how_many, distance, start_date, end_date): column = f'{distance}km_time' df = self.df_dict[sport].copy(deep=False) df = self.get_sessions_in_timespan(df, start_date, end_date) df.reset_index(inplace=True) df.rename(columns={'index': 'i-th session (0 started)'}, inplace=True) df = df.sort_values(by=column, ascending=True, ignore_index=True).head(how_many) utils.show_dataframe_in_web(df, f'Best {distance}km time sessions')
def show_top_distances(self, sport, how_many, start_date, end_date): df = self.df_dict[sport].copy(deep=False) df = self.get_sessions_in_timespan(df, start_date, end_date) df.reset_index(inplace=True) df.rename(columns={'index': 'i-th session (0 started)'}, inplace=True) # Dealing with strings and ints df = df.replace(const.empty_value, 0) df = df.sort_values(by='distance', ascending=False, ignore_index=True).head(how_many) df = df.replace(0, const.empty_value) utils.show_dataframe_in_web(df, f'{how_many} longest sessions')
def show_sessions_with_minimum_distance(self, sport, distance, start_date, end_date): df = self.df_dict[sport].copy(deep=False) df = self.get_sessions_in_timespan(df, start_date, end_date) df.reset_index(inplace=True) df.rename(columns={'index': 'i-th session (0 started)'}, inplace=True) df = df[df['distance'] >= distance] df = df.sort_values(by='start_time', ascending=False, ignore_index=True) utils.show_dataframe_in_web(df, f'Sessions with at least {distance}km')
def show_top_avg_heart_rates(self, sport, how_many, start_date, end_date): df = self.df_dict[sport].copy(deep=False) df = self.get_sessions_in_timespan(df, start_date, end_date) df.reset_index(inplace=True) df.rename(columns={'index': 'i-th session (0 started)'}, inplace=True) # Dealing with strings and ints df = df.replace(const.empty_value, 0) df = df.sort_values(by=[ 'avg_heart_rate', 'avg_heart_rate_as_percentage', 'max_heart_rate', 'max_heart_rate_as_percentage' ], ascending=False, ignore_index=True).head(how_many) df = df.replace(0, const.empty_value) utils.show_dataframe_in_web( df, f'{how_many} highest average heart rates in session')
def show_country_stats(self, sport, start_date, end_date): df = self.df_dict[sport].copy(deep=False) df = self.get_sessions_in_timespan(df, start_date, end_date) df.reset_index(inplace=True) df.rename(columns={'index': '# of sessions'}, inplace=True) df['duration'] = utils.duration_to_timedelta(df['duration']) if const.sport_processor[sport.upper( )] == 'running' or const.sport_processor[ sport.upper()] == 'distance_based' or const.sport_processor[ sport.upper()] == 'cycling': # Dealing with strings df = df.replace( { 'distance': const.empty_value, 'duration': const.empty_value, 'avg_speed': const.empty_value }, 0) df = df.groupby(by='country').agg({ '# of sessions': 'count', 'distance': 'sum', 'duration': 'sum', 'avg_speed': 'mean' }) df = df.sort_values( by=['# of sessions', 'distance', 'duration', 'avg_speed'], ascending=False, ignore_index=False) else: df = df.groupby(by='country').agg({ '# of sessions': 'count', 'duration': 'sum' }) df = df.sort_values(by=['# of sessions', 'duration'], ascending=False, ignore_index=False) df['duration'] = utils.timedelta_to_duration(df['duration']) utils.show_dataframe_in_web(df, f'Country stats for {sport}')