Implemented heart_rate_dataframe function.
This commit is contained in:
parent
e915c9ee82
commit
282bae6675
|
|
@ -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)
|
||||
Loading…
Reference in a new issue