Найти среднее по продолжительности, но журналы за тот же день, как один - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть логи пользователей:

df = pd.DataFrame({'users' : [1,1,1,2],
            'dates' : ['2018-09-06','2018-09-06','2018-09-10','2018-09-10'],
              'duration' : [3,3,8,8]})

дает:

user dates      duration
1    2018-09-09    3
1    2018-09-09    3
1    2018-09-10    8
2    2018-09-10    8
           ...

Вот хитрая часть:

Как видите, некоторые пользователи делят своиработать в двух частях.Таким образом, пользователь 1 в день 28 проделал 6 часов, но выглядит как 3 и 3.

Время для простой статистики:

Когда мы делаем средние часы, каждый, кто разделил их время, ихзначения выглядят как крайние (беспорядок со средним значением 3).

Я мог бы использовать среднее.Но я хочу увидеть любые экстремальные значения, которые кто-то может иметь, как в течение дня, и сравнить их со средним значением.

Пример: вместо 8 часов этот пользователь все еще работал 6 часов, что является экстремальным значением, принимаемым какза день.

Финал: Итак, я хочу взять любые ежедневные часы как один, а затем сравнить их ежедневные часы со средним и медианным.

Один из вариантов может быть:

df.groupby(['users','days'])['duration'].mean()

, но все еще делает днем, а если не делает днем, то каждый день имеет независимость, что смешивается со средним значением.

1 Ответ

0 голосов
/ 18 сентября 2018

Это может решить эту проблему:

df = pd.DataFrame({'users' : [1,1,1,2],
                'dates' : ['2018-09-06','2018-09-06','2018-09-10','2018-09-10'],
                  'duration' : [3,3,8,8]})


a = df.groupby(['users','dates'])['duration'].sum().reset_index()
a.groupby(['users'])['duration'].mean().reset_index()

Сначала найдите сумму каждого дня, добавив все части, если они существуют, и затем сохраните ее как единицу для этого дня.Позже, найдите среднее значение для каждого дня, так как все значения взяты из каждого дня.

Результат:

    users duration
0   1     7
1   2     8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...