Посчитать дни прибавить месяцы: Прибавить дни к дате онлайн 📅 расчет даты по количеству дней, недель, месяцев, лет

Как работать с датами в pandas / Хабр

Библиотека Pandas — это весьма эффективный инструмент для обработки данных, представляющих собой временные ряды. На самом деле, эта библиотека была создана Уэсом МакКинни для работы с финансовыми данными, которые состоят, главным образом, из временных рядов.

При работе с временными рядами много сил уходит на выполнение различных операций с датой и временем. Этот материал посвящён ответам на четыре распространённых вопроса из данной сферы.

Возможно, вы уже сталкивались с этими вопросами. Ответить на все из них, кроме последнего, можно сравнительно просто. А вот ответ на последний, довольно-таки хитрый вопрос, представляет собой последовательность из нескольких действий.

Начнём с создания учебного датафрейма (объекта DataFrame), с которым будем экспериментировать:

df = pd.DataFrame({
    "booking_id": [1001, 1002, 1003, 1004, 1005],
    "property" : ["A", "A", "B", "B", "C"],
    "created_at": ["2022-03-01", "2022-02-10", "2022-04-12",
                   "2022-04-11", "2022-06-05"],
    "checkin_date": ["2022-06-01", "2022-06-10", "2022-06-02",
                     "2022-06-20", "2022-08-10"],
    "checkout_date": ["2022-06-06", "2022-06-15", 
                      "2022-06-06","2022-06-28", "2022-08-16"],
    "amount": [5400, 5600, 4800, 9000, 6500]
})
# изменение типа данных 
date_cols = ["created_at","checkin_date","checkout_date"]
df[date_cols] = df[date_cols].
astype("datetime64[ns]") # вывод объекта DataFrame df
Датафрейм, с которым мы будем работать

Для того чтобы у нас была бы возможность пользоваться функциями pandas, предназначенными для работы с датой и временем, даты в датафрейме должны быть представлены значениями подходящего типа данных. Именно по этой причине мы поменяли тип данных соответствующих столбцов на datetime64[ns].

1. Как извлечь из даты информацию о месяце и годе?

Дата содержит различные фрагменты информации, такие как год, день недели, месяц и так далее. Все эти фрагменты можно извлечь из даты с использованием методов, к которым обращаются через аксессор 

dt.

Например, месяц можно получить с помощью метода month. А как получить сведения о годе и месяце в формате ГГГГ-ММ? Ответ на этот вопрос уже не так очевиден. Извлечь эти сведения из даты можно, прибегнув к методу to_period:

# создание столбца year_month
df["year_month"] = df["created_at"]. dt.to_period("M")
# вывод объекта DataFrame
df
Столбец year_month в датафрейме

2. Как прибавить к дате временной интервал?

Прибавление к датам временных интервалов или вычитание их из дат — это одна из операций, часто встречающихся при работе с датами. Выполнить её можно, воспользовавшись функцией DateOffset.

Добавим 1 день к дате выселения (например — из некоего объекта недвижимости) (checkout_date) для записи о бронировании с идентификатором 

1001:

df.loc[df["booking_id"]==1001, "checkout_date"] = \
df.loc[df["booking_id"]==1001, "checkout_date"] + \
pd.DateOffset(days=1)
# проверка результата
print(df.loc[df["booking_id"]==1001, "checkout_date"])
# вывод
0   2022-06-07
Name: checkout_date, dtype: datetime64[ns]

3. Как найти интервал в днях между двумя датами?

Интервал между двумя датами можно найти, вычтя одну из другой. Результатом этой операции будет объект Timedelta, а это не совсем то, что нам нужно:

df["checkout_date"][0] - df["checkin_date"][0]
# вывод
Timedelta('6 days 00:00:00')

Получить разницу между датами в днях, в виде целого числа, можно, воспользовавшись атрибутом days. Создадим столбец, который выводит разницу в днях между датой вселения (checkin_date) и датой создания бронирования (created_at):

# разница, выраженная в днях
df["days_to_checkin"] = \
(df["checkin_date"] - df["created_at"]).dt.days
# вывод объекта DataFrame
df
Столбец days_to_checkin в датафрейме

4. Как сформировать последовательность дат между начальной и конечной датами?

Предположим, нам нужен календарь, который показывает дни, в которые объект недвижимости забронирован. Сейчас в первой строке датафрейма есть запись о том, что объект недвижимости A забронирован с 2022–06–01 по 2022–06–07. Получается, что объект A забронирован на даты 2022–06–012022–06–022022–06–032022–06–042022–06–052022–06–06 (если предположить, что постоялец выселяется в 10 утра 2022–06–07).

Такой календарь можно создать, найдя даты между датами вселения и выселения и внеся их в объект DataFrame.

Для начала создадим датафрейм 

calendar, содержащий столбцы property, checkin_date и checkout_date:

# создание объекта DataFrame calendar
calendar = df[["property","checkin_date","checkout_date"]]

Функция date_range даёт нам даты, находящиеся между начальной и конечной датами. Вот что получится для первой записи о бронировании:

pd.date_range(calendar["checkin_date"][0], calendar["checkout_date"][0])
# вывод
DatetimeIndex(['2022-06-01', '2022-06-02', '2022-06-03', 
               '2022-06-04', '2022-06-05', '2022-06-06', 
               '2022-06-07'],
              dtype='datetime64[ns]', freq='D')

Тут есть одна проблема: нам не нужно, чтобы дата выселения (checkout_date) была бы показана как дата, когда объект недвижимости забронирован. Поэтому мы, прежде чем находить диапазон дат, вычтем 1 из даты выселения.

Для того чтобы сделать это для всех строк, нужно воспользоваться функцией apply.

Мы, кроме того, конвертируем вывод функции date_range в список, воспользовавшись конструктором list:

# создание столбца booked_days
calendar.loc[:, "booked_days"] = calendar.apply(
    
    lambda x: list(
        pd.date_range(
            x.checkin_date, 
            x.checkout_date - pd.DateOffset(days=1)
        ).date
    ),
    axis = 1
    
)
# вывод объекта DataFrame
calendar
Столбец booked_days в датафрейме

Далее — нам нужно заполнить датафрейм, развернув даты из столбца booked_days. В этом нам поможет функция explode:

# функция explode 
calendar = calendar.explode(
    column="booked_days", ignore_index=True
)[["property","booked_days"]]
# вывод первых 5 строк
calendar.head()
Первые 5 строк календаря

Теперь у нас имеется календарь дней, в которые объект недвижимости забронирован.

Итоги

Мы нашли ответы на 4 вопроса, решили 4 задачи, с которыми вы, скорее всего, столкнётесь, работая с временными рядами, содержащими даты. Надеемся, вам пригодится то, о чём вы сегодня узнали.

О, а приходите к нам работать? 🤗 💰

Мы в wunderfund.io занимаемся высокочастотной алготорговлей с 2014 года. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.

Мы предлагаем интересные и сложные задачи по анализу данных и low latency разработке для увлеченных исследователей и программистов. Гибкий график и никакой бюрократии, решения быстро принимаются и воплощаются в жизнь.

Сейчас мы ищем плюсовиков, питонистов, дата-инженеров и мл-рисерчеров.

Присоединяйтесь к нашей команде.

DAX функции DATE, DATEVALUE, YEAR, MONTH, DAY, TODAY в Power BI и Power Pivot

 Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):

  • DAX функция TODAY
  • DAX функция DATE
  • DAX функция DATEVALUE
  • DAX функции YEAR, MONTH и DAY

Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы обсудим функции в DAX, возвращающие дату в том или ином виде. И это функции DATE, DATEVALUE, YEAR, MONTH, DAY и TODAY в Power BI и PowerPivot.

Разберем каждую из функций отдельно.

Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.

Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».

 

DAX функция TODAY в Power BI и PowerPivot

TODAY () — сегодня. Возвращает текущую дату.

Данная функция очень простая и не содержит в себе ни одного параметра.

Синтаксис:

TODAY ()

Пример формулы:

Сегодня = TODAY ()

Результатом выполнения этой формулы будет текущее сегодняшнее число:

 

DAX функция DATE в Power BI и PowerPivot

DATE () — возвращает в формате datetime прописанную в параметрах дату.

Синтаксис:

DATE (год; месяц; день)

! — Если месяц не соответствует числам 1-12, то лишние (недостающие) месяца добавляются (убавляются) к году.
! — Если дни не соответствуют числам 1-31 в месяце, то лишние (недостающие) дни добавляются (убавляются) к месяцу и к году.

Примеры формул с использованием функции DATE.

Пример 1: DATE (2018; 13; 23) 
Результат 1: 23.01.2019

Пример 2: DATE (2018; -1; 23) 
Результат 2: 23.11.2017

Пример 3: DATE (2018; 01; 32)
Результат 4: 01.02.2018

Пример 4: DATE (2018; 02; -1)
Результат 4: 30.01.2018

Пример выполнения формулы в Power BI на основе DAX функции DATE будет выглядеть так:

 

DAX функция DATEVALUE в Power BI и PowerPivot

DATEVALUE () — используя локаль даты ПК, возвращает в формате datetime прописанную в параметрах текстовую дату.

Синтаксис:

DATEVALUE ("Дата")

«Дата» — может быть записана в различных вариантах, в том числе, и сокращенных.

Рассмотрим функцию DATEVALUE на примерах формул:

Пример 1: DATEVALUE ("2018-01-01") 
Результат 1: 01.01.2018

Пример 2: DATEVALUE ("2018.01.01")
Результат 2: 01.01.2018

Пример 3: DATEVALUE ("2018/01/01")
Результат 3: 01.01.2018

Пример 4: DATEVALUE ("2018,01,01")
Результат 4: 01.01.2018

Пример 5: DATEVALUE ("2018 01 01")
Результат 5: 01.01.2018

Пример 6: DATEVALUE ("2018 12")
Результат 6: 01.12.2018

Пример 7: DATEVALUE ("декабрь 2018")
Результат 7: 01.12.2018

Пример 8: DATEVALUE ("23 дек") 
Результат 8: 23.12.2018

В Power BI формула на основе DATEVALUE работать будет так:

 

DAX функции YEAR, MONTH и DAY в Power BI и PowerPivot

YEAR (), MONTH () и DAY () — возвращают год, месяц и день в формате чисел из значения даты.

Синтаксис:

YEAR ([Дата])
MONTH ([Дата])
DAY ([Дата])

Где [Дата] — столбец, содержащий даты, либо дата в текстовом или datetime форматах.

Примеры формул на основе функций YEAR, MONTH и DAY.

Пример 1: YEAR (DATE (2018; 10; 18)) 
Результат 1: 2018
Пример 2: YEAR ("декабрь 2017")
Результат 2: 2017

Пример 3: MONTH (DATE (2018; 10; 18))
Результат 3: 10
Пример 4: MONTH ("18 декабря")
Результат 4: 12

Пример 5: DAY (DATE (2018; 10; 13))
Результат 5: 13
Пример 6: DAY ("17 декабря")
Результат 6: 17

В большинстве случаев, эти функции в Power BI или PowerPivot будут использоваться со внутренним параметром [Дата], то есть, значение даты будет указано в столбце. Давайте рассмотрим соответствующий пример.

В Power BI Desktop имеется исходная таблица с датами:

 

Создадим в этой таблице 3 вычисляемых столбца по следующим формулам:

Год = YEAR ([Дата])
Месяц = MONTH ([Дата])
День = DAY ([Дата])

В результате, в Power BI получим следующую расширенную таблицу:

 

На этом, с разбором функций дат в Power BI и PowerPivot, в этой статье все. Переходите к следующей статье, где мы разберем похожие функции времени.

Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(11 голосов, в среднем: 5 из 5 баллов)

 
 
Успехов Вам, друзья!
С уважением, Будуев Антон.

Проект «BI — это просто»
 
 
 
 

Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
 
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.

 
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D

11-й месяц года

Ноябрь — последний месяц осени в северной половине мира. В южной половине это последний месяц весны.

Рожденный в ноябре цветок — хризантема.

©bigstockphoto.com/basel101658

Ноябрь — одиннадцатый месяц григорианского календаря, состоящий из 30 дней. Это последний месяц осени в Северном полушарии.

Почему ноябрь не девятый месяц?

Значение ноября происходит от Novem , латинское слово, обозначающее девять. Старый римский календарь начинался с марта, поэтому ноябрь был девятым месяцем. Когда римский сенат изменил календарь в 153 г. до н. э., новый год начался в январе, а ноябрь стал одиннадцатым месяцем.

Переход на летнее время заканчивается в США и Канаде

Переход на летнее время (DST) заканчивается в США, Канаде и на севере Мексики. В первое воскресенье ноября часы будут переведены на 1 час назад с 02:00 (2:00) до 01:00 (1:00) в большинстве штатов США. В Европе и многих других странах часы переводятся на октябрь.

Астрономические события в ноябре 2023 года

Метеорный поток Леонид: Падающие звезды Леониды видны с 6 по 30 ноября. Пик потока обычно приходится на ночь 17 ноября и раннее утро 18 ноября с до 15 метеоров в час.

Луна бобра: Ноябрьское полнолуние традиционно называют Луной бобра, в честь бобров, которые строят свои плотины в это время года.

Посмотреть все события Космического Календаря

Падающие звезды Леонида, кажется, исходят от знака зодиака Лев или Лев.

История ноября

В старом римском календаре ноябрь назывался mensis november , девятый месяц, потому что римский календарь начинался с марта. Первоначально в ноябре было 29 дней.

В 154 г. до н.э. восстание вынудило римский сенат изменить начало гражданского года с марта на 1 января. Благодаря этой реформе ноябрь официально стал одиннадцатым месяцем в 153 году до нашей эры.

В 46 году до н. э. Юлий Цезарь ввел новую календарную систему — юлианский календарь. Он добавил десять дней к году и ввел високосный день. В новом юлианском календаре ноябрь был увеличен до 30 дней.

Исторические события ноября

3 ноября 1957 года: Советский Союз отправил на орбиту первое живое существо: собаку Лайку . Лайка находилась на борту Спутника II , второго советского спутника, вышедшего на орбиту вокруг Земли — почти ровно через месяц после Спутника I 4 октября 19 года.57.

5 ноября 16:05: Британский солдат Гай Фокс пытался взорвать английскую палату лордов в Лондоне, чтобы свергнуть короля Якова I и восстановить католическую монархию. Он потерпел неудачу. 5 ноября — День Гая Фокса, который отмечается по всему Соединенному Королевству в память о пороховой измене.

Почтовая марка из Монголии с изображением Лайки, первого существа на орбите Земли.

© iStockphoto.com/fcdb

Камень ноября и цветы рождения

Согласно традиции, камнем рождения ноября является желтый топаз , символизирующий дружбу. Его родимым цветком является хризантема.

Зодиаки.

Восьмой месяц года

Август — последний месяц лета в северной половине мира. Он назван в честь первого римского императора Августа Цезаря.

Цветок рождения Августа — мак.

©bigstockphoto.com/Madlen

Август — восьмой месяц григорианского календаря, в нем 31 день. В северной половине мира август — последний месяц лета. В южной половине это последний месяц зимы.

Месяц Августа

Значение августа происходит из Древнего Рима: Август в переводе с латыни означает «почтенный» или «великий». Это был титул года, данный первому римскому императору , Гай Цезарь. В 8 г. до н. э. римский сенат решил назвать месяц в честь императора. Они выбрали старый римский месяц Секстилий и переименовали его в Август.

Интересные даты августа 2023 года

24 августа 2023 года:  Плутон понижен в должности, напоминание о дне в 2006 году, когда Международный астрономический союз объявил Плутон -й карликовой планетой вместо полноразмерной планеты. Этот день отмечается только на Земле.

26 августа 2023:  Полярный день заканчивается. В самом северном городе мира Ню-Олесунн в Норвегии подходит к концу длинный день. Очень длинный день — Солнце стоит над горизонтом с апреля. Это долгое время непрерывного солнечного света называется полярным днем. Солнце окончательно заходит около 26 августа и остается за горизонтом до февраля.

Астрономические события августа

Метеоры Персеиды: Метеорный поток Персеиды известен как один из самых активных и ярких метеорных потоков года. Обычно они активны с 17 июля по 24 августа. Как правило, они наиболее заметны между 9 часами ночи.0019 9 августа и 13 августа .

Осетровая луна: Августовское полнолуние известно как Осетровая луна, названная в честь огромной пресноводной рыбы, которую можно найти в большом количестве в августе. Поскольку август года является сезоном сбора урожая года в Северном полушарии, августовское полнолуние также называют Луной зерна, Луной фруктов и Луной ячменя.

Просмотреть все события Космического Календаря

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

©bigstockphoto.com/JohnDorton

История августа

В древнеримском календаре август изначально назывался mens sextilius , шестой месяц , потому что римский календарь начинался с марта. У Секстилиса был 31 день. Примерно в 700 году до нашей эры римский царь Нума Помпилий расширил календарь с десяти до двенадцати месяцев, введя январь и февраль. Sextilis был сокращен до 29 дней.

В 154 г. до н.э. восстание вынудило римский сенат изменить начало гражданского года с марта на 1 января. С этой реформой Секстилис официально стал 9-м.0019 восьмой месяц .

В 46 году до н. э. Юлий Цезарь ввел новую календарную систему — юлианский календарь. Он добавил десять дней к году и ввел високосный день. В новом юлианском календаре секстилис был увеличен до 31 дня.

В 8 году до н. э. римский сенат переименовал Секстилиса в честь первого римского императора, Августа Цезаря .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *