diff --git a/analyze_sport_data/__init__.py b/analyze_sport_data/__init__.py index e69de29..95b587a 100644 --- a/analyze_sport_data/__init__.py +++ b/analyze_sport_data/__init__.py @@ -0,0 +1,33 @@ +from datetime import datetime +from typing import Iterable +from analyze_sport_data.file_records import FileRecords +from pandas import DataFrame, Series + + +def heart_rate_at_datetime(file_records: FileRecords, + recorded_at: datetime) -> float | None: + for heart_rate_record in file_records.heart_rate_records: + if heart_rate_record.recorded_at == recorded_at: + return heart_rate_record.heart_rate + + return None + + +def heart_rate_dataframe( + file_records_iterable: Iterable[FileRecords]) -> DataFrame: + recorded_at_points_set: set[datetime] = set() + + for file_records in file_records_iterable: + for record in file_records.heart_rate_records: + recorded_at_points_set.add(record.recorded_at) + + recorded_at_index = sorted(recorded_at_points_set) + heart_rate_measurements: dict[str, list[float | None]] = {} + + for file_records in file_records_iterable: + heart_rate_measurements[file_records.name] = [ + heart_rate_at_datetime(file_records, recorded_at) + for recorded_at in recorded_at_index + ] + + return DataFrame(data=heart_rate_measurements)