Персональная документация для управления датой и временем в python / pandas. Это живой документ, помогающий выполнять аналитические проекты в Jupyter Notebook.
—
Оглавление:
- "Какое сегодня число?"
- Тимедельтас
- Преобразовать дату и время в дату
- Создать новый столбец [« день ], [ неделя ], [ месяц ] или [ год ] из даты и времени»
- Преобразовать строку в метку времени
- Преобразовать строку в Datetime
- Преобразовать столбец даты строки Dataframe в Datetime
- Удалить данные строки даты
- Преобразовать метку времени в строку
- Преобразовать строковый столбец в Datetime
- Преобразовать отметку времени в дату и время
- Модификаторы даты 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
Ресурсы:
- Https://www.interviewqs.com/ddi_code_snippets/extract_month_year_pandas
- Https://stackoverflow.com/questions/39208305/pandas-how-to-create-a-year-week-variable
- Https://stackoverflow.com/questions/31984119/python-how-to-know-the-week-number-in-the-year-of-the-day-saturday-as-the-firs
- Https://stackoverflow.com/questions/31181295/converting-a-pandas-date-to-week-number
- Https://www.programiz.com/python-programming/datetime/strftime
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)
Спасибо за прочтение! Надеюсь, эта статья была полезной.