Персональная документация для управления датой и временем в python / pandas. Это живой документ, помогающий выполнять аналитические проекты в Jupyter Notebook.

Оглавление:

  1. "Какое сегодня число?"
  2. Тимедельтас
  3. Преобразовать дату и время в дату
  4. Создать новый столбец [« день ], [ неделя ], [ месяц ] или [ год ] из даты и времени»
  5. Преобразовать строку в метку времени
  6. Преобразовать строку в Datetime
  7. Преобразовать столбец даты строки Dataframe в Datetime
  8. Удалить данные строки даты
  9. Преобразовать метку времени в строку
  10. Преобразовать строковый столбец в Datetime
  11. Преобразовать отметку времени в дату и время
  12. Модификаторы даты Unix

p.s. Я работаю над сборником упражнений, чтобы помочь в изучении и запоминании функций даты, времени и отметки времени с помощью Python / Pandas.

Эта записная книжка станет отличным способом запомнить все эти функции даты и времени, поэтому вам не придется гуглить!

Представьте себе, что вы просто запомнили все эти операторы даты и времени и отметок времени. Это сделало бы анализ быстрее.

Если вы хотите получить уведомление, когда я запущу этот продукт, оставьте свой адрес электронной почты через эту форму.

1. Какая сегодня дата?

# gives timestamp of today's date at the time of cell execution
import pandas as pd
today = pd.to_datetime('today')

2. Timedeltas

# using timedelta on a datetime 
from datetime import timedelta
today = pd.to_datetime('today')
last_week = today + timedelta(days=-7)
# this will return a timestamp

3. Преобразование даты и времени в дату.

from datetime import datetime as dt
df['date'] = df['date_time'].dt.normalize()

4. Создайте новый столбец ["день"], ["неделя"], ["месяц"] или ["год"] из даты и времени

df['week'] = df['date_time'].dt.week
df['month'] = df['date_time'].dt.month
df['year'] = df['date_time'].dt.year
df['week-year'] = df['date_time'].dt.strftime('%Y-%U')
df['month-year'] = df['date_time'].dt.strftime('%Y-%m')

Другой способ приблизиться к этому (если вы получаете сообщение об ошибке: Можно использовать только метод доступа .dt со значениями типа datetime):

df['month'] = pd.DatetimeIndex(df['start_date']).month
df['year'] = pd.DatetimeIndex(df['start_date']).year

Ресурсы:

5. Преобразование строки в метку времени

import time
import datetime
s = "01/12/2011"
time_stamp = time.mktime(datetime.datetime.strptime(s, "%d/%m/%Y").timetuple())

6. Преобразуйте строку в Datetime

date_string = '2019-04-17'
time_stamp = pd.to_datetime(date_string)
date_time = time_stamp.date()

7. Преобразовать столбец строки Dataframe в Datetime

df['datetime'] = pd.to_datetime(df.date_string)
time_stamp = pd.to_datetime(date_string)
date_time = time_stamp.date()

8. Удалите данные строки даты.

date_string = '2020-07-26T00:00:00'
df['date_string'].str.strip('T00:00:00')

9. Преобразуйте метку времени или дату и время в строку.

str(timestamp)
#output will look like: '2019-11-02 11:26:58.924878'
str(timestamp)[:-16]
#output will look like: '2019-11-02'
#then you can evalute <, >, = vs. other date strings
sometimes you need to mess around with the values x & y here to get the string you want... str(timestamp)[X:Y]
for example, str(timestamp)[1:18] may be required in some instances, etc.

10. Преобразование строкового столбца в Datetime

df['date_time'] = df['string_date'].astype('datetime64[ns]')

11. Преобразовать отметку времени в дату и время

date_time = time_stamp.date()

12. Модификаторы даты Unix

%%     a literal %
%a     locale's abbreviated weekday name (e.g., Sun)
%A     locale's full weekday name (e.g., Sunday)
%b     locale's abbreviated month name (e.g., Jan)
%B     locale's full month name (e.g., January)
%c     locale's date and time (e.g., Thu Mar  3 23:05:25 2005)
%C     century; like %Y, except omit last two digits (e.g., 20)
%d     day of month (e.g., 01)
%D     date; same as %m/%d/%y
%e     day of month, space padded; same as %_d
%F     full date; like %+4Y-%m-%d
%g     last two digits of year of ISO week number (see %G)
%G     year of ISO week number (see %V); normally useful only with %V
%h     same as %b
%H     hour (00..23)
%I     hour (01..12)
%j     day of year (001..366)
%k     hour, space padded ( 0..23); same as %_H
%l     hour, space padded ( 1..12); same as %_I
%m     month (01..12)
%M     minute (00..59)
%n     a newline
%N     nanoseconds (000000000..999999999)
%p     locale's equivalent of either AM or PM; blank if not known
%P     like %p, but lower case
%q     quarter of year (1..4)
%r     locale's 12-hour clock time (e.g., 11:11:04 PM)
%R     24-hour hour and minute; same as %H:%M
%s     seconds since 1970-01-01 00:00:00 UTC
%S     second (00..60)
%t     a tab
%T     time; same as %H:%M:%S
%u     day of week (1..7); 1 is Monday
%U     week number of year, with Sunday as first day of week (00..53)
%V     ISO week number, with Monday as first day of week (01..53)
%w     day of week (0..6); 0 is Sunday
%W     week number of year, with Monday as first day of week (00..53)
%x     locale's date representation (e.g., 12/31/99)
%X     locale's time representation (e.g., 23:13:48)
%y     last two digits of year (00..99)
%Y     year
%z     +hhmm numeric time zone (e.g., -0400)
%:z    +hh:mm numeric time zone (e.g., -04:00)
%::z   +hh:mm:ss numeric time zone (e.g., -04:00:00)
%:::z  numeric time zone with : to necessary precision (e.g., -04,
       +05:30)
%Z     alphabetic time zone abbreviation (e.g., EDT)

Спасибо за прочтение! Надеюсь, эта статья была полезной.