Pandas 将每小时数据分组为带有日期索引的每日总和

作者:编程家 分类: pandas 时间:2025-06-10

Pandas 将每小时数据分组为带有日期索引的每日总和

在数据处理和分析领域,Pandas 是一个非常强大的工具。它提供了许多灵活且高效的函数和方法,可以方便地对数据进行处理、转换和分析。在某些情况下,我们可能需要将一个小时级别的数据按照日期进行分组,并计算每日的总和。本文将介绍如何使用 Pandas 实现这个功能。

首先,让我们看一个示例数据集。假设我们有一个包含时间戳和某个指标值的数据集,如下所示:

python

import pandas as pd

# 创建示例数据集

data = {'timestamp': ['2022-01-01 00:00:00', '2022-01-01 01:00:00', '2022-01-01 02:00:00', '2022-01-02 00:00:00', '2022-01-02 01:00:00', '2022-01-02 02:00:00'],

'value': [10, 20, 30, 40, 50, 60]}

df = pd.DataFrame(data)

df['timestamp'] = pd.to_datetime(df['timestamp']) # 将 timestamp 列转换为日期时间类型

df.set_index('timestamp', inplace=True) # 将 timestamp 列设置为索引

这个数据集包含了两天的数据,每天有三个小时的数据。我们的目标是将这些数据按照日期进行分组,并计算每日的总和。

使用 resample 方法进行分组

Pandas 提供了一个非常方便的方法 resample,可以进行时间序列的重采样和频率转换。我们可以使用 resample 方法将小时级别的数据分组为每日总和。下面是示例代码:

python

# 使用 resample 方法进行分组

daily_sum = df.resample('D').sum()

在上面的代码中,我们使用了字符串 'D' 作为参数,表示按照天进行分组。resample 方法会自动根据索引的时间间隔进行分组,并计算每个分组的总和。

结果和解释

现在,我们来查看一下分组后的结果:

python

print(daily_sum)

输出结果如下:

value

timestamp

2022-01-01 60

2022-01-02 150

可以看到,每日的总和已经计算出来了。第一天的总和为 60,第二天的总和为 150。

代码解释

让我们来解释一下上面的代码。首先,我们使用 resample 方法对数据进行分组,并指定了分组的频率为每天。然后,我们使用 sum 方法计算每个分组的总和。最后,我们得到了一个新的 DataFrame 对象 daily_sum,它包含了每日的总和数据。

这个方法的好处是它会自动根据索引的时间间隔进行分组,无需手动计算每天的起始时间和结束时间。另外,resample 方法还支持其他的频率转换,比如按周、月、季度等进行分组。

本文介绍了如何使用 Pandas 将每小时数据分组为带有日期索引的每日总和。我们使用了 resample 方法对数据进行分组,并使用 sum 方法计算每个分组的总和。这个方法非常方便,能够自动根据索引的时间间隔进行分组。

以上就是使用 Pandas 将每小时数据分组为带有日期索引的每日总和的方法。希望对你在数据处理和分析中有所帮助!