График временных рядов кадра - PullRequest
0 голосов
/ 31 октября 2018

У меня есть файл .csv, который я прочитал и имеет следующие столбцы данных:

Дата, Имя тренировки, Имя тренировки, Задание порядка, Вес, Количество повторений, Расстояние, Секунды, Заметки, Примечания тренировки

с примерами данных, выглядящими так:

14/7/16 16:15   Afternoon Workout   Squat (Barbell) 1   20      5   0   0
14/7/16 16:15   Afternoon Workout   Squat (Barbell) 2   40      5   0   0
14/7/16 16:15   Afternoon Workout   Squat (Barbell) 3   60      5   0   0
14/7/16 16:15   Afternoon Workout   Squat (Barbell) 4   77.5    6   0   0
14/7/16 16:15   Afternoon Workout   Squat (Barbell) 5   77.5    6   0   0
14/7/16 16:15   Afternoon Workout   Squat (Barbell) 6   77.5    6   0   0
14/7/16 16:15   Afternoon Workout   Squat (Barbell) 7   77.5    6   0   0

N.B. Нет заметки или заметки тренировки пустые столбцы

# Removing useless data - i.e. Workout Name, Distance, Seconds, Notes and Workout Notes
     data = data.drop(data.columns[[1,6,7,8,9]], axis=1)
     # Removing time from date stamp
     data['Date'] = pd.to_datetime(data['Date']);
     data['Date'] = data['Date'].dt.date;

Я запускаю эту функцию, чтобы вычислить максимальное количество повторений из предоставленного веса и повторений

    # calculating 1RM based on Wathan's formula`
    def calculate_oneRepMax(weight, rep):
        oneRepMax = (100*weight)/(48.8 +53.8*np.exp(-0.075*rep))
    return oneRepMax;

   # calculating 1RM for all values
   data['1RM'] = calculate_oneRepMax(data['Weight'], data['Reps']);

Затем я хочу вычислить 1RM (одно повторение макс.) Для любого данного дня с предоставленными наборами для данного упражнения, например. найти 1RM для любого данного дня для приседания будет так.

get_oneRepMax(data, 'Squat (Barbell)')

# finding the 1RM for any given day
def get_oneRepMax(data, compExercise):
    oneRepMax = pd.DataFrame(columns = data.columns)

# define starting variables
currentDate = data.loc[0, 'Date']
currentExercise = data.loc[0, 'Exercise Name']
currentRM = data.loc[0, '1RM']

# iterate to find the largest for given date
for index, row in data.iterrows():
    newDate = data.iloc[index,0]
    newExercise = data.iloc[index,1]
    newRM = data.loc[index, '1RM']

    if (newExercise == compExercise):
        if (currentRM < newRM) and (newDate == currentDate):
            currentRM = newRM
            newRow = data.loc[index, :]
        # record 1RM for given date
        elif (newDate > currentDate):
            oneRepMax = oneRepMax.append(newRow)
            # resetting values
            currentDate = newDate
            currentRM = 0
            currentExercise = newExercise
return oneRepMax;

Тогда моя проблема заключается в том, что я хочу отобразить данные год за годом на графике, но у меня возникают проблемы с разделением без запутывания. Я уверен, что есть более простой способ манипулировать данными для представления этой информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...