熊猫每周平均

时间:2019-08-25 23:53:11

标签: python pandas

我有一个长达一年的大型数据框,其中包含月份(1-12),星期(1-52),星期几(0-6)和小时(0-23)。

下面只是数据集的摘要。每行都是一个事件。

下面的摘录的第一部分显示了使用日期/时间戳为2018-04-01 00:00:00(星期日)捕获的多个事件。下面的代码段的第二部分(在第一个椭圆之后)在接下来的一小时内显示多次出现,而第三部分在下一个小时内出现,依此类推。

    month week  day_of_week  hour
0     4    13        6         0
1     4    13        6         0
2     4    13        6         0
3     4    13        6         0
4     4    13        6         0
...
100   4    13        6         1
101   4    13        6         1
102   4    13        6         1
...
...
300   4    13        6         2
301   4    13        6         2
302   4    13        6         2
...



我希望能够显示此数据集的摘要,其中显示每个小时(0-23)和每个月的每周平均发生次数。

例如:

month  hour  weekly_ave
4        0       100
4        1       175
4        2       250
...
4       23       500
5        0        90


如何使用pandas groupby和聚合函数来做到这一点?


谢谢!

2 个答案:

答案 0 :(得分:0)

df.groupby(['month','hour'])['hour'].count()

然后,如果您需要将此格式更好一点:

df.groupby(['month','hour'])['hour'].count().rename("weekly:ave").reset_index()

答案 1 :(得分:0)

我能够弄清楚。我不得不再做一次groupby

df.groupby(['month', 'hour', 'week']) \
    .agg({'day_of_week': 'count'}) \
    .groupby(['month', 'hour']).mean() \
    .rename(columns={"day_of_week": "weekly_ave"}).reset_index()

这给了我我所需要的东西,但是有一种更优雅的方式吗?

谢谢。