Об этом уже спрашивали: повторная выборка и расчет года за год. год с частичными данными, но я не могу понять полученный ответ.
Мой код следующий:
Код: Выделить всё
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
Например, количество клиентов за июль 2023 года. «до 10-го числа» было 513, поэтому годовой процент за июль 2024 года должен быть -24, а не -78.
Подробнее здесь: https://stackoverflow.com/questions/787 ... is-partial