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']})
我的目标是总结一个人的心率随时间变化的速度,并制作一个箱线图来可视化它。
现在我有一个包含原始数据的数据框,如下所示:
{'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']})