Python datetime & groupby - Creating a new dataframe 根据 datetime 汇总另一个 dataframe

Python datetime & groupby - Creating a new dataframe Summarising the another dataframe according to datetime

我的目标是总结一个人的心率随时间变化的速度,并制作一个箱线图来可视化它。

现在我有一个包含原始数据的数据框,如下所示:

{'Minute': {0: Timestamp('2015-02-24 00:00:00'),
  1: Timestamp('2015-02-24 00:00:30'),
  2: Timestamp('2015-02-24 00:01:00'),
  3: Timestamp('2015-02-24 00:01:30'),
  4: Timestamp('2015-02-24 00:02:00'),
  5: Timestamp('2015-02-24 00:02:30')},
 'heartrate': {0: 66, 1: 68, 2: 70, 3: 72, 4: 75, 5: 79}}

我想创建一个新的数据框来根据分钟汇总心率统计数据,这就是我想要的:

{'Hour': {0: '00', 1: '00', 2: '00'},
 'Minute': {0: 0, 1: 1, 2: 2},
 'Max heart rate': {0: 68, 1: 72, 2: 79},
 'Min heart rate': {0: 66, 1: 70, 2: 75},
 'Avg heart rate': {0: 67, 1: 71, 2: 77}}

最终,我想使用上面的新数据框以箱线图和 x 轴作为时间序列绘制心率,如下图所示,x 轴为时间(分钟),y 轴为心率节拍:

而对于日期时间部分,如果有2月1日、2月2日、2月3日等不同日期的数据,都是Hour 9pm和01分钟,如何区分?

非常感谢所有提供帮助的人!

你可以试试这个:

import pandas as pd


df = pd.DataFrame({'Timestamp': {0: pd.Timestamp('2015-02-24 00:00:00'), 
1: pd.Timestamp('2015-02-24 00:00:30'), 2: pd.Timestamp('2015-02-24 
00:01:00'), 3: pd.Timestamp('2015-02-24 00:01:30'), 4: pd.Timestamp('2015- 
02-24 00:02:00'), 5: pd.Timestamp('2015-02-24 00:02:30')}, 'heartrate': 
{0: 66, 1: 68, 2: 70, 3: 72, 4: 75, 5: 79}})

df['Minute'] = df['Timestamp'].apply(lambda minute : minute.minute)
df['Hour'] = df['Timestamp'].apply(lambda hour : hour.hour)
df['Day'] = df['Timestamp'].apply(lambda day : day.day)
df['Month'] = df['Timestamp'].apply(lambda month : month.month)
df['Year'] = df['Timestamp'].apply(lambda year : year.year)
df.groupby(['Year','Month','Day','Hour','Minute']).agg({'heartrate': 
['mean', 'min', 'max']})