Самые важные инструменты, которые могут вам понадобиться в работе.
Дата и время — это случай, который часто встречается у каждого аналитика данных, особенно в Python и SQL. Если вы не знакомы с общими функциями даты и времени Python, это может вызвать проблемы, и вы просто потратите время на запросы в StackOverflow. Это натолкнуло меня на мысль поделиться тем, что я действительно считаю полезным, и резюмировать наиболее важные инструменты, которые могут вам понадобиться в вашей работе.
1. Введение в библиотеку datetime
В Python datetime — одна из самых популярных библиотек для каждого программиста Python. Эта библиотека предоставляет множество функций для работы со временем. Тем не менее, я хотел бы сделать его простым, показав вам, как его использовать, и сообщив вам некоторые моменты, которые действительно важны.
a) Использование date для работы только с датой и datetime для работы с датой и временем
from datetime import datetime, date date_only = date(2022,01,21) print(date_only) # > 2022-01-21 print(type(date_only)) # > <class datetime.date> date_time = datetime(2022,01,21) print(date_time) # > 2022-01-21 00:00:00 print(type(date_time)) # > <class datetime.datetime> date_timeB = datetime(2022,01,21, 22, 15, 15) print(date_timeB) # > 2022-01-21 22:15:15 print(type(date_timeB)) # > <class datetime.datetime>
Судя по приведенной выше иллюстрации, использование класса даты гораздо удобнее, если вы имеете дело только с датой. Между тем, datetime всегда будет генерировать формат времени в конце, даже если вы не укажете время (как показано в переменной date_time). Просто держите его простым для вашего использования
Очень важно знать, что переменная находится в формате класса, что может быть неправильным использованием, если вы работаете со словарями, пандами, JSON, форматируете текст и т. д. Эта функция вызывается только для инициализации оператора даты в Python.
b) Использование today для автоматизации
Datetime предоставил сегодняшний метод для получения текущей даты. Этот метод определенно облегчает работу автоматизации, если у вас есть регулярная автоматизация. И дата, и дата-время имеют этот метод для вызова. Код ниже иллюстрирует, как код может быть
from datetime import date, datetime today = date.today() print(today) # > 2022-01-21 print(type(today)) # > <class datetime.date> today = datetime.today() print(today) # > 2022-01-21 11:15:15.94387 print(type(today)) # > <class datetime.datetime>
2. Работа с различными формами даты
Теперь мы собираемся обсудить формат даты. В основном формат даты необходимо изменить на строковый формат, потому что он позволяет работать с различными файлами, такими как JSON, текст, фреймворк данных, список, словарь и т. д. В моем случае я довольно часто использовал строковый формат для манипулирования документами даты SQL. .
И дата, и дата-время имеют strftimeметод для изменения формата класса на строковый формат в различной форме даты. В приведенном ниже коде показано, как это будет работать.
from datetime import datetime # initialize date today = date.today() # 2022-01-01 in class format #form date1 YYYYmm = today.strftime("%Y%m") print(YYYYmm) # > 202201 #form date2 YYYY_mm_dd = today.strftime("%Y %m %d") print(YYYY_mm_dd) # > 2022 01 01 #form date2 YYYY_mm_dd = today.strftime("%Y/%m/%d") print(YYYY_mm_dd) # > 2022/01/01 #form date3 isoformat = today.isoformat() print(isoformat) # > 2022-01-01 #form date4 fullname = today.strftime('%d %B %Y') print(fullname) # > 01 January 2022
Как написано в приведенном выше примере кода, использование strftime позволяет нам преобразовать все даты в строковый формат. Мы можем легко использовать строку ключевого слова в качестве аргументов для манипулирования формой даты, какой бы вы ни хотели, от даты, разделенной пробелом, даты, разделенной косой чертой, формата ISO и т. д. Чтобы написать строку, не забудьте использовать знак «%» перед Ключевое слово ключевой даты. Кроме того, я помещаю ключи даты, которые наиболее часто используются для этого метода.
- Г = год
- м = номер месяца
- B = название месяца
- д = день
- Ч = час
- М = минута
- С = секунда
3. Относительная дата
Относительная дата позволяет нам делать вычитание или добавление даты. Например, дата 22 января 2022 года, мы вычитаем 1 месяц, поэтому дата будет 22 декабря 2021 года. Есть две основные библиотеки, которые я использовал для работы с относительной датой, состоящие из datetime и dateutil.
В библиотеке Datetime для этого есть timedelta, однако аргументы варьируются от миллисекунд до недель. Между тем, dateutil позволяет работать с единицами выше дня, включая недели, месяцы и годы. Вот несколько примеров кода, связанных с проблемами относительной даты:
from datetime import datetime, date, timedelta from dateutil.relativedelta import relativedelta today = date(2022, 1, 22) yesterday = today - timedelta(days = 1) tomorrow = today + timedelta(days = 1) print(yesterday) # > 2022-01-21 print(tomorrow) # > 2022-01-23 last_month = today - relativedelta(months = 1) last_month_first_date = date(last_month.year, last_month.month, 1) print(last_month) # > 2021-12-22 print(last_month_first_date) # > 2021-12-01
4. Месячный диапазон
Найти количество дней в месяце может быть проблематично, если вы не знаете функцию. Это довольно просто, если вы знаете библиотеку календарь, просто принимая год и месяц в качестве аргументов и возвращая первый день недели и общее количество дней. Общее количество дней можно легко понять как общее количество дней в этом месяце. Однако первый день недели означает, каким должен быть день даты 1. Дни недели варьируются от 0 до 6, начиная с понедельника по воскресенье. В приведенном ниже коде показано, как использовать библиотеку календаря, чтобы упростить пример.
from calendar import monthrange first_weekday, total_days = monthrange(2022,1) print(first_weekday) # > 5 : date 1 located in weekday 5(Saturday) print(total_days) # > 31 : absolutely January total days
В двух словах, это четыре библиотеки даты и времени Python, которые я считаю очень важными в Python. На самом деле, есть еще другие функции из библиотек выше, такие как работа с часовым поясом, парсинг фрейма данных и другие. Однако я редко имею дело с ними, потому что моя работа больше связана с автоматизацией данных и подготовкой документов SQL. Очень рад поделиться этим с вами. Не забывайте подписываться на меня, чтобы каждую неделю получать полезную информацию об аналитике данных. Ваше здоровье!
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.