Pandas для вычисления pct_change при указанной частоте

#python #pandas #database

#python #pandas #База данных

Вопрос:

Я хотел бы рассчитать темпы роста за 1 год, 2, года, 3 года для еженедельного / ежедневного фрейма данных :

 start = '20100101'
end = '20201117'

df_ts = pd.DataFrame(index=pd.bdate_range(start=start, end=end, freq='D'))
df_ts['valeur1'] = range(1, df_ts.shape[0] 1)

df_ts['gr'] = 100*df_ts.pct_change(periods=1, freq='Y)
df_ts
 

Я подумал pct_change(periods=n, freq='Y') , что это хороший способ сделать это, но я получаю результат ошибки с этой простой датой.

Я должен подчеркнуть, что в моих данных у меня есть еженедельные / ежедневные данные, и я выполняю другие операции, поэтому мне нужно поместить это внутрь apply(lambda x: x.pct_change(periods=n, freq='Y') .

Есть предложения сделать это просто?

Ответ №1:

Вы присваиваете новый фрейм данных столбцу, потому что вы сделали .pct_change это для фрейма данных, а не для столбца. Попробуйте это:

 df_ts['gr'] = df_ts['valeur1'].pct_change(periods=1, freq='Y') 
 

Комментарии:

1. Он обеспечивает производительность календаря, но я бы хотел, чтобы темпы роста составляли 1 год (2 года …)

2. У меня получилось: freq=pd.DateOffset(years=1) вместо freq='Y'