@organica

Как реализовать цикл для обработки данных?

Уважаемые знатоки, помогите пожалуйста решить рутинную рабочую задачу. Ежемесячно она меня терзает,сил терпеть это больше нет, а автоматизировать расчет не получается.
Кратко: есть excel таблица, которая отражает количество выполненных операций сотрудником. Файл выгружается из системы учета. При работе сотрудника в ночную смену ( с 20:00 по 8:00 ) его операции разделяются на две строки: с 20:00 по 24:00 и с 24:00 по 08:00. Мне регулярно необходимо мониторить среднюю производительность работника, но вот эти задвоенные строки портят мне всю жизнь.

Изначально попробовал через pandas, перевел excel в DF, далее groupby().mean() и казалось бы, результат вышел. Однако при перепроверке результатов и вылез сей баг: допустим сотрудник в ночную смену сделал 2000 операций, но половина была до полуночи, а вторая половина после полуночи. При аггегировании получается что в среднем он сделал 1000 операций. Тем самым итоговая производительность за месяц сильно занижается. Ковырять руками длинюющий список из 90+ сотрудников идея так себе.
Что я хочу, но не могу получить:
Если сотрудник работает 2 календарных дня подряд, то значения по столбцу с колчичеством работы следует суммировать и записать в новый DF в формате дата-сотрудник-количество операций. Бывает так, что сотрудник выходит на подработку и работает 3 дня пордяд. В таком случае третий повторный день не следует суммировать, а следует учитывать как отдельную рабочую смену( после третьего дня повтора сотрудника точно не будет).

Структура сгруппированного DF:
df1.groupby(['Personnel','Work_Date'])['Boxes_Picked_Picking'].sum().head(50)

Personnel         Work_Date 
Aleksey           2020-05-25     519
                  2020-05-26     223
                  2020-05-27     203
                  2020-05-29     265
                  2020-05-30     262
                  2020-05-31     510
                  2020-06-02     329
                  2020-06-03     486
                  2020-06-04     766
                  2020-06-07     343
                  2020-06-08     372
                  2020-06-10     563
                  2020-06-11     289
                  2020-06-12     547
                  2020-06-14     829
                  2020-06-19     290
                  2020-06-20     783
                  2020-06-22    1006
                  2020-06-23     467
                  2020-06-24     875
                  2020-06-25     571
                  2020-06-26      16
                  2020-06-27     292
                  2020-06-28     562
                  2020-07-01     378
                  2020-07-02     542
                  2020-07-04     832
                  2020-07-05     429
                  2020-07-06     599
                  2020-07-08      88
                  2020-07-09     328
                  2020-07-10     877
                  2020-07-12     916
                  2020-07-14     190


Как мне разрешить свою задачу, в какую сторону думать?
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Andy_U
Вы, очевидно, неправильно считаете среднее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы