Implemented heart_rate_dataframe function.

This commit is contained in:
Filip 2025-03-16 11:44:27 +01:00
parent e915c9ee82
commit 282bae6675

View file

@ -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)