CoolFace
Apppublic

Rubyonly/APP-Manager

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
classification.py28 linesDownload Raw Back to root
1import pandas as pd2 3def process_data(activity, heartrate, weight):4    heartrate['Time'] = pd.to_datetime(heartrate['Time'])5    heartrate['date'] = heartrate['Time'].dt.date6    avg_heartrate = heartrate.groupby(['Id', 'date'])['Value'].mean().reset_index()7    avg_heartrate = avg_heartrate.groupby('Id')['Value'].mean().reset_index()8    avg_heartrate.columns = ['Id', 'avg_heartrate']9    10    avg_calories = activity.groupby('Id')['Calories'].mean().reset_index()11    avg_calories.columns = ['Id', 'avg_calories']12    13    avg_bmi = weight.groupby('Id')['BMI'].mean().reset_index()14    avg_bmi.columns = ['Id', 'avg_bmi']15    16    user_metrics = pd.merge(avg_heartrate, avg_calories, on='Id', how='outer')17    user_metrics = pd.merge(user_metrics, avg_bmi, on='Id', how='outer')18    19    def classify_user(row):20        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:21            return 'High Risk'22        elif 90 < row['avg_heartrate'] <= 100 or 60 <= row['avg_heartrate'] < 70 or 25 < row['avg_bmi'] <= 30 or 1600 <= row['avg_calories'] < 2000:23            return 'Medium Risk'24        else:25            return 'Low Risk'26 27    user_metrics['Risk Category'] = user_metrics.apply(classify_user, axis=1)28    return user_metrics