Я новичок в Pandas, и в качестве упражнения я перемещаю старый код/решения, чтобы учиться на нем. В этом случае я пытаюсь вычислить синтетический индекс цен на товары, который до этого был рассчитан в SQL.Расчет ежедневных агрегатов на пандах с пользовательской функцией
Это данные, которые я имею в dataframe:
id weight date price
0 1 0.002796 2005-11-15 0.998298
1 1 0.002796 2005-11-16 1.014242
2 1 0.002796 2005-11-17 1.016452
3 1 0.002796 2005-11-18 1.026396
4 1 0.002796 2005-11-19 1.026047
5 1 0.002796 2005-11-20 1.024285
6 1 0.002796 2005-11-21 1.018764
7 1 0.002796 2005-11-22 1.033175
8 1 0.002796 2005-11-23 1.058509
9 1 0.002796 2005-11-24 1.061231
10 1 0.002796 2005-11-25 1.058137
11 1 0.002796 2005-11-26 0.999380
12 1 0.002796 2005-11-27 0.990504
13 1 0.002796 2005-11-28 0.993764
14 1 0.002796 2005-11-29 0.978754
15 1 0.002796 2005-11-30 0.992070
... ... ... ... ...
4085 1 0.002796 2017-01-21 0.857420
4086 1 0.002796 2017-01-22 0.848195
4087 1 0.002796 2017-01-23 0.791784
4088 1 0.002796 2017-01-24 0.846603
4089 1 0.002796 2017-01-25 0.878104
4090 1 0.002796 2017-01-26 0.806651
4091 1 0.002796 2017-01-27 0.849316
4092 1 0.002796 2017-01-28 0.826550
4093 1 0.002796 2017-01-29 0.848651
4094 1 0.002796 2017-01-30 0.829643
4095 1 0.002796 2017-01-31 0.837094
4096 1 0.002796 2017-02-01 0.846572
4097 1 0.002796 2017-02-02 0.800163
4098 1 0.002796 2017-02-03 0.820356
4099 1 0.002796 2017-02-04 0.818924
4100 1 0.002796 2017-02-05 0.822157
4101 1 0.002796 2017-02-06 0.787123
4102 1 0.002796 2017-02-07 0.796264
4103 1 0.002796 2017-02-08 0.797241
4104 1 0.002796 2017-02-09 0.818499
4105 1 0.002796 2017-02-10 0.810928
Синтетический индекс рассчитывается ежедневно возвращается, будучи возврат в течение дня:
Rt = (Price_day/Price_day_before) - 1
Я читал о пандах, временных рядах и т. Д., Но я изо всех сил стараюсь понять конкретную операцию, чтобы выполнить здесь; это прокатка? Как получить данные для заданной даты и даты раньше?
Ничего себе, даже не знаю pct_change(). Документация не очень хороша в отношении точного расчета, но результаты согласуются с самой операцией. – mydaemon
Я даю вам лучший ответ, как только вы добавили shift(), это именно та операция, которую я имел в виду. Superb! – mydaemon
@mydaemon, рад, что я мог помочь :) – MaxU