trend_getter/metric_calculations.py (11 lines of code) (raw):

import pandas as pd def moving_average(series, window=28): return series.rolling(window=window).mean() def year_over_year(df, column, date_column="submission_date"): # Assume df has columns: "submission_date" (datetime), "x" df = df.copy() df[date_column] = pd.to_datetime(df[date_column]) # Create a copy with submission_date shifted 1 year df_shift = df.copy() df_shift[date_column] = df_shift[date_column] + pd.DateOffset(years=1) df_shift.rename(columns={column: f"{column}_last_year"}, inplace=True) # Merge original with shifted version df_merged = df.merge(df_shift, on=date_column, how="left") # Calculate YoY % change return (df_merged[column] / df_merged[f"{column}_last_year"]) - 1