Домашнее задание включает в себя 2 задачи:
-
Даны 3 колонки с данными: 'Name', 'Start Date' и 'End Date'. 'Name' - уникальное название заявки, пришедшей в центр технической поддержки. 'Start Date' - время поступления заявки. 'End Date' - время обработки заявок.
Необходимо рассчитать еще одну колонку - 'Implementation time', показывающую количество рабочих часов (https://en.wikipedia.org/wiki/Business_hours), потраченных на обработку каждой заявки.
Рабочие часы начинаются в 08:00 и заканчиваются в 18:00. Рабочая неделя ПН-ПТ, есть праздники (РФ).
Пример (Даты в ISO):
Name Start Date End Date Implementation time Comment 1 2020-11-01T08:00:00 2020-11-01T18:00:00 0 Выходной 2 2020-11-01T08:00:00 2020-11-02T09:30:00 1.5 Выходной + 1.5 часа в ПН 3 2020-11-01T08:00:00 2020-11-05T19:00:00 24 Выходной + 8 ПН + 8 ВТ + СР - выходной + 8 ЧТ И т.д.
Для задания необходимо:
- Самостоятельно сгенерировать случайные 'Name', 'Start Date' и 'End Date' при условии 01-01-2019 <= 'Start Date' <= 'End Date' < 01-01-2020 (N датасетов, где размер датасета 10^N, N < 8 - натуральное).
- По исходным данным построить гистограмму "сколько поступило и обработано заявок по месяцам".
- Построить график скорости работы вашей программы в зависимости от N.
- Написать тесты с пояснениями.
-
По первой ДЗ с БД написать аналог на Pandas. Сравнить производительность с запросами к БД (pd.read_csv, pd.read_sql и без pandas). Результаты оформить в jupyter notebook.