def read_menstrual(file):
mc = pd.read_json(get_data_file(file), orient='records')
return mc
def append_mc(data, date):
data = data.append([{'startDate':date}], ignore_index=True)
return data
def read_HR():
i = 0
HR = []
for file in glob.glob(prefix+'/*'):
HR.append(pd.read_csv(get_file('HR_'+str(i)+'.csv'), skiprows=[1]))
i += 1
return HR
def cleanup_mc(data):
mc = data[['actualCycleLength', 'startDate']]
mc = mc.rename(columns={'actualCycleLength': 'CycleLength'})
return mc
def cleanup_HR(data):
day_delta = datetime.timedelta(days=1)
start_date = datetime.date(2019, 12, 4)
weeks = []
for i in range(len(data)):
week = []
end_date = start_date + 7*day_delta
for j in range((end_date-start_date).days):
week.append(start_date + j*day_delta)
weeks.append(week)
start_date = end_date
for i in range(len(data)):
data[i]['Date'] = weeks[i]
data = pd.concat(data)
data = data.reset_index()
data = data[['Resting Heart Rate', 'Date']]
data = data.rename(columns={'Resting Heart Rate':'HR'})
return data
def length_ovulation(data):
for i in range(1,len(data['startDate'])):
data.loc[i-1,'CycleLength'] = data.loc[i, 'startDate'] - data.loc[i-1, 'startDate']
data['Ovulation'] = data['startDate'] + (data['CycleLength'] // 2)
return data
def rolling_HR(data, window):
data['Resting_HR'] = data.rolling(window=window, min_periods=1, center=True).mean()
return data
def date_datetime(data, column):
data[column] = pd.to_datetime(data[column])
return data
def data_for_plot(data):
data = data.iloc[:-1, :]
return data
def plotting(data1, data2, x1, x2, x3, y):
ax = plt.gca()
data1.plot(x=x1, y=y, ax=ax, figsize=(15,10), color='blue')
ax.vlines(x=data2.iloc[0][x2], ymin=52, ymax=65, color='red', linestyles='dotted', label='Cycle Start')
ax.vlines(x=data2.iloc[0][x3], ymin=52, ymax=65, color='green', linestyles='dotted', label='Ovulation')
ax.legend()
for i in range(1,len(data2[x2])):
ax.vlines(x=data2.iloc[i][x2], ymin=52, ymax=65, color='red', linestyles='dotted')
ax.vlines(x=data2.iloc[i][x3], ymin=52, ymax=65, color='green', linestyles='dotted')
ax.axvspan(data2.iloc[i-1][x3], data2.iloc[i][x2], alpha=0.2, color='red')
ax.axvspan(data2.iloc[i][x2], data2.iloc[i][x3], alpha=0.2, color='green')