Во-первых, я начинающий в Python, и я впервые пишу сценарий для личного проекта, поэтому будьте осторожны в своих ответах.
Входные данные
I иметь несортированный CSV-файл с временем входа всех сотрудников за данный месяц, который выглядит следующим образом:
13,03 / 02/2020 09: 43
12,03 / 02/2020 10: 26
10,03 / 02/2020 12: 12
13,03 / 02/2020 18: 22 * 1010 * 12,03 / 02/2020 18: 23
13,03 / 03/2020 09: 51
12,03 / 03/2020 10: 38
10,03 / 03/2020 12: 02
13,03 / 03/2020 18: 28
12,03 / 03/2020 18:29
, где первый столбец - идентификатор сотрудника, а второй столбец - время входа / выхода из системы.
Я хочу узнать лучший / наиболее эффективный способ считывания времени входа из запишите и вычислите:
Выход
Basi c:
1. Сколько дней сотрудник находился в офисе
2. общее рабочее время сотрудника за каждый день
Employee ID - xxxx
Date Duration
DD/MM/YY hh:mm:ss
DD/MM/YY hh:mm:ss
DD/MM/YY hh:mm:ss
Total No. of Working Days in this month:
Дополнительно:
Рассчитать wh ich были воскресными днями и добавьте эти дни к своей посещаемости в качестве подарка
Еще более продвинутый:
Сравните с онлайн-календарем Google для региона, чтобы найти выходные дни в этом месяце для этого региона и добавить эти праздники к их посещаемости
Мой логин c:
- Прочитайте файл CSV, извлеките время входа и сохраните его в отсортированном списке. Это создает список списков примерно так:
[['10', '03/02/2020 12:12'],['10', '03/03/2020 12:02'], ['10', '03/06/2020 15:12'], ['10', '03/07/2020 16:18'], ['10', '03/08/2020 11:04'], ['10', '03/08/2020 11:05'], ['10', '03/09/2020 11:27'], ['10', '03/10/2020 17:06'], ['10', '03/11/2020 22:13'], ['10', '03/12/2020 11:13'], ['10', '03/13/2020 11:57'], ['10', '03/14/2020 11:29'], ['10', '03/16/2020 10:32'], ['10', '03/17/2020 17:37'], ['10', '03/18/2020 12:24'], ['10', '03/19/2020 15:38'], ['10', '03/19/2020 15:45'], ['10', '03/20/2020 15:26']]
Преобразуйте этот список в отсортированный словарь, чтобы все времена входа сотрудника были сохранены вместе в списке. Чтобы выглядеть примерно так:
{'10':['03/02/2020 12:12','03/02/2020 15:38','03/08/2020 11:05'],
'12':['03/03/2020 11:27','03/03/2020 12:02','03/03/2020 18:29'],
'13':['03/16/2020 10:32','03/16/2020 11:57','03/16/2020 19:04']}
и так далее ...
... где, "ключом" словаря является идентификатор сотрудника и "значение" список времени входа / выхода из системы, отсортированный по дате
Для каждого идентификатора сотрудника, для каждого дня, рассчитайте разницу во времени между временем первого входа в систему и временем последнего выхода из системы (определенно будет несколько записей) с использованием функции timedelta для datetime module
Создайте файл Excel, который выглядит как ожидаемый результат, показанный выше
The Question
Кажется как довольно простая и простая задача, и все же ...
Я застрял при попытке объединить список списков в правильный словарь с идентификатором сотрудника в качестве ключа и списком всех их времен входа в систему как Значение. Попытка Google найти возможное решение привела меня к https://thispointer.com/python-how-to-convert-a-list-to-dictionary/. Но это не помогает моей проблеме, потому что я пытаюсь извлечь очень конкретную c информацию из того же списка.
Не удалось найти ничего похожего на stackoverflow, поэтому я публикую новый вопрос.
Опять же, я новичок в программировании, поэтому, пожалуйста, дайте мне знать, если мой лог c решения этой проблемы имеет смысл, или я должен попробовать другой подход.
PS: У меня есть посмотрел на pandas, но, кажется, нет необходимости учиться с нуля для этой простой задачи.
Кроме того, следующий шаг, вычисление разницы во времени, может быть более сложным, чем я себе представляю, поэтому любая помощь по этому вопросу будет очень приветствую.
Кроме того, я не прошу писать код для меня. Я хочу выучить этот прекрасный язык, чтобы я мог выздороветь и быстро создавать такие сценарии.
Если вы сделали это так далеко, спасибо, что нашли время! Ты делаешь мир лучше :)