#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'