如何在 pandas 中按时间对数据进行分组(示例)


您可以使用以下语法按时间对数据进行分组并在 pandas 中执行聚合:

 df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()

此特定示例按小时将值分组到名为“小时”的列中,然后计算每个小时“销售额”列中的值的总和。

以下示例展示了如何在实践中使用此语法。

示例:Pandas 中按时间对数据进行分组

假设我们有以下 pandas DataFrame,它显示商店一天中不同时间的销售额:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' time ': ['2022-01-01 01:14:00', '2022-01-01 01:24:15',
                            '2022-01-01 02:52:19', '2022-01-01 02:54:00',
                            '2022-01-01 04:05:10', '2022-01-01 05:35:09'],
                   ' sales ': [18, 20, 15, 14, 10, 9]})

#convert date column to datetime
df[' time '] = pd. to_datetime (df[' time '])

#view DataFrame
print (df)

                 time sales
0 2022-01-01 01:14:00 18
1 2022-01-01 01:24:15 20
2 2022-01-01 02:52:19 15
3 2022-01-01 02:54:00 14
4 2022-01-01 04:05:10 10
5 2022-01-01 05:35:09 9

我们可以使用以下语法将时间列按小时进行分组,并计算每个小时的销售额总和:

 #group by hours in time column and calculate sum of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()

time
1 38
2 29
4 10
5 9
Name: sales, dtype: int64

从结果我们可以看出:

  • 第一小时内共成交38笔。
  • 第二小时内共成交29笔。
  • 第四个小时总共卖出了10笔。
  • 第 5 个小时内共成交9笔。

请注意,我们还可以执行另一个聚合。

例如,我们可以计算每小时的平均销售数量:

 #group by hours in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . mean ()

time
1 19.0
2 14.5
4 10.0
5 9.0
Name: sales, dtype: float64

如果需要,我们还可以按小时和分钟进行分组。

例如,以下代码显示如何计算按小时和分钟分组的销售额总和:

 #group by hours and minutes in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour , df[' time ']. dt . minute ]). dirty . mean ()

time time
1 14 18
      24 20
2 52 15
      54 14
4 5 10
5 35 9
Name: sales, dtype: int64

从结果我们可以看出:

  • 1小时14分钟内的平均销售次数为18次
  • 1小时23分钟内平均销售数量为20
  • 2小时52分钟内的平均销售次数为15次

等等。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何在 Pandas 中创建日期范围
如何从 Pandas 中的日期中提取月份
如何在 Pandas 中将时间戳转换为日期/时间

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注