Самые важные инструменты, которые могут вам понадобиться в работе.

Дата и время — это случай, который часто встречается у каждого аналитика данных, особенно в 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.