HPI/my/body/exercise/cardio.py
2021-01-11 20:42:23 +00:00

44 lines
1,003 B
Python

'''
Cardio data, filtered from various data sources
'''
from ...core.pandas import DataFrameT, check_dataframe
CARDIO = {
'Running',
'Running, treadmill',
'Cross training',
'Walking',
'Skating',
'Spinning',
'Skiing',
'Table tennis',
'Rope jumping',
}
# todo if it has HR data, take it into the account??
NOT_CARDIO = {
'Other',
}
@check_dataframe
def dataframe() -> DataFrameT:
assert len(CARDIO.intersection(NOT_CARDIO)) == 0, (CARDIO, NOT_CARDIO)
from .all import dataframe as DF
df = DF()
# not sure...
# df = df[df['heart_rate_avg'].notna()]
is_cardio = df['sport'].isin(CARDIO)
not_cardio = df['sport'].isin(NOT_CARDIO)
neither = ~is_cardio & ~not_cardio
# if neither -- count, but warn? or show error?
# todo error about the rest??
# todo append errors?
df.loc[neither, 'error'] = 'Unexpected exercise type, please mark as cardio or non-cardio'
df = df[is_cardio | neither]
return df