moved data field prep for stats to dataprep from views
This commit is contained in:
165
rowers/views.py
165
rowers/views.py
@@ -2738,97 +2738,17 @@ def cumstats(request,theuser=0,
|
||||
u = ''
|
||||
|
||||
ids = [int(workout.id) for workout in allergworkouts]
|
||||
|
||||
# Get field names and remove those that are not useful in stats
|
||||
fields = StrokeData._meta.get_fields()
|
||||
|
||||
fielddict = {field.name:field.verbose_name for field in fields}
|
||||
|
||||
|
||||
fielddict.pop('workoutid')
|
||||
fielddict.pop('ergpace')
|
||||
fielddict.pop('hr_an')
|
||||
fielddict.pop('hr_tr')
|
||||
fielddict.pop('hr_at')
|
||||
fielddict.pop('hr_ut2')
|
||||
fielddict.pop('hr_ut1')
|
||||
fielddict.pop('time')
|
||||
fielddict.pop('distance')
|
||||
fielddict.pop('nowindpace')
|
||||
fielddict.pop('fnowindpace')
|
||||
fielddict.pop('fergpace')
|
||||
fielddict.pop('equivergpower')
|
||||
# fielddict.pop('workoutstate')
|
||||
fielddict.pop('fpace')
|
||||
fielddict.pop('pace')
|
||||
fielddict.pop('id')
|
||||
fielddict.pop('ftime')
|
||||
fielddict.pop('x_right')
|
||||
fielddict.pop('hr_max')
|
||||
fielddict.pop('hr_bottom')
|
||||
fielddict.pop('cumdist')
|
||||
|
||||
|
||||
fieldlist,fielddict = dataprep.getstatsfields()
|
||||
|
||||
# prepare data frame
|
||||
datadf = dataprep.read_cols_df_sql(ids,fieldlist)
|
||||
|
||||
# clean data remove zeros and negative values
|
||||
datadf=datadf.clip(lower=0)
|
||||
datadf.replace(to_replace=0,value=np.nan,inplace=True)
|
||||
|
||||
# clean data for useful ranges per column
|
||||
mask = datadf['hr'] < 30
|
||||
datadf.loc[mask,'hr'] = np.nan
|
||||
|
||||
mask = datadf['rhythm'] < 5
|
||||
datadf.loc[mask,'rhythm'] = np.nan
|
||||
|
||||
mask = datadf['rhythm'] > 70
|
||||
datadf.loc[mask,'rhythm'] = np.nan
|
||||
|
||||
mask = datadf['power'] < 20
|
||||
datadf.loc[mask,'power'] = np.nan
|
||||
|
||||
mask = datadf['drivelength'] < 0.5
|
||||
datadf.loc[mask,'drivelength'] = np.nan
|
||||
|
||||
mask = datadf['forceratio'] < 0.2
|
||||
|
||||
datadf = dataprep.clean_df_stats(datadf,workstrokesonly=workstrokesonly)
|
||||
|
||||
mask = datadf['forceratio'] > 1.0
|
||||
datadf.loc[mask,'forceratio'] = np.nan
|
||||
|
||||
mask = datadf['spm'] < 10
|
||||
datadf.loc[mask,'spm'] = np.nan
|
||||
|
||||
|
||||
mask = datadf['spm'] > 60
|
||||
datadf.loc[mask,'spm'] = np.nan
|
||||
|
||||
mask = datadf['drivespeed'] < 0.5
|
||||
datadf.loc[mask,'drivespeed'] = np.nan
|
||||
|
||||
mask = datadf['drivespeed'] > 4
|
||||
datadf.loc[mask,'drivespeed'] = np.nan
|
||||
|
||||
mask = datadf['driveenergy'] > 2000
|
||||
datadf.loc[mask,'driveenergy'] = np.nan
|
||||
|
||||
mask = datadf['driveenergy'] < 100
|
||||
|
||||
|
||||
if datadf.empty:
|
||||
return HttpResponse("No data found")
|
||||
|
||||
workoutstateswork = [1,4,5,8,9,6,7]
|
||||
workoutstatesrest = [3]
|
||||
workoutstatetransition = [0,2,10,11,12,13]
|
||||
|
||||
if workstrokesonly=='True' or workstrokesonly==True:
|
||||
try:
|
||||
datadf = datadf[~datadf['workoutstate'].isin(workoutstatesrest)]
|
||||
except:
|
||||
|
||||
|
||||
# Create stats
|
||||
@@ -2908,51 +2828,8 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
|
||||
message = "You are not allowed to see the stats of this workout"
|
||||
url = reverse(workouts_view,args=[str(message)])
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
datadf = dataprep.clean_df_stats(datadf,workstrokesonly=workstrokesonly)
|
||||
|
||||
# clean data remove zeros and negative values
|
||||
datadf=datadf.clip(lower=0)
|
||||
datadf.replace(to_replace=0,value=np.nan,inplace=True)
|
||||
|
||||
# clean data for useful ranges per column
|
||||
mask = datadf['hr'] < 30
|
||||
datadf.loc[mask,'hr'] = np.nan
|
||||
|
||||
mask = datadf['rhythm'] < 5
|
||||
datadf.loc[mask,'rhythm'] = np.nan
|
||||
|
||||
mask = datadf['rhythm'] > 70
|
||||
datadf.loc[mask,'rhythm'] = np.nan
|
||||
|
||||
mask = datadf['power'] < 20
|
||||
datadf.loc[mask,'power'] = np.nan
|
||||
|
||||
mask = datadf['drivelength'] < 0.5
|
||||
datadf.loc[mask,'drivelength'] = np.nan
|
||||
|
||||
mask = datadf['forceratio'] < 0.2
|
||||
datadf.loc[mask,'forceratio'] = np.nan
|
||||
|
||||
mask = datadf['forceratio'] > 1.0
|
||||
datadf.loc[mask,'forceratio'] = np.nan
|
||||
|
||||
mask = datadf['spm'] < 10
|
||||
datadf.loc[mask,'spm'] = np.nan
|
||||
|
||||
|
||||
mask = datadf['spm'] > 60
|
||||
datadf.loc[mask,'spm'] = np.nan
|
||||
|
||||
mask = datadf['drivespeed'] < 0.5
|
||||
datadf.loc[mask,'drivespeed'] = np.nan
|
||||
|
||||
mask = datadf['drivespeed'] > 4
|
||||
datadf.loc[mask,'drivespeed'] = np.nan
|
||||
|
||||
mask = datadf['driveenergy'] > 2000
|
||||
datadf.loc[mask,'driveenergy'] = np.nan
|
||||
|
||||
mask = datadf['driveenergy'] < 100
|
||||
|
||||
|
||||
if datadf.empty:
|
||||
@@ -2961,44 +2838,12 @@ def workout_stats_view(request,id=0,message="",successmessage=""):
|
||||
workoutstateswork = [1,4,5,8,9,6,7]
|
||||
workoutstatesrest = [3]
|
||||
workoutstatetransition = [0,2,10,11,12,13]
|
||||
|
||||
if workstrokesonly=='True' or workstrokesonly==True:
|
||||
try:
|
||||
datadf = datadf[~datadf['workoutstate'].isin(workoutstatesrest)]
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
# Create stats
|
||||
stats = {}
|
||||
|
||||
# Get field names and remove those that are not useful in stats
|
||||
fields = StrokeData._meta.get_fields()
|
||||
|
||||
fielddict = {field.name:field.verbose_name for field in fields}
|
||||
|
||||
|
||||
fielddict.pop('workoutid')
|
||||
fielddict.pop('ergpace')
|
||||
fielddict.pop('hr_an')
|
||||
fielddict.pop('hr_tr')
|
||||
fielddict.pop('hr_at')
|
||||
fielddict.pop('hr_ut2')
|
||||
fielddict.pop('hr_ut1')
|
||||
fielddict.pop('time')
|
||||
fielddict.pop('distance')
|
||||
fielddict.pop('nowindpace')
|
||||
fielddict.pop('fnowindpace')
|
||||
fielddict.pop('fergpace')
|
||||
fielddict.pop('equivergpower')
|
||||
fielddict.pop('workoutstate')
|
||||
fielddict.pop('fpace')
|
||||
fielddict.pop('pace')
|
||||
fielddict.pop('id')
|
||||
fielddict.pop('ftime')
|
||||
fielddict.pop('x_right')
|
||||
fielddict.pop('hr_max')
|
||||
fielddict.pop('hr_bottom')
|
||||
|
||||
fieldlist,fielddict = dataprep.getstatsfields()
|
||||
|
||||
|
||||
for field,verbosename in fielddict.iteritems():
|
||||
|
||||
Reference in New Issue
Block a user