.
А вы замечали, что пишите неэффективный\плохочитаемый (подставить любимое) код🤔
.
Нередко это связано с устоявшимися конструкциями, которые вы где-то увидели, набили на них руку или просто так было, когда вы изучали
pandas==0.23😎.
Одна из задач в ML создание новых признкаков, при изучении временных рядов часто используется такой признак как moving average. При добавлении его необходимо исключить лик целевой, тк текущее значение входит в окно.
.
Нередко встречается такой код:
df['ma'] = df['column'].shift().rolling().mean()Здесь
shift выполняет роль, исключающую текущее значение целевой (сдвигаем весь ряд на 1 позицию в будущее). В целом код понятен но перегружен дополнительным методом. Если заглянуть в доку к методу rolling то разработчики уже учли эту возможную проблему, а нам остается только воспользоваться:df['ma'] = df['column'].rolling(closed='left').mean()При такой опции
closed='left' - последнее значение в окне исключается из расчета, тем самым не будет создан лик целевой..
Исключили лишний метод, использовали встроенные аргументы - good work🤝
#code #pandas #refactor