Rubyonly/APP-Customer
0
1import pandas as pd2def process_data(activity, heartrate, weight):3 heartrate['Time'] = pd.to_datetime(heartrate['Time'])4 heartrate['date'] = heartrate['Time'].dt.date5 avg_heartrate = heartrate.groupby(['Id', 'date'])['Value'].mean().reset_index()6 avg_heartrate = avg_heartrate.groupby('Id')['Value'].mean().reset_index()7 avg_heartrate.columns = ['Id', 'avg_heartrate']8 9 avg_calories = activity.groupby('Id')['Calories'].mean().reset_index()10 avg_calories.columns = ['Id', 'avg_calories']11 12 avg_bmi = weight.groupby('Id')['BMI'].mean().reset_index()13 avg_bmi.columns = ['Id', 'avg_bmi']14 15 user_metrics = pd.merge(avg_heartrate, avg_calories, on='Id', how='outer')16 user_metrics = pd.merge(user_metrics, avg_bmi, on='Id', how='outer')17 18 def classify_user(row):19 if row['avg_heartrate'] > 100 or row['avg_heartrate'] < 60 or row['avg_bmi'] > 30 or row['avg_bmi'] < 18.5 or row['avg_calories'] < 1600:20 return 'High Risk'21 elif 90 < row['avg_heartrate'] <= 100 or 60 <= row['avg_heartrate'] < 70 or 25 < row['avg_bmi'] <= 30 or 1600 <= row['avg_calories'] < 2000:22 return 'Medium Risk'23 else:24 return 'Low Risk'25 26 user_metrics['Risk Category'] = user_metrics.apply(classify_user, axis=1)27 return user_metrics28 29 30 31 32 33 34 35 36 