Изменение Python Pandas ежемесячно по сравнению с прошлым годом, если текущий месяц является неполнымPython

Программы на Python
Anonymous
Изменение Python Pandas ежемесячно по сравнению с прошлым годом, если текущий месяц является неполным

Сообщение Anonymous »

Я хочу рассчитать процентное изменение по сравнению с прошлым годом для данных на уровне месяца, принимая во внимание, что последний (текущий) период является неполным.
Об этом уже спрашивали: повторная выборка и расчет года за год. год с частичными данными, но я не могу понять полученный ответ.
Мой код следующий:

Код: Выделить всё

import pandas as pd
import numpy as np

np.random.seed(555)

# Create a sample dataframe
df_input = pd.DataFrame({
'order_date': pd.date_range(start='2022-01-01', end='2024-07-10'),
'customers': np.random.randint(0, 100, size=(922, )),
'orders': np.random.randint(0, 100, size=(922, ))
})

df = df_input.copy()
df.set_index('order_date',inplace=True)
df_monthly = df.resample('ME').sum()

print(df_monthly.tail())

customers  orders
order_date
202403           1358    1513
202404           1581    1419
202405           1584    1565
202406           1456    1652
202407            389     378

Теперь я рассчитываю процентное изменение за каждый месяц и добавляю его обратно в исходный набор данных:

Код: Выделить всё

yoy_change = df_monthly.pct_change(12).mul(100)

for column in df_monthly.columns:
df_monthly[f'{column}_pct_change'] = yoy_change[column]

customers  orders  customers_pct_change  orders_pct_change
order_date
202403           1358    1513             -6.215470         -13.095922
202404           1581    1419             -1.801242         -11.423221
202405           1584    1565             22.885958           3.232190
202406           1456    1652              7.772021          -6.508206
202407            389     378            -78.460687         -76.330620
Однако повторная выборка pandas суммирует неполный месяц с июля 2024 года (до 10-го числа) и сравнивает его с полным месяцем июля 2023 года прошлого года при расчете процентного изменения. В результате получается очень отрицательное число, хотя это не соответствует действительности (поскольку мы сравниваем полный месяц с неполным).
Например, количество клиентов за июль 2023 года. «до 10-го числа» было 513, поэтому годовой процент за июль 2024 года должен быть -24, а не -78.

Подробнее здесь: https://stackoverflow.com/questions/787 ... is-partial

Вернуться в «Python»