Финансовый год – Определение финансового года в Pandas
Узнайте всё о фискальном году в Pandas! Библиотека Pandas делает получение информации о датах достаточно простым процессом — однако определение финансового года требует чуть больше усилий и не всегда интуитивно понятно. В этой статье я постараюсь объяснить этот процесс простым языком.
К концу этой статьи вы узнаете, как:
Использовать метод
.to_period()
из Pandas для преобразования дат в разные временные периоды,Использовать метод
.qyear()
из Pandas для расчёта годов на основе разных стартовых месяцев,Форматировать фискальные годы в Pandas различными способами.
Кратко говоря, можно написать:
df['Date'].dt.to_period('Q-MAR').dt.qyear.apply(lambda x: str(x-1) + "-" + str(x))
Содержание
Загрузка примера набора данных для работы с фискальным годом в Pandas
Начнём с загрузки набора данных, содержащего различные временные периоды. Мы импортируем библиотеку Pandas и выведем первые пять записей, чтобы понять, что представляет собой данные:
import pandas as pd
dates = {'Date': ['1/1/2021', '1/31/2021', '2/1/2021', '2/28/2021', '3/1/2021', '3/31/2021', '4/1/2021', '4/30/2021', '5/1/2021', '5/31/2021', '6/1/2021']}
df = pd.DataFrame(dates)
df['Date'] = pd.to_datetime(df['Date'])
print(df)
По умолчанию, мы можем получить доступ к календарному году с помощью аксессора .dt.year
. Давайте посмотрим, как это сделать — извлечём календарный год и поместим его в отдельный столбец. Создадим новый столбец с названием Year
и присвоим ему значение года:
df['Year'] = df['Date'].dt.year
print(df)
Ознакомьтесь с другими уроками Python на сайте datagy, включая наше полное руководство по оформлению таблиц в Pandas и подробный обзор сводных таблиц (Pivot Tables) в Pandas!
Pandas .to_period()
— преобразование дат в разные временные периоды
.to_period()
— преобразование дат в разные временные периодыБиблиотека Pandas позволяет легко преобразовывать данные типа дата и время в различные временные периоды. С помощью метода .to_period()
можно переводить значения дат в кварталы, месяцы, годы и другие периоды. Давайте рассмотрим это на примере.
Преобразуем значения дат в кварталы, считая первым месяцем года апрель (это означает, что мы будем использовать строку 'Q-MAR'
, где Q
обозначает квартал, а MAR
указывает, что финансовый год заканчивается в марте):
df['As Quarter'] = df['Date'].dt.to_period('Q-MAR')
print(df)
Мы создали новый столбец ("Quarter"
), который использует апрель в качестве первого месяца года и объединяет значения по кварталам, где период с апреля по июнь считается первым кварталом.
Pandas .qyear()
— расчёт годов на основе разных стартовых месяцев
.qyear()
— расчёт годов на основе разных стартовых месяцевТеперь, когда мы преобразовали данные с помощью метода .to_period()
, давайте извлечём только год. Может возникнуть желание воспользоваться аксессором .dt.year
, но в этом случае будет возвращаться календарный год. Вместо этого Pandas предоставляет удобный метод .qyear()
, который возвращает год на основе заданного начального квартала. Если бы мы не выполняли преобразование данных с помощью .to_period()
, результаты методов .year
и .qyear()
совпадали бы.
Рассмотрим это на примере:
df['Fiscal Year'] = df['As Quarter'].dt.qyear
print(df)
Обратите внимание, что мы можем записать всё это в одну строку, объединив методы:
df['Fiscal Year'] = df['Date'].dt.to_period('Q-MAR').dt.qyear
Форматирование фискального года в Pandas
По умолчанию Pandas извлекает только первый год фискального года. Если ваш фискальный год не совпадает с календарным (январь–декабрь), он всегда будет охватывать два календарных года. Для лучшей идентификации может быть полезно включить оба года в названии. Давайте создадим новый столбец, в котором годы будут отображаться в формате: 2021-2022:
df['Fiscal Year Range'] = df['Date'].dt.to_period('Q-APR').dt.qyear.apply(lambda x: str(x-1) + "-" + str(x))
print(df)
Заключение
В этой статье вы узнали, как рассчитывать пользовательские фискальные годы в Pandas с помощью преобразования временных рядов методом .to_period()
и извлечения года с помощью метода .qyear()
. Также вы научились форматировать годы в различные виды для удобства отображения.
Для получения дополнительной информации ознакомьтесь с официальной документацией по методам .to_period() и .qyear().
Дополнительные ресурсы
Чтобы узнать больше по смежным темам, ознакомьтесь со следующими материалами:
Last updated