Python – 如何按天分组Pandas DataFrame?

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()函数按照日期列进行分组,再使用相应的聚合函数计算指定粒度的数值指标。如按天、月、季度或年等不同粒度的数据分析需求。熟练掌握这些技巧,可以进一步提升我们的数据分析效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程