熊猫-按多列分组并比较计数的平均值

时间:2018-11-23 18:26:20

标签: python pandas data-science

我有4000条记录以及熊猫数据框,其中包含按时间戳记的各个事件的记录

Timestamp            Date        Holiday  DayOfWeek
2017-01-01 02:25:00  2017-01-01  True      Monday
2017-01-01 12:25:00  2017-01-01  True      Monday
2017-01-02 03:45:00  2017-01-02  False     Tuesday
2017-01-02 15:55:00  2017-01-02  False     Tuesday
2017-02-03 01:01:00  2017-02-03  False     Thursday
2017-02-03 4:25:00   2017-02-03  False     Thursday
2017-04-03 4:25:00   2017-04-03  True      Monday

我要尝试的是比较一周中的每一天每天的活动方式以及是否在假期。
因此,对于一周中的每一天,请比较该天是假日与该天不是假日的平均事件数。

events.groupby(['DayOfWeek', 'Holiday']).count()

请问我每个星期假日每天有多少活动

DayOfWeek Holiday  Count
Monday    True     50
          False    34
Tuesday   True     32
          False    23
...

但是我不知道如何将其与每个单独日期的事件数结合起来

events.groupby('Date').count()
Date        Count
01-01-2017  2
01-02-2017  2
01-03-2017  4
....

我想要一个类似的数据框

DayOfWeek Holiday  Mean
Monday    True     4.5
          False    3.23
Tuesday   True     2.1
          False    3.2
...

然后从中理想地制作一个条形图。

但是无法弄清楚如何结合操作来创建我想要的东西。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您要寻找的是

df.groupby(['Date', 'DayOfWeek', 'Holiday']).count().reset_index().groupby(['DayOfWeek', 'Holiday']).mean()['Timestamp']

首先,我们按date分组(以及DayOfWeekHoliday保留列-在任何单个日期它们都将始终相同),对每个日期的记录计数,重置索引,按DayOfWeekHoliday分组并计算平均值。

对于您提供的结果的示例数据,

DayOfWeek  Holiday
Monday     True       1.5
Thursday   False      2.0
Tuesday    False      2.0