Панды - группировка по нескольким столбцам и сравнение средних значений - PullRequest
0 голосов
/ 23 ноября 2018

У меня 4000 фреймов данных плюс pandas с записями для отдельных событий по отметке времени

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 голосов
/ 23 ноября 2018

Если я правильно понимаю, то, что вы ищете, должно быть

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

Сначала мы группируем по dateDayOfWeek и Holiday, чтобы сохранить столбцы - они всегда будутто же самое для любой отдельной даты), подсчитайте записи за дату, сбросьте индекс, сгруппируйте по DayOfWeek и Holiday и вычислите среднее значение.

Для предоставленных вами образцов данных это приводит к

DayOfWeek  Holiday
Monday     True       1.5
Thursday   False      2.0
Tuesday    False      2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...