Python – 如何按天分组Pandas DataFrame?
在使用Pandas进行数据分析时,我们经常需要将DataFrame按照时间分组,例如按天、小时或分钟。在本文中,我们将介绍如何使用Pandas,将DataFrame按天进行分组及展示其示例代码。
示例数据
首先,我们需要创建一个示例数据集,如下所示:
import pandas as pd
import numpy as np
# 创建示例数据
data = pd.DataFrame({'date': pd.date_range('20220101', '20220210').repeat(24),
'value': np.random.rand(576)})
我们使用pd.date_range()
函数生成自2022年1月1日至2022年2月10日间一系列时间戳作为数据的日期列date
,再生成一个随机数列作为数据的数值列value
。
按天分组
接下来,我们将按照数据的日期列进行按天分组,并且计算每天全部数值的平均值:
# 将数据按日聚合,并计算日均值
daily_average = data.groupby(['date']).mean()
# 打印结果
print(daily_average)
输出结果如下:
value
date
2022-01-01 0.505001
2022-01-02 0.502176
2022-01-03 0.496355
2022-01-04 0.465097
2022-01-05 0.513211
2022-01-06 0.541774
2022-01-07 0.512196
2022-01-08 0.445211
2022-01-09 0.502424
2022-01-10 0.485066
2022-01-11 0.461869
2022-01-12 0.460119
2022-01-13 0.477759
2022-01-14 0.508717
2022-01-15 0.567970
2022-01-16 0.484227
2022-01-17 0.512102
2022-01-18 0.488818
2022-01-19 0.465061
2022-01-20 0.484021
2022-01-21 0.464983
2022-01-22 0.489202
2022-01-23 0.487195
2022-01-24 0.501363
2022-01-25 0.502019
2022-01-26 0.481233
2022-01-27 0.493846
2022-01-28 0.460140
2022-01-29 0.532713
2022-01-30 0.534169
2022-01-31 0.510004
2022-02-01 0.527707
2022-02-02 0.501206
2022-02-03 0.504888
2022-02-04 0.461278
2022-02-05 0.532792
2022-02-06 0.517769
2022-02-07 0.480851
2022-02-08 0.499022
2022-02-09 0.482356
2022-02-10 0.542733
我们使用groupby()
函数先将数据按照日期列进行分组,再使用mean()
方法计算每天全部数值的平均值。最后输出了按天分组的结果。
此外,我们还可以按月、年等粒度进行分组。例如,下面的代码演示了如何按月分组:
# 将数据按月聚合,并计算月均值
monthly_average = data.groupby(pd.Grouper(key='date', freq='M')).mean()
# 打印结果
print(monthly_average)
pd.Grouper()
函数用于指定按月分组,在本例中,我们将key
参数设置为'date'
,表示按照数据的日期列进行分组,freq
参数则设置为'M'
,表示按月进行分组。最后使用mean()
方法计算每个月全部数值的平均值,并输出结果:
value
date
2022-01-31 0.494970
2022-02-28 0.502776
结论
在Pandas中,我们可以使用groupby()
函数按照日期列进行分组,再使用相应的聚合函数计算指定粒度的数值指标。如按天、月、季度或年等不同粒度的数据分析需求。熟练掌握这些技巧,可以进一步提升我们的数据分析效率。